发布时间:2025-06-24 17:32:53 作者:北方职教升学中心 阅读量:084
prometheus-webhook-dingtalk是Prometheus AlertManager WebHooks生成钉钉通知工具。
https://grafana.com/grafana/dashboards/7362-mysql-overview/?tab=revisions
使用两种方式的其中一种导入模板后就会出现以下界面,这里演示模板名称和文件夹都为默认,数据源就选择2.2章节配置的prometheus,然后导入
从左侧导航栏找到Browse,进入后即可找到刚刚导入的模板
点击该模板可以查看仪表板效果,因为本章节仅演示模板导入,没有配置对应数据源,所以仪表板有没有数据展示
仪表板模板可以在以下地址下载
https://grafana.com/grafana/dashboards/
3.AlertManager安装部署
3.1部署alertmanager
Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、
生成一个Webhook,将地址复制出来
部署prometheus-webhook-dingtalk:
alertmanager的webhook集成了钉钉报警,所以他是本来就有的。
(1)导入redis仪表板模板,这里使用本地上传方式
模板名称和文件夹都为默认,数据源就选择prometheus,然后导入
(2)导入模板后就可以看到仪表板的效果,采集到的redis数据也能正常展示
5.Rabbitmq服务监控
5.1部署rabbitmq_exporter
Rebbitmq_Exporter是RabbitMQ指标的Prometheus导出器。也就是告警产生后等待10s,如果有同组告警一起发出group_wait: 10s #两组告警的间隔时间group_interval: 10s #重复告警的间隔时间,减少相同微信告警的发送频率repeat_interval: 30s #采用哪个标签来作为分组依据group_by: [alertname]routes: - receiver: webhook #配置告警消息接受者信息,例如常用的 email、slack、
下载安装包:
地址:https://github.com/oliver006/redis_exporter/releases/
按操作系统类型选择需要的安装包
上传安装包:
将redis_exporter-v1.45.0.linux-amd64.tar.gz安装包上传至192.168.0.125服务器
安装redis_exporter:
进入安装包所在目录,执行以下命令完成redis_exporter部署
tar -zxf redis_exporter-v1.45.0.linux-amd64.tar.gz
解压安装包
mv redis_exporter-v1.45.0.linux-amd64 /usr/local/redis_exporter
改名和变更路径
启动redis_exporter:
可以通过./redis_exporter --help
命令查看各个参数的含义,比较常用的参数如下 :
-redis.addr string:Redis实例的地址,可以使一个或者多个,多个节点使用逗号分隔,默认为 “redis://localhost:6379”
-redis.password string:Redis实例的密码
-web.listen-address string:服务监听的地址,默认为 0.0.0.0:9121
执行以下命令启动redis_exporter服务
/usr/local/redis_exporter/redis_exporter -redis.addr192.168.0.125:6379 -redis.passwordpassword &
检查grafana监听是否正常,默认端口9121
netstat-anp|grep9121
4.2 prometheus添加监控目标
需要把redis_exporter监控添加到prometheus服务器(192.168.0.123)中
vim /usr/local/prometheus/prometheus.yml
编辑prometheus配置文件并添加以下配置
- job_name: 'redis'static_configs: - targets: ['192.168.0.125:9121']#redis_exporter的ip+端口
修改配置后重启prometheus
ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9
杀死进程
/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &
启动服务
重启后可以看到prometheus已与redis_exporter建立了连接
netstat-anp|grep9121
在prometheus页面可以看到新添加的redis监控目标
4.3添加Redis Grafana模板
在Grafana的官方网站上可以找到比较好用的Redis的仪表板模板,直接用模板地址导入即可。连接情况、webhook 等消息通知方式receivers:- name: 'webhook'webhook_configs: #钉钉插件提供的webhook地址- url: http://192.168.0.123:8060/dingtalk/ding_webhook/send #警报被解决之后是否通知send_resolved: true
启动prometheus-webhook-dingtalk服务:
/usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus-webhook-dingtalk/config.yml &
检查prometheus-webhook-dingtalk监听是否正常,默认端口8060
netstat-anp|grep8060
3.6测试钉钉接收告警效果
同样使用3.2章节当中配置的rabbitmq告警策略触发告警,下面就关闭rabbitmq服务后检查钉钉是否能够收到告警信息
关停192.168.0.125的rabbitmq服务
systemctl stop rabbitmq-server
在钉钉成功接收到告警信息
启动192.168.0.125的rabbitmq服务
systemctl start rabbitmq-server
服务恢复后钉钉收到告警恢复信息
4.Redis服务监控
4.1部署redis_exporter
redis_exporter是用于redis指标的Prometheus导出器。这里直接将redis_exporter部署在安装了Redis Server的服务器(192.168.0.125)上。吞吐量、
vim/usr/local/alertmanager/alertmanager.yml
route: #设置默认接收人receiver: 'webhook'#组告警等待时间。登录后需要修改默认密码

