簡體   English   中英

向 PushGateway 報告 Flink 指標時,每個作業的作業名稱不同

[英]Different jobName per Job when reporting Flink metrics to PushGateway

我使用 Flink 1.9.1 和 PrometheusPushGateway 來報告我的指標。 報告指標的作業名稱在 flink-conf.yaml 文件中定義,這使得在集群上運行的所有作業的作業名稱都相同,但我希望為每個正在運行的作業報告不同的作業名稱。 為此,我嘗試在執行 Stream 之前覆蓋作業中的配置值:

Configuration conf = GlobalConfiguration.loadConfiguration();
    conf.setString(
            "metrics.reporter.promgateway.jobName",
            conf.getString("metrics.reporter.promgateway.jobName", "") + "-" + pipeline
    );
    final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.getConfig().setGlobalJobParameters(conf);

pipeline是一個字符串變量時。

在本地運行作業時,它起作用了。 但是現在我在高可用性模式下運行 flink 並且它不再工作了:(我在代碼中覆蓋的配置被忽略,只使用集群的 flink-conf.yaml 文件中的值。

那么如何更改每個作業的作業名稱? 如果我不能,有沒有辦法在報告指標時設置額外的標簽? 因為我還沒有看到一個選項。

謝謝 :)

您可以使用以下步驟來實現此目的:

  1. jobName作為命令參數傳遞,例如:-- --jobName MyJobName

  2. 設置全局參數:

public static void main(String[] args) throws Exception {
    final ParameterTool command = ParameterTool.fromArgs(args);
    String jobName = command.getRequired("jobName");

    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    Configuration globalConfiguration = new Configuration();
    globalConfiguration.setString("jobName", jobName);
    env.getConfig().setGlobalJobParameters(globalConfiguration);

}
  1. 用它:
ParameterTool parameters = (ParameterTool) getRuntimeContext().getExecutionConfig().getGlobalJobParameters();
parameters.getRequired("jobName");

這是一個也可以幫助您的鏈接: https : //ci.apache.org/projects/flink/flink-docs-stable/dev/best_practices.html#parsing-command-line-arguments-and-passing-them-在你的 flink 應用程序中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM