谢谢您的解答!
意思是说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 <[email protected]> 于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,"李佳宸" <[email protected]> 写道:
> >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,
> >
> >有谁有成功的案例么?
> >
> >谢谢
>

回复