回复:Flink监控: promethues获取到有的metrics没有包含flink 对应的job_name或者job_id

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

回复:Flink监控: promethues获取到有的metrics没有包含flink 对应的job_name或者job_id

972684638
metrics.reporter.promgateway.jobName这个配置,可以通过java代码来设置,任务启动时,将它设成job id即可;
另外,把suffix那个配置去掉;

接下来,就根据exported_job去统计即可;



---原始邮件---
发件人: "俞剑波"<[hidden email]&gt;
发送时间: 2020年4月30日(星期四) 晚上7:19
收件人: "user-zh"<[hidden email]&gt;;
主题: Re: Flink监控: promethues获取到有的metrics没有包含flink 对应的job_name或者job_id


再说一下我的详细情况,集群的是*per job*模式,指标是都采集到了,然后说明一下我的配置和遇到的情况:
1.在flink-conf.yaml是这么配置的
metrics.reporter.promgateway.class:
org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: 10.20.0.200
metrics.reporter.promgateway.port: 9091
metrics.reporter.promgateway.jobName: FlinkMonitor
metrics.reporter.promgateway.randomJobNameSuffix: true
metrics.reporter.promgateway.deleteOnShutdown: false

2.在promethues端都能够获取的到参数的值,但是获取不到flink对应的job_Name或者job_id的信息:
拿*flink_jobmanager_Status_JVM_Memory_Direct_MemoryUsed* 这个参数举例获取到的值:
{exported_job="FlinkMonitor00c46b7355bca443825de2b01ce2d3a2",host="hadoop224",instance="
10.20.0.200:9091",job="push_metrics"}
再拿另外一个参数*flink_jobmanager_job_numberOfCompletedCheckpoints*
举例:它就有jobname,和job_id
{exported_job="FlinkMonitor0ac46e79cf5d6fc2990db1574c2b0bf2",host="hadoop212",instance="
10.20.0.200:9091",job="push_metrics",*job_id*
="30f4075c798d6f3bd73c2bfe7bc54cf4",*job_name*="tj_history_log_itcourse"}

经过发现得出一个结论,凡是“*flink_jobmanager_Status_*”开头或者“*flink_jobmanager_Status_*
”发过来的都没有job_name和job_id

3.看过一个帖子也是per-job模式,它采用的influxdb,是去改源码:
https://blog.csdn.net/u013516966/article/details/103171484

4.希望有遇到这样问题并解决的大佬小伙伴能够帮个忙,说一下怎么解决。

俞剑波 <[hidden email]&gt; 于2020年4月30日周四 下午7:13写道:

&gt; 我添加了这个参数配置发现这个只是解决了标签冲突,还是没有这个job_name:
&gt;
&gt; 不加参数:flink_jobmanager_Status_JVM_Memory_Heap_Used{exported_job="myJobYJB4eea972f622437b738875b3e8e811a56",host="localhost",instance="pushgateway",job="pushgateway"}
&gt; 加了参数:
&gt; flink_jobmanager_Status_JVM_Memory_Heap_Used{host="localhost",job="myJobYJB4eea972f622437b738875b3e8e811a56"}
&gt;
&gt; 972684638 <[hidden email]&gt; 于2020年4月30日周四 下午5:37写道:
&gt;
&gt;&gt; 你看看是不是因为没有没配honor_labels: true
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; ---原始邮件---
&gt;&gt; 发件人: "俞剑波"<[hidden email]&amp;gt;
&gt;&gt; 发送时间: 2020年4月30日(星期四) 下午4:32
&gt;&gt; 收件人: "user-zh"<[hidden email]&amp;gt;;
&gt;&gt; 主题: Re: Flink监控: promethues获取到有的metrics没有包含flink 对应的job_name或者job_id
&gt;&gt;
&gt;&gt;
&gt;&gt; 是的,我使用了!请问大佬有解决办法吗,真的卡很多天了,希望能够解决一下,非常感谢
&gt;&gt;
&gt;&gt; 972684638 <[hidden email]&amp;gt; 于2020年4月30日周四 下午4:18写道:
&gt;&gt;
&gt;&gt; &amp;gt; 我想知道,你是否使用了pushgateway?
&gt;&gt; &amp;gt;
&gt;&gt; &amp;gt;
&gt;&gt; &amp;gt;
&gt;&gt; &amp;gt; ---原始邮件---
&gt;&gt; &amp;gt; 发件人: "俞剑波"<[hidden email]&amp;amp;gt;
&gt;&gt; &amp;gt; 发送时间: 2020年4月30日(星期四) 下午4:01
&gt;&gt; &amp;gt; 收件人: "user-zh"<[hidden email]&amp;amp;gt;;
&gt;&gt; &amp;gt; 主题: Flink监控: promethues获取到有的metrics没有包含flink 对应的job_name或者job_id
&gt;&gt; &amp;gt;
&gt;&gt; &amp;gt;
&gt;&gt; &amp;gt; flink集群是per
&gt;&gt; &amp;gt;
&gt;&gt; &amp;gt;
&gt;&gt; job模式,所以当有多个并行度,任务就会有多个taskmanager在多个机器上面。采用flink-metrics-prometheus的方式会遇到一个问题,就是收集taskmanager的jvm信息时,promethues返回的记录里面没有flink对应的job_name或者job_id,导致不能将数据汇总起来,请问各位有遇到这个问题吗?是怎么解决的?非常感谢!
&gt;
&gt;
Reply | Threaded
Open this post in threaded view
|

Re: Flink监控: promethues获取到有的metrics没有包含flink 对应的job_name或者job_id

俞剑波
请问可以怎么根据java代码去设置这个东西,希望大佬能教一下,非常感谢!!!

972684638 <[hidden email]> 于2020年4月30日周四 下午7:28写道:

> metrics.reporter.promgateway.jobName这个配置,可以通过java代码来设置,任务启动时,将它设成job id即可;
> 另外,把suffix那个配置去掉;
>
> 接下来,就根据exported_job去统计即可;
>
>
>
> ---原始邮件---
> 发件人: "俞剑波"<[hidden email]&gt;
> 发送时间: 2020年4月30日(星期四) 晚上7:19
> 收件人: "user-zh"<[hidden email]&gt;;
> 主题: Re: Flink监控: promethues获取到有的metrics没有包含flink 对应的job_name或者job_id
>
>
> 再说一下我的详细情况,集群的是*per job*模式,指标是都采集到了,然后说明一下我的配置和遇到的情况:
> 1.在flink-conf.yaml是这么配置的
> metrics.reporter.promgateway.class:
> org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
> metrics.reporter.promgateway.host: 10.20.0.200
> metrics.reporter.promgateway.port: 9091
> metrics.reporter.promgateway.jobName: FlinkMonitor
> metrics.reporter.promgateway.randomJobNameSuffix: true
> metrics.reporter.promgateway.deleteOnShutdown: false
>
> 2.在promethues端都能够获取的到参数的值,但是获取不到flink对应的job_Name或者job_id的信息:
> 拿*flink_jobmanager_Status_JVM_Memory_Direct_MemoryUsed* 这个参数举例获取到的值:
>
> {exported_job="FlinkMonitor00c46b7355bca443825de2b01ce2d3a2",host="hadoop224",instance="
> 10.20.0.200:9091",job="push_metrics"}
> 再拿另外一个参数*flink_jobmanager_job_numberOfCompletedCheckpoints*
> 举例:它就有jobname,和job_id
>
> {exported_job="FlinkMonitor0ac46e79cf5d6fc2990db1574c2b0bf2",host="hadoop212",instance="
> 10.20.0.200:9091",job="push_metrics",*job_id*
> ="30f4075c798d6f3bd73c2bfe7bc54cf4",*job_name*="tj_history_log_itcourse"}
>
> 经过发现得出一个结论,凡是“*flink_jobmanager_Status_*”开头或者“*flink_jobmanager_Status_*
> ”发过来的都没有job_name和job_id
>
> 3.看过一个帖子也是per-job模式,它采用的influxdb,是去改源码:
> https://blog.csdn.net/u013516966/article/details/103171484
>
> 4.希望有遇到这样问题并解决的大佬小伙伴能够帮个忙,说一下怎么解决。
>
> 俞剑波 <[hidden email]&gt; 于2020年4月30日周四 下午7:13写道:
>
> &gt; 我添加了这个参数配置发现这个只是解决了标签冲突,还是没有这个job_name:
> &gt;
> &gt;
> 不加参数:flink_jobmanager_Status_JVM_Memory_Heap_Used{exported_job="myJobYJB4eea972f622437b738875b3e8e811a56",host="localhost",instance="pushgateway",job="pushgateway"}
> &gt; 加了参数:
> &gt;
> flink_jobmanager_Status_JVM_Memory_Heap_Used{host="localhost",job="myJobYJB4eea972f622437b738875b3e8e811a56"}
> &gt;
> &gt; 972684638 <[hidden email]&gt; 于2020年4月30日周四 下午5:37写道:
> &gt;
> &gt;&gt; 你看看是不是因为没有没配honor_labels: true
> &gt;&gt;
> &gt;&gt;
> &gt;&gt;
> &gt;&gt; ---原始邮件---
> &gt;&gt; 发件人: "俞剑波"<[hidden email]&amp;gt;
> &gt;&gt; 发送时间: 2020年4月30日(星期四) 下午4:32
> &gt;&gt; 收件人: "user-zh"<[hidden email]&amp;gt;;
> &gt;&gt; 主题: Re: Flink监控: promethues获取到有的metrics没有包含flink
> 对应的job_name或者job_id
> &gt;&gt;
> &gt;&gt;
> &gt;&gt; 是的,我使用了!请问大佬有解决办法吗,真的卡很多天了,希望能够解决一下,非常感谢
> &gt;&gt;
> &gt;&gt; 972684638 <[hidden email]&amp;gt; 于2020年4月30日周四 下午4:18写道:
> &gt;&gt;
> &gt;&gt; &amp;gt; 我想知道,你是否使用了pushgateway?
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt; ---原始邮件---
> &gt;&gt; &amp;gt; 发件人: "俞剑波"<[hidden email]&amp;amp;gt;
> &gt;&gt; &amp;gt; 发送时间: 2020年4月30日(星期四) 下午4:01
> &gt;&gt; &amp;gt; 收件人: "user-zh"<[hidden email]&amp;amp;gt;;
> &gt;&gt; &amp;gt; 主题: Flink监控: promethues获取到有的metrics没有包含flink
> 对应的job_name或者job_id
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt; flink集群是per
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt;
> &gt;&gt;
> job模式,所以当有多个并行度,任务就会有多个taskmanager在多个机器上面。采用flink-metrics-prometheus的方式会遇到一个问题,就是收集taskmanager的jvm信息时,promethues返回的记录里面没有flink对应的job_name或者job_id,导致不能将数据汇总起来,请问各位有遇到这个问题吗?是怎么解决的?非常感谢!
> &gt;
> &gt;
Reply | Threaded
Open this post in threaded view
|

Re: Flink监控: promethues获取到有的metrics没有包含flink 对应的job_name或者job_id

Yun Tang
Hi

flink_jobmanager_Status 这种metrics属于jobmanager层级的metrics,这种metrics与job level的metrics,从概念上来说是不一样的。因为Flink是支持一个JM里面同时运行多个作业的,但是JM的JVM实际上只有一个,所以如果给JM的metrics增加其从属的job_id 的tag是不符合语义的。当然,如果一个host上有多个JM,现在Flink不太好区分,目前只有TM级别的tm_id可以区分不同的TM。
如果非要加上job_name 或者 job_id 才能识别的话,只能按照你分享的文章中修改reporter的代码。不过我觉得相比于增加job_name 这种tag,我更建议增加 cluster_name 这种tag。

祝好
唐云

________________________________
From: 俞剑波 <[hidden email]>
Sent: Thursday, April 30, 2020 22:00
To: [hidden email] <[hidden email]>
Subject: Re: Flink监控: promethues获取到有的metrics没有包含flink 对应的job_name或者job_id

请问可以怎么根据java代码去设置这个东西,希望大佬能教一下,非常感谢!!!

972684638 <[hidden email]> 于2020年4月30日周四 下午7:28写道:

> metrics.reporter.promgateway.jobName这个配置,可以通过java代码来设置,任务启动时,将它设成job id即可;
> 另外,把suffix那个配置去掉;
>
> 接下来,就根据exported_job去统计即可;
>
>
>
> ---原始邮件---
> 发件人: "俞剑波"<[hidden email]&gt;
> 发送时间: 2020年4月30日(星期四) 晚上7:19
> 收件人: "user-zh"<[hidden email]&gt;;
> 主题: Re: Flink监控: promethues获取到有的metrics没有包含flink 对应的job_name或者job_id
>
>
> 再说一下我的详细情况,集群的是*per job*模式,指标是都采集到了,然后说明一下我的配置和遇到的情况:
> 1.在flink-conf.yaml是这么配置的
> metrics.reporter.promgateway.class:
> org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
> metrics.reporter.promgateway.host: 10.20.0.200
> metrics.reporter.promgateway.port: 9091
> metrics.reporter.promgateway.jobName: FlinkMonitor
> metrics.reporter.promgateway.randomJobNameSuffix: true
> metrics.reporter.promgateway.deleteOnShutdown: false
>
> 2.在promethues端都能够获取的到参数的值,但是获取不到flink对应的job_Name或者job_id的信息:
> 拿*flink_jobmanager_Status_JVM_Memory_Direct_MemoryUsed* 这个参数举例获取到的值:
>
> {exported_job="FlinkMonitor00c46b7355bca443825de2b01ce2d3a2",host="hadoop224",instance="
> 10.20.0.200:9091",job="push_metrics"}
> 再拿另外一个参数*flink_jobmanager_job_numberOfCompletedCheckpoints*
> 举例:它就有jobname,和job_id
>
> {exported_job="FlinkMonitor0ac46e79cf5d6fc2990db1574c2b0bf2",host="hadoop212",instance="
> 10.20.0.200:9091",job="push_metrics",*job_id*
> ="30f4075c798d6f3bd73c2bfe7bc54cf4",*job_name*="tj_history_log_itcourse"}
>
> 经过发现得出一个结论,凡是“*flink_jobmanager_Status_*”开头或者“*flink_jobmanager_Status_*
> ”发过来的都没有job_name和job_id
>
> 3.看过一个帖子也是per-job模式,它采用的influxdb,是去改源码:
> https://blog.csdn.net/u013516966/article/details/103171484
>
> 4.希望有遇到这样问题并解决的大佬小伙伴能够帮个忙,说一下怎么解决。
>
> 俞剑波 <[hidden email]&gt; 于2020年4月30日周四 下午7:13写道:
>
> &gt; 我添加了这个参数配置发现这个只是解决了标签冲突,还是没有这个job_name:
> &gt;
> &gt;
> 不加参数:flink_jobmanager_Status_JVM_Memory_Heap_Used{exported_job="myJobYJB4eea972f622437b738875b3e8e811a56",host="localhost",instance="pushgateway",job="pushgateway"}
> &gt; 加了参数:
> &gt;
> flink_jobmanager_Status_JVM_Memory_Heap_Used{host="localhost",job="myJobYJB4eea972f622437b738875b3e8e811a56"}
> &gt;
> &gt; 972684638 <[hidden email]&gt; 于2020年4月30日周四 下午5:37写道:
> &gt;
> &gt;&gt; 你看看是不是因为没有没配honor_labels: true
> &gt;&gt;
> &gt;&gt;
> &gt;&gt;
> &gt;&gt; ---原始邮件---
> &gt;&gt; 发件人: "俞剑波"<[hidden email]&amp;gt;
> &gt;&gt; 发送时间: 2020年4月30日(星期四) 下午4:32
> &gt;&gt; 收件人: "user-zh"<[hidden email]&amp;gt;;
> &gt;&gt; 主题: Re: Flink监控: promethues获取到有的metrics没有包含flink
> 对应的job_name或者job_id
> &gt;&gt;
> &gt;&gt;
> &gt;&gt; 是的,我使用了!请问大佬有解决办法吗,真的卡很多天了,希望能够解决一下,非常感谢
> &gt;&gt;
> &gt;&gt; 972684638 <[hidden email]&amp;gt; 于2020年4月30日周四 下午4:18写道:
> &gt;&gt;
> &gt;&gt; &amp;gt; 我想知道,你是否使用了pushgateway?
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt; ---原始邮件---
> &gt;&gt; &amp;gt; 发件人: "俞剑波"<[hidden email]&amp;amp;gt;
> &gt;&gt; &amp;gt; 发送时间: 2020年4月30日(星期四) 下午4:01
> &gt;&gt; &amp;gt; 收件人: "user-zh"<[hidden email]&amp;amp;gt;;
> &gt;&gt; &amp;gt; 主题: Flink监控: promethues获取到有的metrics没有包含flink
> 对应的job_name或者job_id
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt; flink集群是per
> &gt;&gt; &amp;gt;
> &gt;&gt; &amp;gt;
> &gt;&gt;
> job模式,所以当有多个并行度,任务就会有多个taskmanager在多个机器上面。采用flink-metrics-prometheus的方式会遇到一个问题,就是收集taskmanager的jvm信息时,promethues返回的记录里面没有flink对应的job_name或者job_id,导致不能将数据汇总起来,请问各位有遇到这个问题吗?是怎么解决的?非常感谢!
> &gt;
> &gt;