Prometheus Pushgateway 监控 Flink 问题

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

Prometheus Pushgateway 监控 Flink 问题

李佳宸
hi,大家好

我在使用Prometheus Pushgateway 监控
Flink时,metrics.reporter.promgateway.deleteOnShutdown:
true 这一配置失效,
Flink集群关闭时,pushgateway中仍然存有metrics数据
reporter相关的全部配置为:

metrics.reporter.promgateway.class:
org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter

metrics.reporter.promgateway.host: localhost

metrics.reporter.promgateway.port: 9091

metrics.reporter.promgateway.jobName: myJob

metrics.reporter.promgateway.randomJobNameSuffix: *true*

metrics.reporter.promgateway.deleteOnShutdown: *true*


Flink版本为1.9.1, pushgateway版本0.9 和1.2都尝试过,一样的问题。


不知道这是不是bug,

有谁有成功的案例么?

谢谢
Reply | Threaded
Open this post in threaded view
|

Re:Prometheus Pushgateway 监控 Flink 问题

yanggang_it_job
HI 佳宸
跟你介绍下这几个参数的目的
metrics.reporter.promgateway.deleteOnShutdown:这个参数用于控制,当通过stop或者cancel下线一个任务的时候,会把pushgateway内存中缓存的指标进行清理,如果通过yarn kill的方式就不会清除
metrics.reporter.promgateway.randomJobNameSuffix:这个参数用于控制在我们定义的jobName后面加一个随机后缀以区别相同任务的不同container的metric_name,否则会出现覆盖写,也就是你描述的那样,指标不全的问题。原理是:当一个任务启动之后至少会有两个container(一个JM和一个TM),每个container都会往pushgateway推送指标,如果不设置这个参数为true的话,会用同一个jobName进行指标推送,那么此时后一个推送的指标就会前一个指标,就会产生一会是JM的指标,一会是TM的指标,所以要加上这个参数,那么每个container的就会不一样,这样就不会覆盖。

祝好
杨纲

















在 2020-05-12 18:25:10,"李佳宸" <[hidden email]> 写道:

>hi,大家好
>
>我在使用Prometheus Pushgateway 监控
>Flink时,metrics.reporter.promgateway.deleteOnShutdown:
>true 这一配置失效,
>Flink集群关闭时,pushgateway中仍然存有metrics数据
>reporter相关的全部配置为:
>
>metrics.reporter.promgateway.class:
>org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
>
>metrics.reporter.promgateway.host: localhost
>
>metrics.reporter.promgateway.port: 9091
>
>metrics.reporter.promgateway.jobName: myJob
>
>metrics.reporter.promgateway.randomJobNameSuffix: *true*
>
>metrics.reporter.promgateway.deleteOnShutdown: *true*
>
>
>Flink版本为1.9.1, pushgateway版本0.9 和1.2都尝试过,一样的问题。
>
>
>不知道这是不是bug,
>
>有谁有成功的案例么?
>
>谢谢
Reply | Threaded
Open this post in threaded view
|

回复:Re:Prometheus Pushgateway 监控 Flink 问题

972684638
谢谢杨纲的解答。
我之前是简单粗暴地把flink-metrcs-prometheus包中的推送到数据到pushgateway的方式改成了post,重新打包,这样jm和tm的数据就不会互相覆盖了。看来还是只知其一,不知其二。
看到你对metrics.reporter.promgateway.randomJobNameSuffix的解释,才明白了原因。



---原始邮件---
发件人: "yanggang_it_job"<[hidden email]&gt;
发送时间: 2020年5月12日(星期二) 晚上10:10
收件人: "user-zh"<[hidden email]&gt;;
主题: Re:Prometheus Pushgateway 监控 Flink 问题


HI 佳宸
跟你介绍下这几个参数的目的
metrics.reporter.promgateway.deleteOnShutdown:这个参数用于控制,当通过stop或者cancel下线一个任务的时候,会把pushgateway内存中缓存的指标进行清理,如果通过yarn kill的方式就不会清除
metrics.reporter.promgateway.randomJobNameSuffix:这个参数用于控制在我们定义的jobName后面加一个随机后缀以区别相同任务的不同container的metric_name,否则会出现覆盖写,也就是你描述的那样,指标不全的问题。原理是:当一个任务启动之后至少会有两个container(一个JM和一个TM),每个container都会往pushgateway推送指标,如果不设置这个参数为true的话,会用同一个jobName进行指标推送,那么此时后一个推送的指标就会前一个指标,就会产生一会是JM的指标,一会是TM的指标,所以要加上这个参数,那么每个container的就会不一样,这样就不会覆盖。

祝好
杨纲

















在 2020-05-12 18:25:10,"李佳宸" <[hidden email]&gt; 写道:
&gt;hi,大家好
&gt;
&gt;我在使用Prometheus Pushgateway 监控
&gt;Flink时,metrics.reporter.promgateway.deleteOnShutdown:
&gt;true 这一配置失效,
&gt;Flink集群关闭时,pushgateway中仍然存有metrics数据
&gt;reporter相关的全部配置为:
&gt;
&gt;metrics.reporter.promgateway.class:
&gt;org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
&gt;
&gt;metrics.reporter.promgateway.host: localhost
&gt;
&gt;metrics.reporter.promgateway.port: 9091
&gt;
&gt;metrics.reporter.promgateway.jobName: myJob
&gt;
&gt;metrics.reporter.promgateway.randomJobNameSuffix: *true*
&gt;
&gt;metrics.reporter.promgateway.deleteOnShutdown: *true*
&gt;
&gt;
&gt;Flink版本为1.9.1, pushgateway版本0.9 和1.2都尝试过,一样的问题。
&gt;
&gt;
&gt;不知道这是不是bug,
&gt;
&gt;有谁有成功的案例么?
&gt;
&gt;谢谢
Reply | Threaded
Open this post in threaded view
|

