Flink提供了監控指標(Metrics)來幫助您分析作業。如果已有指標不滿足業務需要,您可以自定義監控指標,并支持將監控指標上報到其他渠道。本文為您介紹自定義配置監控指標,以及如何將監控指標上報到自建Prometheus、日志服務SLS、Kafka或自建平臺,以及多渠道上報。
注意事項
您可以將指標僅上報至自建Prometheus、日志服務SLS或Kafka,也可以進行多渠道采集上報。
自定義監控指標采集
僅ARMS支持自定義指標采集。
您可以直接在控制臺自定義監控指標采集。
頁面目標作業的監控告警頁簽進行指標查看。如果當前指標不滿足您的業務需要,您可以配置自定義監控指標,詳情請參見自定義監控指標上報渠道
上報到自建Prometheus
您需要在網絡連通的情況下,先在Flink開發控制臺目標作業部署詳情頁簽的運行參數配置下的其他配置中配置如下代碼,并修改自建Prometheus相關參數值。配置方法詳情請參見控制臺操作
metrics.reporters: promgatewayappmgr
metrics.reporter.promgatewayappmgr.groupingKey: 'deploymentName={{deploymentName}};deploymentId={{deploymentId}};jobId={{jobId}}'
metrics.reporter.promgatewayappmgr.jobName: '{{deploymentName}}'
metrics.reporter.promgatewayappmgr.factory.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporterFactory
metrics.reporter.promgatewayappmgr.host: 您的pushgateway host
metrics.reporter.promgatewayappmgr.port: 您的pushgateway port
以上代碼中,pushgateway host和pushgateway port需要替換為您實際的值。deploymentName、deploymentId和jobId系統會自動進行替換。
Flink和自建的Prometheus之間的網絡連通要求如下:
上報到日志服務SLS
您需要在網絡連通的情況下,先在Flink開發控制臺目標作業部署詳情頁簽的運行參數配置下的其他配置中配置如下代碼,并修改SLS相關參數。配置方法詳情請參見控制臺操作
metrics.reporters: sls
metrics.reporter.sls.factory.class: org.apache.flink.metrics.sls.SLSReporterFactory
metrics.reporter.sls.project: 您的project
metrics.reporter.sls.logStore: 您的logStore
metrics.reporter.sls.endPoint: 您的endPoint
metrics.reporter.sls.accessId: 您的accessId
metrics.reporter.sls.accessKey: 您的accessKey
metrics.reporter.sls.extraTags: deploymentId={{ deploymentId }};deploymentName={{ deploymentName}};namespace={{ namespace }}
以上代碼中,您需要修改SLS相關參數,不需要修改deploymentId、deploymentName和namespace,系統會自動進行替換。Access信息詳情請參見如何查看AccessKey ID和AccessKey Secret信息?
上報到Kafka
您需要在網絡連通的情況下,先在Flink開發控制臺目標作業部署詳情頁簽的運行參數配置下的其他配置中配置如下代碼,并修改Kafka相關參數。配置方法詳情請參見控制臺操作
metrics.reporters: monitor
metrics.reporter.monitor.factory.class: org.apache.flink.metrics.monitor.KafkaReporterFactory
metrics.reporter.monitor.kafka.bootstrap.servers: 您的servers
metrics.reporter.monitor.topicName: 您的topicName
metrics.reporter.monitor._FLINK_CLUSTER_NAME: '{{ deploymentName }}'
metrics.reporter.monitor._JOB_NAME: '{{ deploymentName }}'
metrics.reporter.monitor._NAMESPACE_NAME: '{{ namespace }}'
以上代碼中,您需要修改自建Kafka相關參數,不需要修改deploymentName和namespace,系統會自動進行替換。
上報到多渠道
通過ARMS API上報到自建平臺
如果您開通工作空間時選擇了Prometheus監控服務,您可以通過ARMS API的方式獲取Flink的Metrics后,將Metrics集成在您自己的平臺上。此時,您可以在自建平臺進行指標查看的同時,在實時計算Flink版上仍然可以查看指標曲線以及使用告警配置能力。
ARMS API詳情請參見API概覽。Operator相關的Metric詳情,請參見Operator Metrics。
上報到Flink控制臺和其他渠道
如果您需要上報到其他渠道進行指標查看的同時,在實時計算Flink版上也需要查看指標曲線以及使用告警配置能力,您可以進行多渠道上報配置,但會增加額外的多渠道采集成本。
例如,同時將指標展示在Flink開發控制臺和日志服務SLS上,先在Flink開發控制臺目標作業部署詳情頁簽的運行參數配置下的其他配置中配置如下代碼,并修改SLS相關參數。
metrics.reporters: jmx,promappmgr,sls
metrics.reporter.sls.factory.class: org.apache.flink.metrics.sls.SLSReporterFactory
metrics.reporter.sls.project: 您的project
metrics.reporter.sls.logStore: 您的logStore
metrics.reporter.sls.endPoint: 您的endPoint
metrics.reporter.sls.accessId: 您的accessId
metrics.reporter.sls.accessKey: 您的accessKey
metrics.reporter.sls.extraTags: deploymentId={{ deploymentId }};deploymentName={{ deploymentName}};namespace={{ namespace }}
metrics.reporters配置項中包含jmx,promappmgr
時,您可以在Flink開發控制臺上查看指標。其他配置參數詳情請參見上報到日志服務SLS。
上報到Flink控制臺外的多個渠道
上報到Flink控制臺外的其他多個渠道后,Flink開發控制臺不顯示監控指標,您需要在對應平臺進行監控指標查看,詳情請參見注意事項。
例如,同時將指標上報至日志服務SLS和Kafka上,您可以在Flink開發控制臺目標作業部署詳情頁簽的運行參數中配置如下代碼:
metrics.reporters: sls,monitor
metrics.reporter.sls.factory.class: org.apache.flink.metrics.sls.SLSReporterFactory
metrics.reporter.sls.project: 您的project
metrics.reporter.sls.logStore: 您的logStore
metrics.reporter.sls.endPoint: 您的endPoint
metrics.reporter.sls.accessId: 您的accessId
metrics.reporter.sls.accessKey: 您的accessKey
metrics.reporter.sls.extraTags: deploymentId={{ deploymentId }};deploymentName={{ deploymentName}};namespace={{ namespace }}
metrics.reporter.monitor.factory.class: org.apache.flink.metrics.monitor.KafkaReporterFactory
metrics.reporter.monitor.kafka.bootstrap.servers: 您的servers
metrics.reporter.monitor.topicName: 您的topicName
metrics.reporter.monitor._FLINK_CLUSTER_NAME: '{{ deploymentName }}'
metrics.reporter.monitor._JOB_NAME: '{{ deploymentName }}'
metrics.reporter.monitor._NAMESPACE_NAME: '{{ namespace }}'
配置參數詳情請參見上報到日志服務SLS和上報到Kafka。