已安装CDH集群
已安装Promehteus和Grafana
已下在所需的jar包并放在如下位置
注:jmx_prometheus_javaagent-0.3.1.jar(用来监控采集java监控对象运行中的metrics指标)
3 开启监控对象的jmx
在cdh ui界面,选择实例,在配置→高级中添加对应参数即可,然后重启实例,使参数生效
-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配置文件
4.2 实例配置文件
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看到如下界面,则说明配置成功了。
5 配置Grafana
5.1 配置数据源
5.2 生产Dashboard
也可以直接导入模板:
常用模板地址:
https://grafana.com/grafana/dashboards?direction=asc&orderBy=name&dataSource=prometheus
5.3 主要 模块介绍
变量设置
Edit Panel
5.4 效果展示
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 创建应用,点击创建应用按钮 -> 填写应用信息:
企业ID
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
微信报警如下: