向pushgateway报告flink度量时每个作业的作业名不同

uqzxnwby  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(740)

我正在使用flink1.9.1和prometheuspushgateway来报告我的度量。报告度量的jobname是在flink-conf.yaml文件中定义的,该文件使集群上运行的所有作业的jobname相同,但我希望为每个运行的作业报告不同的jobname。为此,我尝试在执行流之前重写作业内的配置值:

  1. Configuration conf = GlobalConfiguration.loadConfiguration();
  2. conf.setString(
  3. "metrics.reporter.promgateway.jobName",
  4. conf.getString("metrics.reporter.promgateway.jobName", "") + "-" + pipeline
  5. );
  6. final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
  7. env.getConfig().setGlobalJobParameters(conf);

什么时候 pipeline 是字符串变量。
在本地运行作业时,它起作用。但是现在我在高可用性模式下运行flink,它不再工作了:(代码中我覆盖的配置被忽略,只使用集群的flink-conf.yaml文件中的值)。
那么如何更改每个作业的作业名呢?如果我做不到,有没有办法在报告指标时设置额外的标签?因为我还没有看到这样的选择。
谢谢:)

g6ll5ycj

g6ll5ycj1#

您可以使用以下步骤来实现这一点:
通过 jobName 作为命令参数,例如: --jobName MyJobName 设置全局参数:

  1. public static void main(String[] args) throws Exception {
  2. final ParameterTool command = ParameterTool.fromArgs(args);
  3. String jobName = command.getRequired("jobName");
  4. StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
  5. Configuration globalConfiguration = new Configuration();
  6. globalConfiguration.setString("jobName", jobName);
  7. env.getConfig().setGlobalJobParameters(globalConfiguration);
  8. }

使用它:

  1. ParameterTool parameters = (ParameterTool) getRuntimeContext().getExecutionConfig().getGlobalJobParameters();
  2. parameters.getRequired("jobName");

以下链接也可能对您有所帮助:https://ci.apache.org/projects/flink/flink-docs-stable/dev/best_practices.html#parsing-命令行参数并在flink应用程序中传递它们

展开查看全部

相关问题