prometheus + alertmanager 实现报警
1. 部署alertmanager
- 镜像 prom/alertmanager
- 配置文件在 /etc/alertmanager/alertmanager.yml
alertmanager.yml: |
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'default'
receivers:
- name: "default"
webhook_configs:
- url: "http://192.168.0.103:5002/api/hooks"
send_resolved: false
- 由于没有企业微信、也懒得配置邮件,就先用webhook测试。
- group_by 表示分组,alertname 是 prometheus 中配置的 rule 的名称,如下:memory_too_high、cpu_too_high、disk_will_full
2. 配置prometheus
prometheus.yml: |
global:
scrape_interval: 30s
scrape_timeout: 30s
alerting:
alertmanagers:
- static_configs:
- targets: ["prometheus-alertmanager-svc:9093"]
rule_files:
- "alertmanager_rules.yml"
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'k8s-node'
static_configs:
- targets:
- 192.168.0.200:9100
- 192.168.0.201:9100
- alerting 节点配置 alertmanager的地址
- rule_files 节点配置 告警的 rule 文件,比如监控cpu、内存、硬盘的监控
alertmanager_rules.yml: |
groups:
- name: node-alert
rules:
- alert: node-up
expr: up{job="node-exporter"} == 0
for: 15s
labels:
severity: 1
team: node
annotations:
summary: "{{ $labels.instance }} 已停止运行超过 15s!"
- alert: memory_too_high
expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes)))* 100 > 90
for: 10s # 告警持续时间,超过这个时间才会发送给alertmanager
labels:
severity: warning
annotations:
summary: "Instance {{ $labels.instance }} 内存使用率过高"
description: "{{ $labels.instance }} of job {{$labels.job}}内存使用率超过90%,当前使用率[{{ $value }}]."
- alert: cpu_too_high
expr: 100-avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)*100 > 80
for: 1m
labels:
severity: warning
annotations:
summary: "Instance {{ $labels.instance }} cpu使用率过高"
description: "{{ $labels.instance }} of job {{$labels.job}}cpu使用率超过80%,当前使用率[{{ $value }}]."
- alert: disk_will_full
expr: 100 - node_filesystem_avail_bytes{fstype=~"ext4|xfs",mountpoint="/"} * 100 / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} > 80
for: 1m
labels:
severity: warning
annotations:
summary: "Instance {{ $labels.instance }} disk使用率过高"
description: "{{ $labels.instance }} of job {{$labels.job}}disk使用率超过80%,当前使用率[{{ $value }}]."
- $labels 可获得数据的标签
- $value 可获得[expr]计算的值
分类:
k8s
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