部署pushgatway
Prometheus自定义监控组件pushgateway
1.下载pushgateway
1 [root@elk02:0 ~]# wget https://github.com/prometheus/pushgateway/releases/download/v1.9.0/pushgateway-1.9.0.linux-amd64.tar.gz
2.解压软件包
1 [root@elk02:0 ~]# tar xf pushgateway-1.9.0.linux-amd64.tar.gz -C /softwares/
3.运行pushgateway组件
1 2 [root@elk02:0 ~]# cd /softwares/pushgateway-1.9.0.linux-amd64/ [root@elk02:0 ~]# ./pushgateway --web.listen-address=:9091 --web.telemetry-path="/metrics"
4.访问pushgetway组件的WebUI
5.推送测试数据到pushgateway组件
1 [root@elk211 ~]# echo "student_online 75" | curl --data-binary @- http://10.0.0.212:9091/metrics/job/student/instance/10.0.0.211
6.再次访问pushgetway组件的WebUI
7.修改Prometheus的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@elk02 ~]# vim /softwares/prometheus-2.53.2.linux-amd64/prometheus.yml ... - job_name: "pushgateway" honor_labels: true static_configs: - targets: - "10.0.0.212:9091" [root@elk01:0 ~]# /softwares/prometheus-2.53.2.linux-amd64/promtool check config /softwares/prometheus-2.53.2.linux-amd64/prometheus.yml [root@elk01:0 ~]# curl -X POST http://10.0.0.211:9090/-/reload http://10.0.0.211:9090/targets?search=
Alertmanager环境部署
1.altermanager概述
用于prometheus server的告警功能的组件,目前支持多种告警媒介,包括但不限于邮件告警,钉钉告警,企业微信告警等。
2.部署alermanager组件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 1.下载软件包 [root@elk02:1 ~]# wget https://github.com/prometheus/alertmanager/releases/download/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gz 2. 解压软件包 [root@elk02:1 ~]# tar xf alertmanager-0.27.0.linux-amd64.tar.gz -C /softwares/ 3.修改alermanager的配置文件 [root@elk02:1 ~]# vim /softwares/alertmanager-0.27.0.linux-amd64/alertmanager.yml global: resolve_timeout: 5m smtp_from: '1968554226@qq.com' smtp_smarthost: 'smtp.qq.com:465' smtp_auth_username: '1968554226@qq.com' smtp_auth_password: 'xwghtaasufprewcb' smtp_require_tls: false smtp_hello: 'qq.com' route: group_by: ['alertname' ] group_wait: 5s group_interval: 5s repeat_interval: 30s receiver: 'email' receivers: - name: 'email' email_configs: - to: '3078155561@qq.com' send_resolved: true inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname' , 'dev' , 'instance' ] 4.启动alermanager [root@elk02:1 ~]# cd /softwares/alertmanager-0.27.0.linux-amd64/ [root@elk02:1 alertmanager-0.27.0.linux-amd64]# ./alertmanager 5.访问webui http://10.0.0.212:9093/#/status
3.修改Prometheus配置文件
1 2 3 4 5 6 7 8 9 10 11 12 [root@elk01:0 ~]# vim /softwares/prometheus-2.53.2.linux-amd64/prometheus.yml ··· alerting: alertmanagers: - static_configs: - targets: - 10.0.0.212:9093 rule_files: - "/softwares/prometheus-2.53.2.linux-amd64/status-rules.yaml"
4.修改告警规则
1 2 3 4 5 6 7 8 9 10 11 12 13 cat > /softwares/prometheus-2.53.2.linux-amd64/status-rules.yaml << EOF groups: - name: service_status rules: - alert: 10.0.0.213:9100节点挂掉啦 expr: up{instance="10.0.0.213:9100"} == 0 for: 15s labels: service: node_exporter porter: 9100 annotations: summary: "{{ $labels.instance }} 已停止运行超过 15s!" EOF
5.重新加载Prometheus配置
1 2 3 4 5 [root@elk01:0 ~]# /softwares/prometheus-2.53.2.linux-amd64/promtool check config /softwares/prometheus-2.53.2.linux-amd64/prometheus.yml [root@elk01:0 ~]# curl -X POST http://10.0.0.211:9090/-/reload
6.验证告警
1 2 3 4 停止elk3的node_exporter服务 [root@elk03:0 ~]# systemctl stop node-exporter.service 问题未修复没间隔30s发一次邮件(自己可设置)
告警邮件
修改告警模板
1. 告警模板介绍
默认的告警信息界面有些简单,可以借助告警的模板信息,对告警信息进行丰富,需要借助于Alertmanager的模板功能来实现。
告警模板的使用流程如下:
- 分析关键信息
- 定制模板内容
- Alertmanager加载模板文件
- 告警信息使用模板内容属性
模板文件使用标准Go模板语法,并暴露一些包含时间标签和值的变量。
1 2 标签引用: {{ $label .<label_name> }} 指标样本值引用: {{ $value }}
为了显式效果,需要了解一些html相关技术,参考链接:
https://www.w3school.com.cn/html/index.asp
2.自定义模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 创建一个模板目录 [root@elk02:0 ~]# mkdir /softwares/alertmanager-0.27.0.linux-amd64/tmpl [root@elk02:0 tmpl]# cat email.tmpl {{ define "alert.html" }} <h1 style='color: red;' >服务异常告警</h1> <table border="1" > <tr > <th>报警项</th> <th>实例</th> <th>报警阀值</th> <th>开始时间</th> </tr> {{ range $i , $alert := .Alerts }} <tr > <td>{{ index $alert .Labels "alertname" }}</td> <td>{{ index $alert .Labels "instance" }}</td> <td>{{ index $alert .Annotations "value" }}</td> <td>{{ $alert .StartsAt }}</td> </tr> {{ end }} </table> {{ end }}
3.alertmanager引用自定义模板文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@elk02:0 temp]# vim /softwares/alertmanager-0.27.0.linux-amd64/alertmanager.yml templates: - './tmpl/*.tmpl' ··· receivers: - name: 'email' email_configs: - to: '3078155561@qq.com' send_resolved: true headers: { Subject: "[WARN] 报警邮件" } html: '{{ template "alert.html" . }}'
4.altermanager语法检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@elk02:0 alertmanager-0.27.0.linux-amd64]# pwd /softwares/alertmanager-0.27.0.linux-amd64 [root@elk02:0 alertmanager-0.27.0.linux-amd64]# ./amtool check-config ./alertmanager.yml Checking './alertmanager.yml' SUCCESS Found: - global config - route - 1 inhibit rules - 1 receivers - 1 templates SUCCESS
5.重新启动altermanager
上面我们定制邮件内容中包含阈值的部分,而我们在规则中并没有指定,所以prometheus需要修改以下规则文件。
6.修改规则文件
1 2 3 4 5 [root@elk01:1 ~]# vim /softwares/prometheus-2.53.2.linux-amd64/status-rules.yaml ··· annotations: summary: "{{ .instance }} 已停止运行超过 15s!" value: "{{ $value }}"
7.检查Prometheus配置文件
1 2 3 4 5 [root@elk01:0 ~]# /softwares/prometheus-2.53.2.linux-amd64/promtool check config /softwares/prometheus-2.53.2.linux-amd64/prometheus.yml [root@elk01:0 ~]# curl -X POST http://10.0.0.211:9090/-/reload
访问prometheus的WebUI
8.验证测试
停掉exporter服务
依据模板可以将告警和恢复模板分开,使用不同模板通知
推荐阅读:
https://prometheus.io/docs/alerting/latest/configuration/
08-部署pushgetway和altermanager