登录后把prometheus服务器收集的数据作为一个数据源添加到grafana,让grafana可以得到prometheus的数据
(1)从左侧导航栏找到Data sources菜单

(2)进入菜单后点击增加数据源,数据源选择prometheus


(3)进入prometheus配置后有两个必填的配置,分别是数据源名称和prometheus的访问地址,prometheus的ip和端口。redis_exporter部署在哪台服务器上都是可以的,因为之后会在启动redis_exporter的时候配置所要监控的redis的连接地址。
(1)导入mysql仪表板模板,这里使用本地上传方式


模板名称和文件夹都为默认,数据源就选择prometheus,然后导入

(2)导入模板后就可以看到仪表板的效果,采集到的mysql数据也能正常展示

7.Linux主机监控
7.1部署node_exporter
下载安装包:
地址:https://prometheus.io/download/#node_exporter
上传安装包:
将node_exporter-1.4.0.linux-amd64.tar.gz安装包上传至192.168.0.125服务器

安装node_exporter:
进入安装包所在目录,执行以下命令完成node_exporter部署
tar -zxf tar zxvf node_exporter-1.4.0.linux-amd64.tar.gz
解压安装
包
mv /usr/local/node_exporter-1.4.0.linux-amd64/ /usr/local/node_exporter
改名和变更路径

启动node_exporter:
/usr/local/node_exporter/node_exporter &

检查node_exporter监听是否正常,默认端口9100
netstat-anp|grep9100

7.2 prometheus添加监控目标
需要把node_exporter监控添加到prometheus服务器(192.168.0.123)中
vim /usr/local/prometheus/prometheus.yml 编辑prometheus
配置文件并添加以下配置
- job_name: 'linux'static_configs: - targets: ['192.168.0.125:9100']#node_exporter的ip+端口
修改配置后重启prometheus
ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9
杀死进程
/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &
启动服务
重启后可以看到prometheus已与node_exporter建立了连接
netstat-anp|grep9100

7.3添加Linux Grafana模板
在Grafana的官方网站上可以找到比较好用的linux的仪表板模板,直接用模板地址导入即可。
(1)导入rabbitmq仪表板模板,这里使用本地上传方式


模板名称和文件夹都为默认,数据源就选择prometheus,然后导入

(2)导入模板后就可以看到仪表板的效果,采集到的rabbitmq数据也能正常展示


6.mysql服务监控
6.1部署mysqld_exporter
主要监控Mysql数据库的稳定性、
下载安装包:
地址:https://prometheus.io/download/#alertmanager
按操作系统类型选择需要的安装包

上传安装包:
将alertmanager-0.24.0.linux-amd64.tar.gz安装包上传至192.168.0.123服务器

安装alertmanager:
进入安装包所在目录,执行以下命令完成alertmanager部署
tarzxf alertmanager-0.24.0.linux-amd64.tar.gz -C/usr/local/mv/usr/local/alertmanager-0.24.0.linux-amd64/ /usr/local/alertmanager

3.2告警邮件发送配置
编辑alertamanger配置文件:
vim/usr/local/alertmanager/alertmanager.yml
global: smtp_smarthost: 'smtp.xxx.com:25'#告警邮件发送者SMTP地址smtp_from: 'xxx@163.com'#发件者邮箱smtp_auth_username: 'xxx@163.com'#邮箱账号smtp_auth_password: 'password'#邮箱专用授权码,不是邮箱登陆密码smtp_require_tls: false#关闭tls授权route: #定义告警路由规则,可以定义多个receiver和group实现告警分组group_by: ['rabbitmq_alerts']#根据告警规则组名进行分组group_wait: 30s #分组内第一个告警等待时间,30s内如有第二个告警会合并成一个group_interval: 5m #发送新告警的间隔时间repeat_interval: 10m #重复告警间隔发送时间receiver: 163#默认接收者routes: #子路由,不满足子路由的都走默认路由- match: #普通匹配severity: critical #告警等级receiver: brilliance #匹配critical告警的接收者- match_re: #正则匹配severity: ^(warning|critical)$ #告警等级receiver: qq #匹配warning或critical告警的接收者receivers: #定义三个接受者,和上面三个路由对应- name: 'outlook'#和上面route部分中的receiver一致email_configs: #接收器为email,除此还有其他接收器可以使用- to: 'xxx@outlook.com.cn'#告警邮件发送对象send_resolved: true#接收告警恢复邮件- name: '163'email_configs: - to: 'xxx@163.com'- name: 'qq'email_configs: - to: 'xxx@qq.com'
修改完成后使用amtool检查alertmanager.yml是否存在语法错误,显示SUCCESS表示无误
/usr/local/alertmanager/amtool check-config /usr/local/alertmanager/alertmanager.yml

启动alertmanager服务
执行命令启动alertmanager
/usr/local/alertmanager/alertmanager --config.file/usr/local/alertmanager/alertmanager.yml &

