一、搭建prometheus
使用docker方式:
docker run --name=prometheus -itd -p 9090:9090 -v C:\Users\Administrator\Desktop\promethues\server\prometheus.yml:/etc/prometheus/prometheus.yml -v C:\Users\Administrator\Desktop\promethues\server\rules:/etc/prometheus/rules prom/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-lifecycle
本地访问地址是http://127.0.0.1:9090/,注意clashx也是用的9090端口,启动了clashx会有端口占用问题
记得把本地配置文件和rule文件映射进容器,prometheus.yml文件如下
global:
scrape_interval: 15s
external_labels:
monitor: 'codelab-monitor'
rule_files:
- /etc/prometheus/rules/*.rules
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: "node"
static_configs:
- targets: ['10.8.0.54:1880']
metrics_path: /nodered
- job_name: 'example-random'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['10.8.0.54:8080', '10.8.0.54:8081']
labels:
group: 'production'
- targets: ['10.8.0.54:8082']
labels:
group: 'canary'
- job_name: 'localNode'
static_configs:
- targets: ['10.8.0.54:9100']
alerting:
alertmanagers:
- scheme: http
- static_configs:
- targets: ["10.8.0.54:9093"]
配置报警到alertmanager
node export启动命令如下:
docker run -d --name=node-exporter -p 9100:9100 prom/node-exporter
启动node exporter后会暴露这个端口,地址是http://127.0.0.1:9100/metrics
同时我用nodered也做了个接口
rule文件配置如下:
groups:
- name: hostStatsAlert
rules:
- alert: hostCpuUsageAlert
expr: sum(avg without (cpu)(irate(node_cpu_seconds_total{mode="idle"}[5m]))) by (instance) > 0.85
for: 10s
labels:
severity: page
annotations:
summary: "Instance {{ $labels.instance }} CPU usgae high"
description: "{{ $labels.instance }} CPU usage above 85% (current value: {{ $value }})"
- alert: hostMemUsageAlert
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)/node_memory_MemTotal_bytes > 0.25
for: 10s
labels:
severity: page
annotations:
summary: "Instance {{ $labels.instance }} MEM usgae high"
description: "{{ $labels.instance }} MEM usage above 85% (current value: {{ $value }})"
我们配置两个监控报警,一个是监控cpu是否超过85%,一个监控内容是否超过25%,持续10秒钟报警
二、启动alertmanager用来进行报警
还是使用docker方式
docker run --name alertmanager -itd -p 9093:9093 -v C:\Users\Administrator\Desktop\promethues\alert:/etc/alertmanager prom/alertmanager --config.file=/etc/alertmanager/alertmanager.yml
本地访问地址是http://localhost:9093/#/alerts
记得把本地配置文件映射进去,配置文件默认名字是alertmanager.yml,配置如下
我这里配置了两种报警方式,分别是mail和钉钉机器人,但是mail可能有限制,频繁发送邮件可能被限制,所以我集成了钉钉机器人,邮件方式没用
钉钉机器人需要先去申请,然后起个服务
按这个官方教程申请即可
申请完成后用postman测试下,看看能否走通
然后搭建钉钉机器人发送服务,这里直接用别人做好的
docker run -itd --name dingtalk --restart always -p 8060:8060 timonwong/prometheus-webhook-dingtalk:master --ding.profile="webhook1=https://oapi.dingtalk.com/robot/send?access_token=***********************"
可以参考这篇文章
https://blog.csdn.net/qq_39680564/article/details/107835890
启动后就暴露了8060的发送接口,记得修改alertmanager的配置文件,这是别人的例子,本项目的配置向上找
记得用postman试试通不通
这样配置好后钉钉就可以收到报警了,盗用别人的一张效果图,企业微信机器人应该是一样的,因为本质是一样的
这篇文章也不错,不懂可以看看
https://blog.csdn.net/qq_24794401/article/details/103245804
三、使用Grafana进行可视化展示
grafana我也是用的docker
docker run -itd --name grafana -p 3000:3000 grafana/grafana
首先要配置数据源
grafana不局限于某一个数据库,其他的例如mysql等也支持,mongo需要装插件
然后在dashboard里增加panel就可以了