[英]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 文件中的值。
那么如何更改每個作業的作業名稱? 如果我不能,有沒有辦法在報告指標時設置額外的標簽? 因為我還沒有看到一個選項。
謝謝 :)
您可以使用以下步驟來實現此目的:
將jobName
作為命令參數傳遞,例如:-- --jobName MyJobName
設置全局參數:
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);
}
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.