这里写目录标题
1. docker-compose.yml flink metrics pushgateway
1.1. 说明
jobmanager 和 taskmanager 分别向 pushgateway 发送 metrics 数据,pushgateway 接收并对外暴露供抓取。
jobmanager 需要报告 flink_jobmanager 的数据,同时 taskmanager 需要报告 flink_taskmanager 的数据,所以 jobmanager 和 taskmanager 都要配置 reporter。
理解上面这些很重要。
1.2. 扩展说明
目前 Flink 官方提供两种 metrics 上报方式: Prometheus 和 PrometheusPushGateway。
它们主要的区别是:
- PrometheusPushGateway 方式是把集群所有的 metrics 统一汇报给 pushgateway,所以需要额外安装 pushgateway
- Prometheus 方式需要集群每个节点暴露一个唯一端口,不需要额外安装其它软件,但需要 N 个可用端口,配置略微复杂
1.2.1. PrometheusPushGateway 方式(推荐)
启动 pushgateway: nohup ./pushgateway &
(此命令仅供参考,具体命令根据实际环境可能有所不同)
配置 Flink 的配置文件 conf/flink-conf.yaml
示例:
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter # 固定这个值,不能改
metrics.reporter.promgateway.host: localhost # promgateway 的 IP 地址
metrics.reporter.promgateway.port: 9091 # promgateway 的监听端口
metrics.reporter.promgateway.interval: 15 SECONDS # 采集间隔
metrics.reporter.promgateway.groupingKey: k1=v1;k2=v2
# 以下是可选参数
# metrics.reporter.promgateway.jobName: myJob
# metrics.reporter.promgateway.randomJobNameSuffix: true
# metrics.reporter.promgateway.deleteOnShutdown: false
启动 Flink: ./bin/start-cluster.sh
(此命令仅供参考,具体命令根据实际环境可能有所不同)
1.2.2. Prometheus 方式
配置 Flink 的配置文件 conf/flink-conf.yaml
示例:
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
metrics.reporter.prom.port: 9250-9260 # 各个节点的端口区间,根据节点数量有所不同,一个端口对应一个节点
启动 Flink: ./bin/start-cluster.sh
(此命令仅供参考,具体命令根据实际环境可能有所不同)
1.3. tree
[root@localhost flink]# tree
.
|-- docker-compose.yml
|-- restart_flink.sh
1 directory, 3 files
1.4. docker-compose.yml
# https://onlineyamltools.com/prettify-yaml
# docker network create flink-network
version: '2.2'
services:
jobmanager:
container_name: jobmanager
image: 'flink:latest'
ports:
- '8081:8081'
depends_on:
- pushgateway
command: jobmanager
volumes:
- '/mnt/hgfs/share/docker-composes/flink/scripts:/tmp/scripts'
environment:
- >
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
metrics.reporter.promgateway.class:
org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter #固定这个值,不能改
metrics.reporter.promgateway.host: pushgateway # promgateway 的 IP 地址
metrics.reporter.promgateway.port: 9091 # promgateway 的监听端口
metrics.reporter.promgateway.interval: 5 SECONDS # 采集间隔
metrics.reporter.promgateway.groupingKey: k1=v1;k2=v2
taskmanager:
container_name: taskmanager
image: 'flink:latest'
depends_on:
- jobmanager
- pushgateway
command: taskmanager
scale: 1
environment:
- >
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 2
metrics.reporter.promgateway.class:
org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter #固定这个值,不能改
metrics.reporter.promgateway.host: pushgateway # promgateway 的 IP 地址
metrics.reporter.promgateway.port: 9091 # promgateway 的监听端口
metrics.reporter.promgateway.interval: 5 SECONDS # 采集间隔
metrics.reporter.promgateway.groupingKey: k1=v1;k2=v2
pushgateway:
container_name: pushgateway
image: 'bitnami/pushgateway:latest'
ports:
- '9091:9091'
networks:
default:
external:
name: flink-network
1.5. restart_flink.sh
#/bin/sh
docker stop pushgateway
docker stop taskmanager
docker stop jobmanager
docker rm pushgateway
docker rm taskmanager
docker rm jobmanager
docker-compose up -d
docker ps -a