Flink 任务实时监控最佳实践(Prometheus + Grafana)打造企业级监控方案

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 我们都知道 Flink 任务是一个 7*24 小时不停运行的任务,所以对于任务的实时监控就显得尤为重要,因为任务运行的状态对于我们来说是一个黑盒,比如任务是否挂掉,是否存在反压,使用的内存,CPU 等情况我们是不知道的,虽然 Flink 的 UI 上面可以添加相关的 metrics 来查看,但是需要手动的一个一个添加,还是比较麻烦的,特别是在任务非常多的情况下.所以就需要有一种统一的监控方案来解决这个问题.Flink 本身提供了非常丰富的 Metric Reporters,比如 JMX InfluxDB Graphite Prometheus 等等,生产环境上用的比较多的是 InfluxDB

我们都知道 Flink 任务是一个 7*24 小时不停运行的任务,所以对于任务的实时监控就显得尤为重要,因为任务运行的状态对于我们来说是一个黑盒,比如任务是否挂掉,是否存在反压,使用的内存,CPU 等情况我们是不知道的,虽然 Flink 的 UI 上面可以添加相关的 metrics 来查看,但是需要手动的一个一个添加,还是比较麻烦的,特别是在任务非常多的情况下.所以就需要有一种统一的监控方案来解决这个问题.Flink 本身提供了非常丰富的 Metric Reporters,比如 JMX InfluxDB Graphite Prometheus 等等,生产环境上用的比较多的是 InfluxDB 和 Prometheus ,我这里选择的是 Prometheus 来上报 Flink 的 metrics 然后通过 Grafana 进行展示.


Grafana 可以说是为监控而生的,是一个颜值非常高的可视化工具.Grafana 支持比较多的数据源格式,比如 InfluxDB 、OpenTSDB Prometheus 等等,并且使用起来非常简单,那 Prometheus 和 Grafana 的结合会擦出怎样的火花呢?下面就一起来看下.


我们先来看一下 Prometheus 和 Grafana 结合的架构图,如下所示:



可以发现里面还需要一个组件 PushGateway ,这是因为 Prometheus 正常是从 Flink 任务拉取数据的,但是我们的 Metric Reporter 是像外部系统推送数据的,所以这两者是存在冲突的,所以就需要有一个中间组件,首先通过 Metric Reporter 把数据推送到 PushGateway ,Prometheus 再从PushGateway 拉取数据,最后展示在 Grafana 上.


下载

下载我这里就省略了,自己到官网下载就行,因为我的机器上之前已经安装过这些组件了,为了演示,所以这次直接下载的最新版本. prometheus-2.28.1 pushgateway-1.4.1 grafana-8.0.6.


安装配置

Prometheus 配置


tar -zxvf prometheus-2.28.1.linux-amd64.tar.gz
mv prometheus-2.28.1.linux-amd64 prometheus-2.28.1
cd prometheus-2.28.1
vi prometheus.yml


主要添加 PushGateway 和 PushGateway 的监控配置,这里还修改了 prometheus 抓取数据的间隔,可以不用改.


# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['storm1:9090']
        labels:
          instance: 'prometheus'
  - job_name: 'pushgateway'
    static_configs:
      - targets: ['storm1:9091']
        labels:
          instance: 'pushgateway'


启动


nohup ./prometheus --config.file=prometheus.yml --storage.tsdb.retention=1d &
nohup ./pushgateway &


然后访问一下 prometheus 的 http://storm1:9090/targets 页面,如下图所示如果 state 显示为 up 就说明配置成功了.



image-20210808163920891


pushgateway 不需要任何配置,直接启动即可,访问 http://storm1:9091/# 可以看到已经收到了 Flink Metric Reporter 推送过来的数据.



image-20210808174025532


Grafana 安装配置


tar -zxvf grafana-8.0.6.linux-amd64.tar.gz
cd grafana-8.0.6
nohup ./grafana-server start &

Grafana 可以不做任何配置直接拉起来就行,然后直接访问 http://storm1:3000/ 页面如下所示:



image-20210808164707918


然后直接添加 prometheus 数据源,配置也非常简单,如下图所示:



image-20210808164838805


只需要添加 prometheus 的地址即可,其他的选项默认就行,然后点击 save & test 按钮,出现 Data source is working 说明数据源添加成功了.然后就可以开始创建 DashBoard 了.


flink-conf.yaml 配置


metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: storm1
metrics.reporter.promgateway.port: 9091
metrics.reporter.promgateway.jobName: flink
metrics.reporter.promgateway.randomJobNameSuffix: true
metrics.reporter.promgateway.deleteOnShutdown: true


提交 Flink 任务

