大数据集群监控配置操作指导(三)Flink监控开启jmx

芒果2年前技术文章2493


官网的关于 flnk+prometheus的文章
https://flink.apache.org/features/2019/03/11/prometheus-monitoring.html
prometheus 和 pushgateway 都是同一个网站下载:
https://prometheus.io/download/
利用 PrometheusReporter 获取监控数据
导包
要使用该 reporter 的话,需要将 opt 目录下的 flink-metrics-prometheus-1.9.0.jar 依赖放到 lib 目录下
cp opt/flink-metrics-prometheus_2.12-1.13.6.jar lib/
可以配置的参数有:
port:该参数为可选项,Prometheus 监听的端口,默认是 9249,和上面使用 JMXReporter 一样,如果是在一台服务器上既运行了 JobManager,又运行了 TaskManager,则使用端口范围,比如 9249-9259。
filterLabelValueCharacters:该参数为可选项,表示指定是否过滤标签值字符,如果开启,则删除所有不匹配 [a-zA-Z0-9:_] 的字符,否则不会删除任何字符。
除了上面两个可选参数,另外一个参数是必须要在 flink-conf.yaml 中配置的,那就是 metrics reporter class。比如像下面这样配置:
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
利用 PrometheusPushGatewayReporter 获取监控数据
PushGateway 是 Prometheus 生态中一个重要工具,使用它的原因主要是:
Prometheus 采用 pull 模式,可能由于 Prometheus 和其他 target 对象不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。
在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。
那么使用 PrometheusPushGatewayReporter 的话,该 reporter 会定时将 metrics 数据推送到 PushGateway,然后再由 Prometheus 去拉取这些 metrics 数据。如果使用 PrometheusPushGatewayReporter 收集数据的话,也是需要将 opt 目录下的 flink-metrics-prometheus-1.9.0.jar 依赖放到 lib 目录下的,可配置的参数有:
deleteOnShutdown:默认值是 true,表示是否在关闭时从 PushGateway 删除指标。
filterLabelValueCharacters:默认值是 true,表示是否过滤标签值字符,如果开启,则不符合 [a-zA-Z0-9:_] 的字符都将被删除。
host:无默认值,配置 PushGateway 服务所在的机器 IP。
jobName:无默认值,要上报 Metrics 的 Job 名称。
port:默认值是 -1,这里配置 PushGateway 服务的端口。
randomJobNameSuffix:默认值是 true,指定是否将随机后缀名附加到作业名。
配置 Reporter
在 flink-conf.yaml 中配置的样例如下:
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: 172.16.104.226
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 

36ACFB0D-848A-494C-9C11-DB5B76DC3A33.png


部署 pushgateway
Pushgateway 是一个独立的服务,Pushgateway 位于应用程序发送指标和 Prometheus 服务器之间。 Pushgateway 接收指标,然后将其作为目标被 Prometheus 服务器拉取。可以将其看作代理服务,或者与 blackbox exporter 的行为相反,它接收度量,而不是探测它们。
解压 pushgateway
Tar -xvf pushgateway-1.5.1.linux-amd64.tar.gz
mv pushgateway-1.5.1.linux-amd64 pushgateway
启动 pushgateway
进入到 pushgateway 目录下
Cd pushgateway
./pushgateway & 

265F7602-7F0A-4A3E-A7AE-6D6F14394DE2.png


配置成服务pushgateway
vim /etc/systemd/system/pushgateway.service
[Unit]
Description=pushgateway
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/dtstack/pushgateway/pushgateway
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动pushgateway服务,并配置开机自启
systemctl daemon-reload
systemctl start pushgateway
systemctl status pushgateway
systemctl enable pushgateway 



查看是否在后台成功运行
ps aux | grep pushgateway 



登录 pushgateway webui
http://172.16.104.226:9091/ 



运行任务
./bin/flink run -m yarn-cluster -yjm 1024 -ytm 1024 examples/streaming/WindowJoin.jar 


8754F599-C512-4F98-9735-8D8A311DABDD.png

修改prometheus配置
vim /opt/dtstack/prometheus-2.33.3/prometheus.yml
scrape_configs:  
  - job_name: 'pushgateway'
    static_configs:
      - targets: ['localhost:9091']
        labels:
          instance: 'pushgateway'
重启prometheus
systemctl restart prometheus 











反压查看监控:
flink_taskmanager_job_task_isBackPressured
是否反压
flink_taskmanager_job_task_isBackPressured{jobUqId="aBcDf"}
发送端很高,说明是下游反压
flink_taskmanager_job_task_buffers_outPoolUsage{jobUqId="aBcDf",task_id="0dfd460ec7c42df129e084b4306beaa2"}
接收端很高, 说明接收端正在将反压传递给上游节点
flink_taskmanager_job_task_buffers_inPoolUsage{jobUqId="aBcDf",task_id="0dfd460ec7c42df129e084b4306beaa2"}
flink_taskmanager_job_task_buffers_inputFloatingBuffersUsage{jobUqId="aBcDf",task_id="0dfd460ec7c42df129e084b4306beaa2"}
flink_taskmanager_job_task_buffers_inputExclusiveBuffersUsage{jobUqId="aBcDf",task_id="0dfd460ec7c42df129e084b4306beaa2"}
———————————————— 


相关文章

CPU--平均负载

1、原理概述平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。   * ...

C++ 编程:程序组成部分 & 函数 & 输入

C++ 编程:程序组成部分 & 函数 & 输入

程序结构首先从一个最简单的程序来看 C++ 程序结构:第一部分:#include <iostream> 专业名词叫:预处理器编译指令 其实效果就类似于导包; 第二部分:main() 程序的...

PG初识

PG数据库是一种典型的C/S模型应用,不同的客户端通过TCP/IP进行连接、每个连接启动一个fork进程(多进程数据库)。一、pg逻辑架构1.1 pg与MySQL异同对比逻辑架构postgresMyS...

podman相关使用

Podman介绍Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用。Podman 提供与 Docker 非常相似的功能。正如前面提到的那样,它不需要在你的系统上运行任何守护进...

PostgreSQL 锁等待排查

PostgreSQL 锁等待排查

说明在数据库中,常用 锁 和 MVCC 来保障事务的一致性及提高并发性。锁问题的定位和排查也是数据库运维人员必会的技能,本篇文章介绍 PostgreSQL 如何排查定位锁堵塞问题。1. Postgre...

Kerberos集成Hadoop

Kerberos集成Hadoop

1、创建kerberos主体(1)路径准备为各服务准备一个安全的路径来存储keytab文件mkdir /etc/security/keytab/ chown -R ro...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。