我试图向普罗米修斯公开Flink的内置度量,但不知何故,普罗米修斯无法识别目标——JMX和普罗米修斯报告器。
prometheus.yml
中定义的抓取如下:
scrape_configs:
- job_name: node
static_configs:
- targets: ['localhost:9100']
- job_name: 'kafka-server'
static_configs:
- targets: ['localhost:7071']
- job_name: 'flink-jmx'
static_configs:
- targets: ['localhost:8789']
- job_name: 'flink-prom'
static_configs:
- targets: ['localhost:9249']
我的flink-conf.yml
有以下行:
#metrics.reporters: jmx, prom
metrics.reporters: jmx, prometheus
#metrics.reporter.jmx.factory.class: org.apache.flink.metrics.jmx.JMXReporterFactory
metrics.reporter.jmx.class: org.apache.flink.metrics.jmx.JMXReporter
metrics.reporter.jmx.port: 8789
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
metrics.reporter.prom.port: 9249
然而,当运行WordCount 时,两个Flink目标都已关闭
IntelliJ中的- 作为罐子:
java -jar target/flink-word-count.jar --input src/main/resources/loremipsum.txt
- 作为Flink作业:
flink run target/flink-word-count.jar --input src/main/resources/loremipsum.txt
根据Flink文档,我不需要JMX的任何额外依赖项,也不需要为Prometheus报告程序提供flink/lib/
中提供的flink-metrics-prometheus-1.10.0.jar
的副本。
我做错了什么?缺少什么?
我相信,这个特定的作业会很快完成。一旦你完成了设置,可能就没有什么有趣的指标了,因为作业运行的时间不够长,无法显示任何内容。
使用小型集群(如java -jar ...
(运行时,不会加载flink-conf.yaml
文件(除非您在工作中做了一些非常特殊的事情来加载它(。还要注意,此文件通常具有.yaml
扩展名;我不确定如果使用.yml
是否有效。
您可以检查点动管理器和任务管理器日志,以确保正在加载报告器。
FWIW,上一次我这样做时,我使用了这个设置,这样我就可以从多个进程中抓取:
# flink-conf.yaml
metrics.reporters: prom
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
metrics.reporter.prom.port: 9250-9260
# prometheus.yml
scrape_configs:
- job_name: 'flink'
static_configs:
- targets: ['localhost:9250', 'localhost:9251']