博客 大数据监控系列(二)——Prometheus+Grafana在CDH使用实践(包含Altermanager告警)

大数据监控系列(二)——Prometheus+Grafana在CDH使用实践(包含Altermanager告警)

   数栈君   发表于 2024-02-19 11:18  167  0

1 概述

我们之前在《大数据监控系列(一)——Promehteus+Grafana监控概述》中对Promehteus和Grafana的基本概念做了介绍,这里将介绍Promehteus和Grafana在cdh监控中的实践,本文主要以监控hadoop和yarn为案例来做介绍

2 前置条件

  •  已安装CDH集群

  • 已安装Promehteus和Grafana

  • 已下在所需的jar包并放在如下位置

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/e1e8d232623983cee57843dc508b967a..png

注:jmx_prometheus_javaagent-0.3.1.jar(用来监控采集java监控对象运行中的metrics指标)

下载位置:

3 开启监控对象的jmx

在cdh ui界面,选择实例,在配置→高级中添加对应参数即可,然后重启实例,使参数生效

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/32802b1df5164a34e40a4a1150e5cc46..png

-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=9604 -javaagent:/etc/prometheus/jmx_prometheus_javaagent-0.3.1.jar=9504:/etc/prometheus/nodemanager.yml

-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=9601 -javaagent:/etc/prometheus/jmx_prometheus_javaagent-0.3.1.jar=9501:/etc/prometheus/datanode.yml

-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=9603 -javaagent:/etc/prometheus/jmx_prometheus_javaagent-0.3.1.jar=9503:/etc/prometheus/resourcemanager.yml

-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=9609 -javaagent:/etc/prometheus/jmx_prometheus_javaagent-0.3.1.jar=9509:/etc/prometheus/namenode.yml

注释:更多jmx开启参考下面文档:

https://dtstack.yuque.com/vkpkwx/gmyg6z/wn70eb

4 设置Prometheus配置文件

4.1 prometheus.yml配置文件

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/a24773fd84184fb9998da84f25dd3e8a..png

4.2 实例配置文件

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/f58a5d45296f53e550b3c1f22db68bd7..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/2926a6e1cc16dd0e4f567c9374ea8b9b..png

4.3 参数注释

参数含义

scrape_interva

抓取间隔,默认继承global值

scrape_timeout

抓取超时时间,默认继承global值

metric_path

抓取路径, 默认是/metrics

scheme

指定采集使用的协议,http或者https

params

指定url参数

basic_auth

指定认证信息

*_sd_configs

指定服务发现配置

static_configs

静态指定服务job

relabel_config

relabel设置

注:我们这里参数设置要注意的就是端口对应好,配置文件修改后需要重启prometheus

重启后打开prometheus ui看到如下界面,则说明配置成功了。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/683165589ca831491d193cee4f84b849..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/a0084c7f565d0e1ffd7a193f190b9b29..png

5 配置Grafana

5.1 配置数据源

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/93814f367a7604678cb8255a68abdbbf..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/be45f359431bde518d649378229f3509..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/8acf3b2420601f7ce68e35e1721d99c4..png

5.2 生产Dashboard

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/5f124bb647c4f5b7cb4bcff9d429db5c..png

也可以直接导入模板:

常用模板地址:

https://grafana.com/grafana/dashboards?direction=asc&orderBy=name&dataSource=prometheus

5.3 主要 模块介绍

变量设置

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/04dce4d11e1978daa5dd6355a241e70b..png

Edit Panel

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/09557d824bbd7c44a0ba2604be097188..png

5.4 效果展示

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/f1b15ef72dc1dd41454ae89c2d7172d4..png

6 Altermanager监控告警

6.1 AlterManager官方文档地址

6.2 AlterManager介绍

Alertmanager与Prometheus是相互分离的两个组件。Prometheus服务器根据报警规则将警报发送给Alertmanager,然后Alertmanager将silencing、inhibition、aggregation等消息通过电子邮件、dingtalk和HipChat发送通知。

Alertmanager处理由例如Prometheus服务器等客户端发来的警报。它负责删除重复数据、分组,并将警报通过路由发送到正确的接收器,比如电子邮件、Slack、dingtalk等。Alertmanager还支持groups,silencing和警报抑制的机制。 

6.3 安装altermanager

