Flink提供了監控指標(Metrics)來協助您分析作業。您可以直接在Realtime Compute開發控制台作業營運頁面的資料曲線頁簽進行指標查看,也可以選擇將監控指標上報到其他渠道。本文為您介紹如何將監控指標上報到自建Prometheus、Log ServiceSLS、Kafka或自建平台,以及多渠道上報。
注意事項
您可以將指標僅上報至自建Prometheus、Log ServiceSLS或Kafka,也可以進行多渠道採集上報。
自訂監控指標上報渠道
上報到自建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之間的網路連通要求如下:
如果自建的Prometheus和Flink工作空間是相同的VPC,則需要確認Prometheus安全性群組等配置允許Flink網段訪問。
如果自建的Prometheus和Flink工作空間是不同的VPC,但自建的Prometheus有公網地址,則需要Flink配置公網訪問,詳情請參見Realtime ComputeFlink版如何訪問公網?
如果自建的Prometheus和Flink工作空間是不同的VPC,但自建的Prometheus只有VPC的地址,則需要打通兩個VPC,詳情請參見如何訪問跨VPC的其他服務?
上報到Log ServiceSLS
您需要在網路連通的情況下,先在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整合在您自己的平台上。此時,您可以在自建平台進行指標查看的同時,在Realtime ComputeFlink版上仍然可以查看指標曲線以及使用警示配置能力。
ARMS API詳情請參見API概覽。Operator相關的Metric詳情,請參見Operator Metrics。
上報到Flink控制台和其他渠道
如果您需要上報到其他渠道進行指標查看的同時,在Realtime ComputeFlink版上也需要查看指標曲線以及使用警示配置能力,您可以進行多渠道上報配置,但會增加額外的多渠道採集成本。
例如,同時將指標展示在Flink開發控制台和Log ServiceSLS上,先在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開發控制台上查看指標。其他配置參數詳情請參見上報到Log ServiceSLS。
上報到Flink控制台外的多個渠道
上報到Flink控制台外的其他多個渠道後,Flink開發控制台不顯示監控指標,您需要在對應平台進行監控指標查看,詳情請參見注意事項。
例如,同時將指標上報至Log ServiceSLS和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 }}'
配置參數詳情請參見上報到Log ServiceSLS和上報到Kafka。