Java 向PushGateway报告Flink度量时每个作业的不同作业名

Java 向PushGateway报告Flink度量时每个作业的不同作业名,java,apache-flink,prometheus,metrics,Java,Apache Flink,Prometheus,Metrics,我正在使用Flink 1.9.1和PrometheusPushGateway来报告我的指标。 报告度量的jobName在flink-conf.yaml文件中定义,该文件使集群上运行的所有作业的jobName相同,但我希望为每个运行的作业报告不同的jobName。 为此,我尝试在执行流之前覆盖作业中的配置值: Configuration=GlobalConfiguration.loadConfiguration(); conf.setString( “metrics.reporter.promga

我正在使用Flink 1.9.1和PrometheusPushGateway来报告我的指标。 报告度量的jobName在flink-conf.yaml文件中定义,该文件使集群上运行的所有作业的jobName相同,但我希望为每个运行的作业报告不同的jobName。 为此,我尝试在执行流之前覆盖作业中的配置值:

Configuration=GlobalConfiguration.loadConfiguration();
conf.setString(
“metrics.reporter.promgateway.jobName”,
conf.getString(“metrics.reporter.promgateway.jobName”,”)+“-”+管道
);
最终StreamExecutionEnvironment env=StreamExecutionEnvironment.getExecutionEnvironment();
env.getConfig().setGlobalJobParameters(conf);
管道
是字符串变量时

在本地运行作业时,它起作用。但是现在我在高可用性模式下运行flink,它不再工作了:(代码中我覆盖的配置被忽略,只使用集群的flink-conf.yaml文件中的值)

那么,我如何才能更改每个作业的作业名?如果我不能,有没有办法在报告指标时设置其他标签?因为我还没有看到这样的选项


谢谢:)

您可以使用以下步骤来实现此目的:

  • jobName
    作为命令参数传递,如:
    --jobName MyJobName

  • 设置全局参数:

  • publicstaticvoidmain(字符串[]args)引发异常{
    final ParameterTool命令=ParameterTool.fromArgs(args);
    字符串jobName=command.getRequired(“jobName”);
    StreamExecutionEnvironment env=StreamExecutionEnvironment.getExecutionEnvironment();
    配置全局配置=新配置();
    globalConfiguration.setString(“jobName”,jobName);
    env.getConfig().setGlobalJobParameters(globalConfiguration);
    }
    
  • 使用它:
  • ParameterTool参数=(ParameterTool)getRuntimeContext().getExecutionConfig().getGlobalJobParameters();
    参数。getRequired(“jobName”);
    
    这里有一个链接也可能对您有所帮助:

    这和我做的有什么不同?我不是那个使用参数
    metrics.reporter.promgateway.jobName
    的人。这是编写的PrometheusPushGatewayReporter的
    open
    函数。