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。