1、背景
本文讨论的都是基于Flink On K8s场景下,该场景下存在几个特点,一是存在线上业务系统资源复用,二是调度节点存在"随机性",对现有的Flink Metrics采集及使用姿势提出了新的要求:
Flink任务自动扩缩容,智能诊断场景依赖Metrics指标进行加工分析处理,现有Prometheus存储方案不再适合。
既有的指标采集需要先落本地,再由nodeexporter或lancer导出到目标存储,强依赖于Local环境,线上业务系统资源环境差异较大,扩容等维护成本较高,资源隔离性不够好。
期望在Flink On K8s场景下,Flink Metrics指标采集,能够不依赖于基础环境,对扩缩容友好,,支持指标采集及分析数据存储统一,降低指标维护使用成本,对Flink Metrics指标采集方案进行调研
2、主动方式 MetricReport
2.1、PrometheusPushGatewayReporter方式(prometheus + pushgateway + grafana)
2.1.1、 原理架构图如下
image2022-3-17_16-47-57.png
2.1.2、 配置方式
将flink-metrics-prometheus-1.14.3.jar 包放入到flink安装目录/lib下
修改flink-conf.yaml配置文件,设置属性
Example configuration:
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: localhost
metrics.reporter.promgateway.port: 9091
metrics.reporter.promgateway.jobName: myJob
metrics.reporter.promgateway.randomJobNameSuffix: true
metrics.reporter.promgateway.deleteOnShutdown: false
metrics.reporter.promgateway.groupingKey: k1=v1;k2=v2
metrics.reporter.promgateway.interval: 60 SECONDS
2.2、PrometheusReporter方式(prometheus + grafana)
2.2.1、原理架构图如下
image2022-3-17_20-4-53.png
2.2.2、配置方式
将flink-metrics-prometheus-1.14.3.jar 包放入到flink安装目录/lib下
修改flink-conf.yaml配置文件,设置属性
Example configuration:
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
metrics.reporter.prom.port: 9250-9260
2.3、InfluxdbReporter方式
2.3..1、原理架构图如下
image2022-3-17_20-7-12.png
2.3.2、配置方式
将flink-metrics-influxdb-1.14.3.jar 包放入到flink安装目录/lib下
修改flink-conf.yaml配置文件,设置属性
Example configuration:
metrics.reporter.influxdb.factory.class: org.apache.flink.metrics.influxdb.InfluxdbReporterFactory
metrics.reporter.influxdb.scheme: http
metrics.reporter.influxdb.host: localhost
metrics.reporter.influxdb.port: 8086
metrics.reporter.influxdb.db: flink
metrics.reporter.influxdb.username: flink-metrics
metrics.reporter.influxdb.password: qwerty
metrics.reporter.influxdb.retentionPolicy: one_hour
metrics.reporter.influxdb.consistency: ANY
metrics.reporter.influxdb.connectTimeout: 60000
metrics.reporter.influxdb.writeTimeout: 60000
metrics.reporter.influxdb.interval: 60 SECONDS
image.png
2.4、JMXReporter方式
2.4.1、原理架构图如下
image2022-3-17_20-23-3.png
2.4.2、配置方式
将flink-metrics-jmx-1.14.3.jar 包放入到flink安装目录/lib下
修改flink-conf.yaml配置文件,设置属性
Example configuration:
metrics.reporter.jmx.factory.class: org.apache.flink.metrics.jmx.JMXReporterFactory
metrics.reporter.jmx.port: 9250-9260
2.5、Slf4jReporter方式
2.5.1、配置方式
将flink-metrics-slf4j-1.14.3.jar 包放入到flink安装目录/lib下
修改flink-conf.yaml配置文件,设置属性
Example configuration:
metrics.reporter.slf4j.factory.class: org.apache.flink.metrics.slf4j.Slf4jReporterFactory
metrics.reporter.slf4j.interval: 60 SECONDS
2.6、其它方式
GraphiteReporter、StatsDReporter、DatadogHttpReporter
3、自定义指标采集方式
3.1、自定义KafkaReporter
指标采集到Kafka后,将全量指标实时写入ClickHouse.
image2022-3-18_17-27-21.png
指标采集到Kafka后,将全量指标实时写入ClickHouse同时满足监控大盘需求及指标数据长期存储和二次加工分析,该方式优势指标数据源统一,任务大盘及告警
image2022-3-21_15-53-52.png
3.2、业界实践参考
image.png- Flink 运维体系在贝壳的实践:https://www.6aiq.com/article/1639778890438
image.png
网友评论