内容简介
1. docker 运行 Prometheus、node-exporter、kafka-exporter、mysqld-exporter、alertmanager和grafana
2.Prometheus 实现监控服务器、mysql 和 kafka
3.alertmanager 实现邮箱和企业微信告警通知
4.grafana 实现监控可视化
启动监控服务
- 拉取 Prometheus 及其他组件的镜像
docker pull bitnami/prometheus
docker pull bitnami/node-exporter
docker pull bitnami/mysqld-exporter
docker pull bitnami/kafka-exporter
2.创建 prometheus.yml
global: #用于prometheus的全局配置,比如采集间隔,抓取超时时间等
scrape_interval: 15s #采集目标主机监控数据的时间间隔,默认为1m
evaluation_interval: 15s #触发告警生成alert的时间间隔,默认是1m
scrape_timeout: 10s #数据采集超时时间,默认10s
alerting: #用于alertmanager实例的配置,支持静态配置和动态服务发现的机制
alertmanagers:
- static_configs:
- targets: ["192.168.10.111:9095"]
rule_files: #用于加载告警规则相关的文件路径的配置,可以使用文件名通配机制 容器部署时需要修改为映射之后的容器目录
- "/usr/local/prometheus/rules/*.yml"
scrape_configs: #用于采集时序数据源的配置
- job_name: "prometheus" #每个被监控实例的集合用job_name命名,支持静态配置(static_configs)和动态服务发现的机制(*_sd_configs)
static_configs: #静态目标配置,固定从某个target拉取数据
- targets: ["192.168.10.111:9090"]
- job_name: 'node_exporter'
static_configs:
- targets: ["192.168.10.111:9100"]
- job_name: "mysql"
static_configs:
- targets: ["192.168.10.111:9104"] #mysqld_exporter的端口
- job_name: "kafka"
static_configs:
- targets: ["192.168.10.111:9308"] #kafka_exporter的端口
3.启动 Prometheus
docker run -d -p 9090:9090 -v /opt/docker_dir/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml bitnami/prometheus
docker run -d -p 9100:9100 bitnami/node-exporter
docker run -d -e MYSQLD_EXPORTER_PASSWORD=aaaaaa -p 9104:9104 bitnami/mysqld-exporter --config.my-cnf=/opt/docker_dir/prometheus/.my.cnf --mysqld.username=mysql_monitor --mysqld.address=192.168.10.111:3306
4.设置服务自启动
自启动命令:docker update --restart=always 容器名称
docker update --restart=always kafka-exporter
5.Prometheus结果展示
启动告警服务
邮箱告警
- 拉取镜像docker pull bitnami/alertmanager
- 创建文件配置文件:/opt/docker_dir/prometheus/alertmanager/config.yml
global: resolve_timeout: 5m smtp_smarthost: 'smtp.qq.com:465' smtp_from: 'xxxx@qq.com' smtp_auth_username: 'xxxx@qq.com' smtp_auth_password: '******' ##修改为自己的授权码 smtp_require_tls: false route: group_by: ['alertname'] group_wait: 30s group_interval: 5m repeat_interval: 1h receiver: 'mail' receivers: - name: 'mail' email_configs: - to: 'xxxx@qq.com'
-
启动 alertmanager,能打开9095端口表示启动成功
docker run -d -p 9095:9093 -v /opt/docker_dir/prometheus/alertmanager/config.yml:/opt/bitnami/alertmanager/conf/config.yml bitnami/alertmanager
4. 修改 prometheus.yml(启动监控服务里已经加入)
alerting: #用于alertmanager实例的配置,支持静态配置和动态服务发现的机制
alertmanagers:
- static_configs:
- targets: ["192.168.10.111:9095"]
rule_files: #用于加载告警规则相关的文件路径的配置,可以使用文件名通配机制 容器部署时需要修改为映射之后的容器目录
- "/usr/local/prometheus/rules/*.yml"
5.重新启动 prometheus,这里加入了规则的映射文件
docker run -d -p 9090:9090 -v /opt/docker_dir/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /opt/docker_dir/prometheus/rules/:/usr/local/prometheus/rules/ bitnami/prometheus
6.开启热重启
每次更改完rule文件都需要重启 Prometheus ,很麻烦,开启热重启功能
docker run -d -p 9090:9090 -v /opt/docker_dir/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /opt/docker_dir/prometheus/rules/:/usr/local/prometheus/rules/ bitnami/prometheus --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml
每次修改rule文件后执行以下命令
curl -X POST http://192.168.10.111:9090/-/reload
7.监控告警成功
企业微信告警
自建应用告警
过程比较复杂,电脑突然死机了,没有截图,这边说一下主要思路吧
1.企业微信创建自建应用
2.配置应用的可见范围(重要),alertmanager配置发送的目标(usr/party/tag)一定要在这个范围内
3.配置可信域名
通过内网穿透(linux部署)获取域名(HK隧道),但是企微认为这个域名是第三方域名
再通过阿里云购买一个域名(1rmb),通过 CNAME 做域名的转发
将 “域名归属认证文件” 服务器 nginx 的 html 目录
4.配置可信IP
添加发送数据的外网 ip ,由于我用的是虚拟机,所以这个ip 就是自己电脑的 ip
5.修改alertmanager 的配置
群机器人告警
1.公司群配置群机器人,保存webhook的url
2.拉取 Webhook Adapter 插件镜像
使用插件的原因:alertmanager发送的数据格式不是企业微信群机器人所需要的格式,所以不能发送成功。这个插件可以将数据格式化成企业微信群机器人所需要的数据格式。
docker pull guyongquan/webhook-adapter
3.启动服务
配置修改成自己的机器人的key
docker run --name webhook-adapter -p 8080:80 -d guyongquan/webhook-adapter --adapter=/app/prometheusalert/wx.js=/wx=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=*****
4.修改 alertmanager/config.yml
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 10m
receiver: 'qyweixin_web'
receivers:
- name: 'qyweixin_web'
webhook_configs:
- url: 'http://192.168.10.111:8080/adapter/wx'
5.重启 alertmanager 服务
6.机器人消息发送成功
启动可视化服务
1.拉取 grafana 镜像
docker pull bitnami/grafana
2.运行
docker run -d --name grafana -p 3000:3000 bitnami/grafana
3.进入页面,默认用户名:admin,密码:admin
4.添加数据源
5.添加面板,可从官网获取,通过json或者id导入
Grafana dashboards | Grafana Labshttps://grafana.com/grafana/dashboards/