1、背景
本文討論的都是基于Flink On K8s場景下,該場景下存在幾個特點(diǎn)忆畅,一是存在線上業(yè)務(wù)系統(tǒng)資源復(fù)用,二是調(diào)度節(jié)點(diǎn)存在"隨機(jī)性"尸执,對現(xiàn)有的Flink Metrics采集及使用姿勢提出了新的要求:
Flink任務(wù)自動擴(kuò)縮容家凯,智能診斷場景依賴Metrics指標(biāo)進(jìn)行加工分析處理缓醋,現(xiàn)有Prometheus存儲方案不再適合。
既有的指標(biāo)采集需要先落本地绊诲,再由nodeexporter或lancer導(dǎo)出到目標(biāo)存儲送粱,強(qiáng)依賴于Local環(huán)境,線上業(yè)務(wù)系統(tǒng)資源環(huán)境差異較大掂之,擴(kuò)容等維護(hù)成本較高抗俄,資源隔離性不夠好。
期望在Flink On K8s場景下世舰,F(xiàn)link Metrics指標(biāo)采集动雹,能夠不依賴于基礎(chǔ)環(huán)境,對擴(kuò)縮容友好跟压,胰蝠,支持指標(biāo)采集及分析數(shù)據(jù)存儲統(tǒng)一,降低指標(biāo)維護(hù)使用成本震蒋,對Flink Metrics指標(biāo)采集方案進(jìn)行調(diào)研
2姊氓、主動方式 MetricReport
2.1、PrometheusPushGatewayReporter方式(prometheus + pushgateway + grafana)
2.1.1喷好、 原理架構(gòu)圖如下
2.1.2翔横、 配置方式
將flink-metrics-prometheus-1.14.3.jar 包放入到flink安裝目錄/lib下
修改flink-conf.yaml配置文件,設(shè)置屬性
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禾唁、原理架構(gòu)圖如下
2.2.2、配置方式
將flink-metrics-prometheus-1.14.3.jar 包放入到flink安裝目錄/lib下
修改flink-conf.yaml配置文件无切,設(shè)置屬性
Example configuration:
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
metrics.reporter.prom.port: 9250-9260
2.3荡短、InfluxdbReporter方式
2.3..1、原理架構(gòu)圖如下
2.3.2哆键、配置方式
將flink-metrics-influxdb-1.14.3.jar 包放入到flink安裝目錄/lib下
修改flink-conf.yaml配置文件掘托,設(shè)置屬性
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
2.4、JMXReporter方式
2.4.1籍嘹、原理架構(gòu)圖如下
2.4.2闪盔、配置方式
將flink-metrics-jmx-1.14.3.jar 包放入到flink安裝目錄/lib下
修改flink-conf.yaml配置文件,設(shè)置屬性
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配置文件,設(shè)置屬性
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油讯、自定義指標(biāo)采集方式
3.1掰盘、自定義KafkaReporter
指標(biāo)采集到Kafka后涛目,將全量指標(biāo)實(shí)時寫入ClickHouse.
指標(biāo)采集到Kafka后,將全量指標(biāo)實(shí)時寫入ClickHouse同時滿足監(jiān)控大盤需求及指標(biāo)數(shù)據(jù)長期存儲和二次加工分析靠抑,該方式優(yōu)勢指標(biāo)數(shù)據(jù)源統(tǒng)一名惩,任務(wù)大盤及告警
3.2、業(yè)界實(shí)踐參考
- Flink 運(yùn)維體系在貝殼的實(shí)踐:https://www.6aiq.com/article/1639778890438