检查alertmanager监听是否正常,默认端口9093
netstat-anp|grep9093

编辑prometheus配置文件:
增加和修改prometheus.yml的alertmanager部分,让alertmanger能与Prometheus通信,其它原有配置不动
vim/usr/local/prometheus/prometheus.yml
alerting: alertmanagers: - static_configs: - targets: - 192.168.0.123:9093 #修改成alertmanager服务器的ip和端口rule_files: #指定告警规则的配置路径- "rules/*.yml"scrape_configs: #接收alertmanager的数据- job_name: 'alertmanager'static_configs: - targets: ['192.168.0.123:9093']
编辑具体告警规则配置文件:
在/usr/local/prometheus/路径建立rules文件夹
mkdir-p/usr/local/prometheus/rules
新建具体告警规则配置文件,这里以rabbitmq策略作为例子
vim/usr/local/prometheus/rules/rabbitmq_alert.yml
groups:- name: rabbitmq_alerts #告警分组,一个组下的告警会整合在一个邮件中rules: - alert: Rabbitmq服务状态监测 #定义告警事件名expr: rabbitmq_up{job='rabbitmq'}!=1#告警触发的条件for:1m #事件持续时长,0的话代表一满足就触发labels: severity: critical #定义了一个标签用于告警分组annotations: #邮件中的显示内容,可以引用变量summary: "Instance {{ $labels.instance}} critical alert"#summary概要信息description: "Instance: {{ $labels.instance}} is Down! 请尽快处理告警"#description详细信息
配置完成后重启prometheus
ps-ef|grepprometheus |grep-vgrep|awk'{print $2}'|xargskill-9#杀死进程/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &#启动服务
3.3测试邮件告警效果
在3.2章节当中配置了一条告警策略为rabbitmq服务没启动即触发告警,下面就关闭rabbitmq服务后检查是否能够收到告警邮件
关停192.168.0.125的rabbitmq服务
systemctl stop rabbitmq-server

在Grafana可以看到rabbitmq服务状态已经为down

打开邮件看到已成功接收到告警邮件,红框部分就是告警规则中的自定义内容

启动192.168.0.125的rabbitmq服务
systemctl start rabbitmq-server

当服务恢复后可以接收到告警恢复的邮件

3.4自定义邮件告警模板
配置邮件模板:
首先在Alertmanager主目录下创建一个templates文件夹,用户存放模板文件,然后创建一个email.tmpl文件,写入以下内容
mkdir-p/usr/local/alertmanager/templates
vim/usr/local/alertmanager/templates/email.tmpl
{{define "email.html"}}{{- ifgt (len .Alerts.Firing)0-}}{{- range $index, $alert:=.Alerts -}}========异常告警 ========<br>告警名称:{{$alert.Labels.alertname }}<br>告警级别:{{$alert.Labels.severity }}级 <br>告警机器:{{$alert.Labels.instance }}{{$alert.Labels.device }}<br>告警主题:{{$alert.Annotations.summary }}<br>告警详情:{{$alert.Annotations.description }}<br>告警时间:{{($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05"}}<br>==========END =========={{- end }}{{- end }}{{- ifgt (len .Alerts.Resolved)0-}}{{- range $index, $alert:=.Alerts -}}========告警恢复 ========<br>告警名称:{{$alert.Labels.alertname }}<br>告警级别:{{$alert.Labels.severity }}级 <br>告警机器:{{$alert.Labels.instance }}{{$alert.Labels.device }}<br>告警主题:{{$alert.Annotations.summary }}<br>告警详情:{{$alert.Annotations.description }}<br>告警时间:{{($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05"}}<br>恢复时间:{{($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05"}}<br>==========END =========={{- end }}{{- end }}{{- end }}
在alertmanager.yml中添加模板扫描,及邮件使用模板
vim/usr/local/alertmanager/alertmanager.yml
templates: #配置自定义模板位置- 'templates/*.tmpl'receivers:- name: 'brilliance'email_configs: - to: 'xxx@brilliance.com.cn'html: '{{ template "email.html" .}}'#为接收者指定邮件使用模板send_resolved: true
测试模板告警效果:
关停192.168.0.125的rabbitmq服务,测试告警内容显示效果
systemctl stop rabbitmq-server

启动192.168.0.125的rabbitmq服务,测试告警恢复内容显示效果
systemctl start rabbitmq-server

3.5钉钉接收告警配置
创建钉钉机器人:
【电脑端钉钉 】-【群聊】-【群设置】-【智能群助手】-【添加更多】-【添加机器人】-【自定义】-【添加】,编辑机器人名称和选择添加的群组,勾选加签,将生成的秘钥复制出来。wechat、
(1)导入rabbitmq仪表板模板,这里使用本地上传方式

模板名称和文件夹都为默认,数据源就选择prometheus,然后导入

(2)导入模板后就可以看到仪表板的效果,采集到的linux数据也能正常展示