Re: Prometheus Pushgateway 监控 Flink 问题

李佳宸
In reply to this post by yanggang_it_job
谢谢您的解答!
意思是说deleteOnShutdown其实只是针对flink作业吗?
因为我想实现的是集群stop后,pushgateway里面和flink有关的所有数据会被清除。
原因是开启randomjobnamesuffix后,集群重启会有新的一组jobname,而之前的信息仍然残留在pushgateway里面(数值停止更新),prometheus就会仍然持续产生之前信息的时间序列数据。
这一块有解决的方法吗?还是只能重启pushgateway?

我理解源码这里好像是会根据jobname删除,那应该是集群维度么?

public class PrometheusPushGatewayReporter extends
AbstractPrometheusReporter implements Scheduled {

   private PushGateway pushGateway;
   private String jobName;
   private boolean deleteOnShutdown;

   @Override
   public void open(MetricConfig config) {
      super.open(config);

      String host = config.getString(HOST.key(), HOST.defaultValue());
      int port = config.getInteger(PORT.key(), PORT.defaultValue());
      String configuredJobName = config.getString(JOB_NAME.key(),
JOB_NAME.defaultValue());
      boolean randomSuffix =
config.getBoolean(RANDOM_JOB_NAME_SUFFIX.key(),
RANDOM_JOB_NAME_SUFFIX.defaultValue());
      deleteOnShutdown = config.getBoolean(DELETE_ON_SHUTDOWN.key(),
DELETE_ON_SHUTDOWN.defaultValue());

      if (host == null || host.isEmpty() || port < 1) {
         throw new IllegalArgumentException("Invalid host/port
configuration. Host: " + host + " Port: " + port);
      }

      if (randomSuffix) {
         this.jobName = configuredJobName + new AbstractID();
      } else {
         this.jobName = configuredJobName;
      }

      pushGateway = new PushGateway(host + ':' + port);
      log.info("Configured PrometheusPushGatewayReporter with
{host:{}, port:{}, jobName: {}, randomJobNameSuffix:{},
deleteOnShutdown:{}}", host, port, jobName, randomSuffix,
deleteOnShutdown);
   }

   @Override
   public void report() {
      try {
         pushGateway.push(CollectorRegistry.defaultRegistry, jobName);
      } catch (Exception e) {
         log.warn("Failed to push metrics to PushGateway with jobName
{}.", jobName, e);
      }
   }

   @Override
   public void close() {
      if (deleteOnShutdown && pushGateway != null) {
         try {
            pushGateway.delete(jobName);

         } catch (IOException e) {
            log.warn("Failed to delete metrics from PushGateway with
jobName {}.", jobName, e);
         }
      }
      super.close();
   }
}


yanggang_it_job <[hidden email]> 于2020年5月12日周二 下午10:10写道:

> HI 佳宸
> 跟你介绍下这几个参数的目的
> metrics.reporter.promgateway.deleteOnShutdown:这个参数用于控制,当通过stop或者cancel下线一个任务的时候,会把pushgateway内存中缓存的指标进行清理,如果通过yarn
> kill的方式就不会清除
>
> metrics.reporter.promgateway.randomJobNameSuffix:这个参数用于控制在我们定义的jobName后面加一个随机后缀以区别相同任务的不同container的metric_name,否则会出现覆盖写,也就是你描述的那样,指标不全的问题。原理是:当一个任务启动之后至少会有两个container(一个JM和一个TM),每个container都会往pushgateway推送指标,如果不设置这个参数为true的话,会用同一个jobName进行指标推送,那么此时后一个推送的指标就会前一个指标,就会产生一会是JM的指标,一会是TM的指标,所以要加上这个参数,那么每个container的就会不一样,这样就不会覆盖。
>
> 祝好
> 杨纲
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> 在 2020-05-12 18:25:10,"李佳宸" <[hidden email]> 写道:
> >hi,大家好
> >
> >我在使用Prometheus Pushgateway 监控
> >Flink时,metrics.reporter.promgateway.deleteOnShutdown:
> >true 这一配置失效,
> >Flink集群关闭时,pushgateway中仍然存有metrics数据
> >reporter相关的全部配置为:
> >
> >metrics.reporter.promgateway.class:
> >org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
> >
> >metrics.reporter.promgateway.host: localhost
> >
> >metrics.reporter.promgateway.port: 9091
> >
> >metrics.reporter.promgateway.jobName: myJob
> >
> >metrics.reporter.promgateway.randomJobNameSuffix: *true*
> >
> >metrics.reporter.promgateway.deleteOnShutdown: *true*
> >
> >
> >Flink版本为1.9.1, pushgateway版本0.9 和1.2都尝试过,一样的问题。
> >
> >
> >不知道这是不是bug,
> >
> >有谁有成功的案例么?
> >
> >谢谢
>