flink run -d -yqu flink -m yarn-cluster \
-nm test10 \
-p 4 \
-yD metrics.reporter.promgateway.groupingKey="jobname=test10" \
-yD metrics.reporter.promgateway.jobName=test10 \
-c flink.streaming.FlinkStreamingFlatMapDemoNew \
/home/jason/bigdata/jar/flink-1.13.0-1.0-SNAPSHOT.jar


添加 DashBoard



image-20210808173546499


这个是新版本的页面和之前版本的布局还是有很大的不同,不过配置上和之前的大同小异,先选择数据源为 Prometheus 然后输入想要展示的 metrics 会自动提示出完成的 metrics 名称选择确认后页面上方会显示出监控数据,如上图所示.


在这个 DashBoard 的设置里面添加两个变量,一个是数据源,一个是任务的名称,然后就可以根据 Flink 的任务名来切换到不同的任务.



image-20210808175338177


DashBoard 的配置虽然简单,但是需要配置的指标非常多,还是非常累人的,我就不再一一展示了,配置的方式都是一样的.我这里主要分为下面几大类,大家可以根据自己的需要去配置.



image-20210808175756903


完整的展示如下:



image-20210808175854480


相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
相关文章
|
3月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
367 3
|
2月前
|
存储 数据采集 Prometheus
Grafana Prometheus Altermanager 监控系统
Grafana、Prometheus 和 Alertmanager 是一套强大的开源监控系统组合。Prometheus 负责数据采集与存储,Alertmanager 处理告警通知,Grafana 提供可视化界面。本文简要介绍了这套系统的安装配置流程,包括各组件的下载、安装、服务配置及开机自启设置,并提供了访问地址和重启命令。适用于希望快速搭建高效监控平台的用户。
119 20
|
2月前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana监控Linux主机
通过本文的步骤,我们成功地在 Linux 主机上使用 Prometheus 和 Grafana 进行了监控配置。具体包括安装 Prometheus 和 Node Exporter,配置 Grafana 数据源,并导入预设的仪表盘来展示监控数据。通过这种方式,可以轻松实现对 Linux 主机的系统指标监控,帮助及时发现和处理潜在问题。
151 7
|
2月前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
236 3
|
2月前
|
Prometheus 监控 前端开发
Grafana 安装配置教程,让你的 Prometheus 监控数据变得更美观
《Grafana安装配置教程,让你的Prometheus监控数据变得更美观》简介: Grafana是一个开源的度量分析与可视化工具,支持多种数据源(如Prometheus),提供丰富的可视化功能和警报机制。本文详细介绍了Grafana的安装、汉化方法及模板使用,帮助用户轻松创建美观、灵活的数据面板,并实现数据的协作与共享。通过Docker镜像、配置文件修改或替换前端页面等方式实现汉化,让用户更便捷地使用中文界面。此外,还提供了导入JSON格式模板的具体步骤,方便快速搭建仪表盘。
70 2
|
2月前
|
Prometheus Cloud Native Linux
Prometheus+Grafana新手友好教程:从零开始搭建轻松掌握强大的警报系统
本文介绍了使用 Prometheus 和 Grafana 实现邮件报警的方案,包括三种主要方法:1) 使用 Prometheus 的 Alertmanager 组件;2) 使用 Grafana 的内置告警通知功能;3) 使用第三方告警组件如 OneAlert。同时,详细描述了环境准备、Grafana 安装配置及预警设置的步骤,确保用户能够成功搭建并测试邮件报警功能。通过这些配置,用户可以在系统或应用出现异常时及时收到邮件通知,保障系统的稳定运行。
125 1
|
3月前
|
数据采集 Prometheus 监控
监控堆外第三方监控工具Grafana
监控堆外第三方监控工具Grafana
72 5
|
3月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
351 0
|
6月前
|
Prometheus 监控 Cloud Native
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
|
2月前
|
Prometheus 监控 Cloud Native
无痛入门Prometheus:一个强大的开源监控和告警系统,如何快速安装和使用?
Prometheus 是一个完全开源的系统监控和告警工具包,受 Google 内部 BorgMon 系统启发,自2012年由前 Google 工程师在 SoundCloud 开发以来,已被众多公司采用。它拥有活跃的开发者和用户社区,现为独立开源项目,并于2016年加入云原生计算基金会(CNCF)。Prometheus 的主要特点包括多维数据模型、灵活的查询语言 PromQL、不依赖分布式存储、通过 HTTP 拉取时间序列数据等。其架构简单且功能强大,支持多种图形和仪表盘展示模式。安装和使用 Prometheus 非常简便,可以通过 Docker 快速部署,并与 Grafana 等可
195 2