5、alertmanager 告警配置
官网下载地址:
https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
https://github.com/prometheus/alertmanager/releases/download/v0.15.2/alertmanager-0.15.2.linux-amd64.tar.gz
1、安装
# 解压
[root@prometheus-193-53 alertmanager]# mkdir -p /data/alertmanager/{bin,conf,logs,data,templates}
[root@prometheus-193-53 ~]# tar xf alertmanager-0.15.2.linux-amd64.tar.gz -C /data/
[root@prometheus-193-53 alertmanager]# mv ../alertmanager-0.15.2.linux-amd64/{alertmanager,amtool} /data/alertmanager/bin/
[root@prometheus-193-53 alertmanager]# mv ../alertmanager-0.15.2.linux-amd64/alertmanager.yml /data/alertmanager/conf/
[root@prometheus-193-53 alertmanager]# tree
.
├── bin
│ ├── alertmanager
│ └── amtool
├── conf
│ └── alertmanager.yml
├── data
├── logs
└── templates
# 写启动文件
cat <<EOF >/lib/systemd/system/alertmanager.service
[Unit]
Description=alertmanager
Documentation=https://prometheus.io/
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
User=root
ExecStart=/data/alertmanager/bin/alertmanager --storage.path="/data/alertmanager/data/" \
--config.file=/data/alertmanager/conf/alertmanager.yml \
--web.external-url=http://x.x.x.x:9093
Restart=always
RestartSec=1
# Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 启动 并 开机自启 如果无法启动 检查启动用户
systemctl enable alertmanager && systemctl start alertmanager
# 重新加载配置
kill -SIGHUP $(pidof alertmanager)
参数 | 描述 |
---|---|
--config.file="alertmanager.yml" | 指定Alertmanager配置文件路径 |
--storage.path="data/" | Alertmanager的数据存放目录 |
--data.retention=120h | 历史数据保留时间,默认为120h |
--alerts.gc-interval=30m | 警报gc之间的间隔 |
--web.external-url=WEB.EXTERNAL-URL | 外部可访问的Alertmanager的URL(例如Alertmanager是通过nginx反向代理) |
--web.route-prefix=WEB.ROUTE-PREFIX | wen访问内部路由路径,默认是 --web.external-url |
--web.listen-address=":9093" | 监听端口,可以随意修改 |
--web.get-concurrency=0 | 并发处理的最大GET请求数,默认为0 |
--web.timeout=0 | web请求超时时间 |
--cluster.listen-address="0.0.0.0:9094" | 集群的监听端口地址。设置为空字符串禁用HA模式 |
--cluster.advertise-address=CLUSTER.ADVERTISE-ADDRESS | 配置集群通知地址 |
--cluster.gossip-interval=200ms | 发送条消息之间的间隔,可以以增加带宽为代价更快地跨集群传播 |
--cluster.peer-timeout=15s | 在同级之间等待发送通知的时间 |
--log.level=info | 自定义消息格式 [debug, info, warn, error] |
--log.format=logfmt | 日志消息的输出格式: [logfmt, json] |
--version | 显示版本号 |
3、Prometheus 配置
###告警组件调用
alerting:
alertmanagers:
- static_configs:
- targets: ["x.x.x.x:9093"]
###告警规则
rule_files:
- ./rule/*.yml
# - "first_rules.yml"
# - "second_rules.yml"
- name: it-load5m
rules:
- alert: "负载过高(5分钟)"
expr: node_load5{instance =~ "node-10.106.57.15[12]"} > 16
for: 1m
labels:
env: "{{ $labels.instance }}"
app: 资源
annotations:
description: "{{ $labels.instance }} ({{ $labels.role }}) 的负载(5分钟)超过16,当前值:{{ $value }}"
------------- 探针告警规则
- name: node-export
rules:
- alert: "node-export 探针未启动或引擎宕机"
expr: up{job=~"prometheus"} == 0
for: 1m
labels:
env: 生产环境
app: 监控
annotations:
description: "{{ $labels.instance }} ({{ $labels.role }})探针未启动或引擎宕机,请及时进行检查,当前值:{{ $value }}"
----------------------------- 磁盘
- name: 磁盘
rules:
- alert: "磁盘使用率超过80%"
expr: (1 - (node_filesystem_free_bytes{job=~'prometheus',fstype=~"ext4|xfs"} / node_filesystem_size_bytes{job=~'prometheus',fstype=~"ext4|xfs"})) * 100 >= 80
for: 1m
labels:
env: 生产环境
app: 监控
annotations:
description: "{{ $labels.instance }} ({{ $labels.role }})磁盘使用率超过80%,请及时进行处理,当前值:{{ $value }}"
---------------------- 内存
- name: 内存告警
rules:
- alert: "内存告警"
expr: (100 - 100 * windows_os_physical_memory_free_bytes{job=~"Windows"} / windows_cs_physical_memory_bytes{job=~"Windows"}) > 90
for: 1m
labels:
env: 生产环境
app: windows
annotations:
description: "{{ $labels.instance }} ({{ $labels.role }}) 内存使用率超过90%,请及时进行检查,当前值:{{ $value }}"
------------------------- cpu
- name: CPU告警
rules:
- alert: "CPU告警"
expr: (100 - (avg by (instance) (irate(windows_cpu_time_total{job=~"Windows",mode="idle"}[2m])) * 100)) > 90
for: 1m
labels:
env: 生产环境
app: windows
annotations:
description: "{{ $labels.instance }} ({{ $labels.role }}) CPU 使用率超过90%,请及时进行检查,当前值:{{ $value }}"
4、告警规则配置
-------------------------------- 探测所有 探针-------------------
- name: node
rules:
- alert: "探针未启动"
expr: up == 0
for: 1m
labels:
env: 生产
app: 主机资源
annotations:
description: "{{ $labels.instance }} ({{ $labels.role }})探针未启动或宕机,当前值:{{ $value }}"
------------------------------- 探测指定探针——————————————————————
- name: node-exporter-record
rules:
- alert: "服务器宕机"
expr: up{job=~"Windows"} == 0
labels:
env: 实业生产NC
app: 主机状态
annotations:
description: "{{ $labels.instance }} ({{ $labels.role }})服务器宕机,当前值:{{ $value }}"