1. 前言
本文中,我们会使用Docker安装配置Prometheus核心组件,实现一个完整的监控告警系统。
具体的组件包括:Prometheus Server、Exporters、PushGateway、Alertmanager、Grafana
参考文档:
- 《Prometheus入门篇》
- Prometheus官方文档
- Prometheus - GETTING STARTED
- Prometheus下载
- Prometheus - CONFIGURATION
- Prometheus实战 - Prometheus配置
- Prometheus监控系统之入门篇
2. 安装配置Prometheus Server
1、下载prometheus镜像(以v2.45.6为例)
1 | docker pull prom/prometheus:v2.45.6 |
更多版本镜像,访问dockerhub - prometheus获取。
2、拷贝配置文件
1 | mkdir -p /opt/prometheus/{conf,data} |
3、编辑配置文件
1 | mkdir -p /opt/prometheus/conf/targets |
配置方法参考文档《Prometheus服务发现》中的【文件服务发现】一节。
4、启动prometheus
1 | docker run --name=prometheus -d \ |
5、查看prometheus状态
1 | docker logs prometheus |
3. 访问Prometheus Server
1、访问Prometheus
浏览器访问 http://192.168.56.102:9090/
2、查看targets
浏览器访问 http://192.168.56.102:9090/targets/
3、查看指标
浏览器访问 http://192.168.56.102:9090/metrics/
4. 安装Node Exporter
4.1. Docker安装Node Exporter
参考文档:github - prometheus/node_exporter
1、下载node-exporter镜像(以v1.6.0为例)
1 | docker pull prom/node-exporter:v1.6.0 |
更多版本镜像,访问dockerhub - node exporter获取。
2、启动node exporter
1 | docker run --name=node-exporter -d \ |
3、访问node exporter
1 | curl http://localhost:9100/metrics |
4.2. Bin安装Node Exporter
bin安装node exporter的优势是适用于所有主机,不管主机上有没有安装docker。
1、安装node exporter
1 | wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz |
2、测试启动node exporter
1 | node_exporter |
3、配置systemd管理
1 | cat <<EOF > /etc/systemd/system/node_exporter.service |
4、启动node exporter
1 | systemctl start node_exporter |
5、访问node exporter
1 | curl http://localhost:9100/metrics |
5. Promserver采集Node Exporter数据
1、修改targets.yml (假设主机IP为 192.168.56.102)
1 | - targets: ['192.168.56.102:9100'] |
2、查看targets
浏览器访问 http://192.168.56.102:9090/targets/
6. 安装PushGateway
1、登录dockerhub查看需要的pushgateway
2、下载pushgateway镜像(以v1.1.0为例)
1 | docker pull prom/pushgateway:v1.1.0 |
3、启动pushgateway
1 | docker run --name=pushgateway -d \ |
4、测试服务
浏览器访问 http://192.168.56.102:9091/#
5、推送数据给pushgateway
1 | echo "exam_metric 100" | curl --data-binary @- http://127.0.0.1:9091/metrics/job/exam |
7. Promserver采集PushGateway数据
1、修改targets.yml文件
1 | - targets: ['192.168.56.102:9091'] |
2、在promserver查看数据
8. 安装Alertmanager
1、登录dockerhub查看需要的alertmanager
2、下载alertmanager镜像(以v0.23.0为例)
1 | docker pull prom/alertmanager:v0.23.0 |
v0.15.0以下版本只支持/api/v1
,不支持/api/v2
3、创建配置文件(建议和prometheus.yml放在一起)
1 | docker run --name tmp -d prom/alertmanager:v0.23.0 |
alertmanager.yml 默认配置为:
1 | global: |
修改 alertmanager.yml 为:
1 | global: |
4、启动alertmanager
1 | docker run --name=alertmanager -d \ |
5、测试服务
浏览器访问 http://192.168.56.102:9093/
9. 配置告警
1、编辑prometheus.yml配置文件,添加alertmanager配置和报警规则配置
1 | global: |
2、设置报警规则
1 | vim /opt/prometheus/conf/rules/exam.rules |
exam.rules内容为:
1 | groups: |
exam.rules 也可以先配置为空。
3、重新加载配置或者重启promserver
4、查看告警
在prometheus alerts页面查看告警
或者在alertmanager alerts页面查看告警
10. 告警通知处理
alertmanager.yml文件中配置的告警方式是webhook,告警发送到 http://192.168.56.102:8080/exam/test ,因此,我们需要一个服务来接收处理这个告警。
1、安装golang环境,参考《CentOS7部署beego项目》golang安装一节
2、创建main.go
1 | package main |
3、运行代码
1 | go get github.com/gin-gonic/gin |
如上图,服务接收到了告警信息,并且打印了告警信息。
11. Grafana
Grafana常被用来展示Prometheus的数据,详情参考《使用Docker安装配置Grafana》。
12. 后记
以上,配置完成了Prometheus Server、Exporters、PushGateway、Alertmanager、Grafana,跑通了数据的收集和显示,测试了告警信息的收集,nice。