docker-compose.yml flink metrics pushgateway

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 上报方式: PrometheusPrometheusPushGateway

它们主要的区别是:

  • 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

`docker-compose-CN.yml` 文件是一个特定的配置文件,用于使用 Docker Compose 工具来定义和运行多容器 Docker 应用程序。通常,这个文件是用 YAML (YAML Ain't Markup Language) 格式书写的,它是一种易于阅读的数据序列化格式。 在 `docker-compose-CN.yml` 文件中,你可以声明一系列的服务,每个服务都是一组运行相同镜像的容器。你可以为这些服务指定应用的配置、网络、卷等。这样的配置使得开发者和运维人员可以以声明式的方式快速部署、启动和停止应用程序的多个服务。 一个基本的 `docker-compose-CN.yml` 文件结构通常包括几个主要部分: - `version`: 指定 Docker Compose 文件的格式版本,它对应于不同的 Docker Compose 的功能和API。 - `services`: 定义要运行的服务,每个服务可以使用 `image` 或 `build` 关键字指定使用的镜像或构建的上下文。 - `networks`: 定义应用的网络,可以创建新网络或使用已存在的网络。 - `volumes`: 定义数据卷,可以用来持久化数据或在服务之间共享数据。 下面是一个简单的 `docker-compose-CN.yml` 文件示例: ```yaml version: "3.8" # 使用Docker Compose的3.8版本 services: web: image: nginx:latest ports: - "80:80" networks: - webnet app: build: . command: python app.py networks: - webnet networks: webnet: ``` 这个示例中定义了两个服务:`web` 服务使用了 `nginx` 镜像,并将容器的80端口映射到主机的80端口;`app` 服务通过 `build` 指令构建本地的 Dockerfile,运行 Python 应用,并同样连接到 `webnet` 网络。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云满笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值