基本上,我想监视故障队列,如果计数增加阈值,我想创建一个警报。
1)队列可以不止一个。
2)警告:我想将数据发送到Prometheus,我将从那里读取并在Alerta中显示。
我很困惑,因为似乎有很多方法,但我不知道什么是正确或最佳方法。我遵循了这个https://community.hortonworks.com/questions/172092/monitoring-nifi-back-pressure-threshold-and-trigge.html 对于适用于单个队列的队列监视,但仍然保留Prometheus部分。
第二,我阅读了Nifi中的 ReportingTasks ,它们可以执行类似的操作并报告矩阵。例如SiteToSiteStatusReportingTask
我不确定如本文所述选择哪种方法来选择ReportingTask,创建自定义ReportingTask或常规的NIfi Workflow。
其次,如何将数据发送到Prometheus。一些PostProcessor还是报表任务或自定义处理器等?
您将如何解决这个问题,什么是好的方法?
答案 0 :(得分:1)
Prometheus通常通过定期抓取其他应用程序/服务来工作以获取指标。受监视的应用程序(通常是Web服务)公开了HTTP端点,该端点以Prometheus格式返回指标。
当直接检测应用程序以使Prometheus无法抓取时,可以使用Prometheus Pushgateway。另请参见best practices documentation。
因此,您可以选择几种方法。我建议探索的一种可行方法是:
NiFi ReportingTask > ??? > Pushgateway > Prometheus
???
是您的自定义实现,可将写入NiFi的ReportingTask接口的指标桥接到Pushgateway中。这可能只是提供桥的自定义ReportingTask实现,也可能是一系列较小的步骤,例如:
ReportingTask > file on disk > Pushgateway > ...
ReportingTask > JMX > Pushgateway > ...
我知道NiFi社区中的其他人已经(或正在积极地)研究同样的功能。我建议您看看:
另一种方法是实现NiFi扩展程序,该扩展程序提供ReportingTask的自定义实现,并且还运行网络服务器,公开Prometheus无需使用Pushgateway即可直接抓取的端口/端点。 PrometheusReportingTask
将收集写入ReportingTask接口的度量,并使用Prometheus Java客户端库将其映射到Prometheus数据模型。 PrometheusReportingTask
还将提供一个抓取的终端,它将内存中的普罗米修斯度量标准转储为普罗米修斯文本连线格式。您可以查看Prometheus抓取目标的各种开源实现,例如Actuator Prometheus Endpoint,它将Prometheus与Micrometer Prometheus Meter Registry集成在一起。
答案 1 :(得分:0)
Prometheus报告任务已在Apache Nifi 1.10(2019年11月4日)中提供