搭建监控平台(二)
前言
在上一篇博文中,我们完成了监控平台的初步搭建。 但光有监控还不够,在 OOM、磁盘即将满、BTRFS 出现错误等情况时, 我们可能会因为未能及时监控到而导致服务器出现异常。 为了解决这个问题,我们可以利用 Prometheus 的告警功能,对一些常见异常情况设置告警规则。 并经由 Alertmanager 进行统一管理并转发。 本博文拟针对一些常见情况设置自动告警,并经由 Alertmanager 往指定邮箱发送告警邮件。
配置 Prometheus
关联 Alertmanager
在正式设置警告规则前,我们应该关联 Prometheus 与 Alertmanager, 让 Prometheus 正确向 Alertmanager 发送告警信息:
alerting: alertmanagers: - static_configs: - targets: ['localhost:9093']配置告警规则
首先,应该创建一个子目录用于维护告警规则:
mkdir -p /etc/prometheus/rules然后在配置文件引入这个目录:
rule_files: - '/etc/prometheus/rules/*.yml'接着我们创建相关的告警规则:
groups: - name: hostStatsAlert rules: - alert: CPUHighUse expr: '(1 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]))) * 100 > 85' - alert: DiskFull expr: 'node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} < 0.15' - alert: MemoryLow expr: 'node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes < 0.15' - alert: NodeDown expr: 'up == 0'然后重启 Prometheus:
systemctl restart prometheus安装并配置 Alertmanager
Alertmanager 同样可以直接通过发行版仓库安装。
紧接着对其进行简单配置,让它通过指定的 Gmail 邮箱向目标邮箱发送告警邮件:
global: smtp_smarthost: smtp.gmail.com:587 smtp_from: <发送邮箱地址> smtp_auth_username: <发送邮箱用户名> smtp_auth_password: <发送邮箱密码>
route: group_by: ['alertname'] group_wait: 30s group_interval: 5m repeat_interval: 1h receiver: 'email'
receivers: - name: email email_configs: - to: <接收邮箱地址> send_resolved: true
inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']然后启动 Alertmanager:
systemctl enable --now alertmanager