引言
Prometheus是云原生监控的标准。本文介绍Prometheus的使用和告警配置。
一、Prometheus安装
1 2 3 4 5 6 7 8 9
| wget https://github.com/prometheus/prometheus/releases/download/v2.40.0/prometheus-2.40.0.linux-amd64.tar.gz
tar -xvf prometheus-2.40.0.linux-amd64.tar.gz cd prometheus-2.40.0.linux-amd64
./prometheus --config.file=prometheus.yml
|
二、监控配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| global: scrape_interval: 15s evaluation_interval: 15s
scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']
- job_name: 'node' static_configs: - targets: ['localhost:9100'] labels: instance: 'server-1'
- job_name: 'spring-boot' metrics_path: '/actuator/prometheus' static_configs: - targets: ['localhost:8080']
|
三、告警规则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| groups: - name: example rules: - alert: HighCpuUsage expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: "High CPU usage on {{ $labels.instance }}" description: "CPU usage is {{ $value }}%"
- alert: HighMemoryUsage expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 80 for: 5m labels: severity: warning annotations: summary: "High memory usage on {{ $labels.instance }}"
- alert: ServiceDown expr: up == 0 for: 1m labels: severity: critical annotations: summary: "Service {{ $labels.job }} is down"
|
四、Alertmanager配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| global: smtp_smarthost: 'smtp.gmail.com:587' smtp_from: 'alert@example.com' smtp_auth_username: 'alert@example.com' smtp_auth_password: 'password'
route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'email'
receivers: - name: 'email' email_configs: - to: 'admin@example.com'
- name: 'webhook' webhook_configs: - url: 'http://example.com/alert'
|
五、常用PromQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # CPU使用率 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# 内存使用率 (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
# 磁盘使用率 (node_filesystem_size_bytes - node_filesystem_free_bytes) / node_filesystem_size_bytes * 100
# HTTP请求速率 rate(http_requests_total[5m])
# 请求错误率 rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m])
|
总结
Prometheus监控核心:
- 指标采集:Pull模型
- PromQL:强大的查询语言
- 告警规则:灵活配置
- Grafana:可视化展示
参考资料