tar xvf alertmanager-0.24.0.linux-amd64 -C  /opt/dtstacl/  #解压至指定文件夹
mv alertmanager-0.24.0.linux-amd64  alertmanager
cd alertmanager/

本文 实现Grafana的告警,需要通过altermanager这个组件;在Grafana服务端配置告警规则,在altermanager组件配置企业微信

6.4 介绍企业微信ID

•企业ID获取
登录后台管理,在【我的企业】这里,先拿到后面用到的第一个配置:企业ID
•部门ID获取
然后在通讯录中,添加一个子部门,用于接收告警信息,后面把人加到该部门,这个人就能接收到告警信息了。
获得我们配置告警的第二个参数:部门ID 2
•告警AgentId和Secret获取
告警AgentId和Secret获取是需要在企业微信后台,【应用管理】中,自建应用才能够获得的。
最后点击创建应用,可以看到我们刚才创建好的应用Prometheus。
点击这个应用,可以看到我们想要的AgentId和Secret
以上步骤完成后,我们就得到了配置Alertmanager的所有信息,包括:企业ID,AgentId,Secret和接收告警的部门id
step 1: 注册企业微信账号(不需要企业认证)。
step 2: 访问apps 创建应用,点击创建应用按钮 -> 填写应用信息:
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/5a903c8b8d3132187d8ccd656a3ebb50..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/fcb5576237c3fe61bf554a2b1e4d786d..png

企业ID

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0640fbc20b36538c79e0f3c0fb3916a0..png

6.5 grafana+alertmanager实现微信报警

grafana的多数据源特性,结合alertmanager实现微信报警。
alertmanager为prometheus一个单独的报警模块,具有分组、抑制、静默等功能。 
global:
  resolve_timeout: 5m
templates:
- '/opt/dtstack/alertmanager/conf/wechat.tmpl'
route:
  group_by: ['alertname']
  group_wait: 5s
  #同一组内警报,等待group_interval时间后,再继续等待repeat_interval时间
  group_interval: 1m
  #当group_interval时间到后,再等待repeat_interval时间后,才进行报警
  repeat_interval: 10m
  receiver: 'wechat'
receivers:
- name: 'wechat'
  wechat_configs:
  - corp_id: 'wwefec2ae8cd357265'
    agent_id: '1000002'
    api_secret: '9imtbUsHjFt9ccUJYi6ihxlR49X-_WoLblj8eH8kAPA'
    to_party: '3'
    send_resolved: true
其中:
corp_id、agent_id、api_secret为微信企业号的配置;
to_user为企业号通讯录人员;
报警再次发送时间为group_interval+repeat_interval,也就是先等待group_interval,再等待repeat_interval。
注意:企业号新建应用的须设置相应的可见范围及人员,否则无法发送信息。 

配置 报警模板 

vim wechat.tmpl
{{ define "grafana.default.message" }}{{ range .Alerts }}
{{ .StartsAt.Format "2006-01-02 15:03:04" }}
{{ range .Annotations.SortedPairs }}{{ .Name }} = {{ .Value }}
{{ end }}{{ end }}{{ end }}
{{ define "wechat.default.message" }}
{{ if eq .Status "firing"}}[Warning]:{{ template "grafana.default.message" . }}{{ end }}
{{ if eq .Status "resolved" }}[Resolved]:{{ template "grafana.default.message" . }}{{ end }}
{{ end }}
其中:
Status 只有两个状态firing、resolved,通过这个参数是否发送warning和resolved报警信息。
模板的语法还需查官网进行深入学习。
注意: prometheus 默认时区为UTC且无法改变时区,官方建议在用户的web ui 中重新设置时区,因此我们的报警时间应该+8:00 
vim /lib/systemd/system/alertmanager.service
[Unit]
Description=Alertmanager for Prometheus
After=network-online.target
[Service]
Type=simple
ExecStart=/opt/dtstack/alertmanager/alertmanager --config.file=/opt/dtstack/alertmanager/grafana.yml --storage.path=/opt/dtstack/alertmanager/data/  --log.level=debug
Restart=on-failur
ExecStop=/bin/kill -9 $MAINPID
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl restart alertmanager
systemctl status alertmanager 

6.6 grafana接入Alertmanager

添加报警渠道

在dashboard中设置alert

微信报警如下:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/ec9444ad83b6af9196618e97154d3c6b..png



《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack  
0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群