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

二龙2年前技术文章3225

1 概述

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

2 前置条件


  •  已安装CDH集群

  • 已安装Promehteus和Grafana

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

图片一.png

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

3 开启监控对象的jmx

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

图片二.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配置文件

图片三.png

4.2 实例配置文件

图片四.png

图片五.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看到如下界面,则说明配置成功了。

图片六.png

图片七.png

5 配置Grafana

5.1 配置数据源

图片八.png

图片九.png

图片十.png

5.2 生产Dashboard

图片十一.png

也可以直接导入模板:

常用模板地址:

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

5.3 主要 模块介绍

变量设置

图片十二.png

Edit Panel

图片十三.png

5.4 效果展示

图片十四.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

wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz  # 下载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 创建应用,点击创建应用按钮 -> 填写应用信息:
377A785E-8836-492A-B0BD-893EFE7C2549.png

C677A473-42A9-4DC9-9126-3ADC579320F3.png

企业ID

0730B93F-C297-48BF-95AB-D1D774DDF12D.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

微信报警如下:

42474391-0EB3-4B68-A1A9-A3574F7DF895.png


相关文章

CDH实操--客户端安装

CDH实操--客户端安装

概述安装CDH客户端,主要是方便在CDH部署节点以外,通过客户端的方式连接CDH上的hdfs,hive和hbase服务1、安装jdk(适配CDH即可,一般1.8)2、获取安装包3、部署安装包把安装包解...

CDH实操--hive高可用

CDH实操--hive高可用

前言在CDH中,hive metastore、hiveserver2若角色单实例部署,或者部署多个实例但是连接配置任选其一的话,均存在单点问题,一旦实例故障就会影响业务稳定;这时我们就好考虑高可用部署...

Hdfs3.x新特性详解

Hdfs3.x新特性详解

HDFS Disk Balancer(磁盘均衡器)HDFS Disk Balancer与HDFS Balancer的区别?两者都是实现负载均衡功能HDFS Balancer是之前Hadoop2.x中本...

CDH实操--集成 freeipa

CDH实操--集成 freeipa

1 概述环境准备: 1)安装cdh6.2.1 2)安装FreeIPA,server和client(在所有cdh节点)2 集成2.1 krb5.conf修改注释:default_ccache_nam...

发表评论    

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