获课:yinheit.xyz/14474/
获取ZY↑↑方打开链接↑↑
Prometheus 简介1
Prometheus 是由前 Google 工程师从 2012 年开始在 Soundcloud 以开源软件形式研发的系统监控和告警工具包。2016 年 5 月加入 CNCF 基金会,成为继 Kubernetes 之后的第二个 CNCF 托管项目。
优势:拥有由指标名称和键 / 值对标签标识的多维数据模型;具备强大的查询语言 PromQL;不依赖分布式存储,单个服务节点具有自治能力;时间序列数据通过服务端 HTTP 协议主动拉取获得,也可通过中间网关推送;支持多种类型的图表和仪表盘。
组件及功能1
Prometheus Server:负责收集指标和存储时间序列数据,并提供查询接口。
监控目标:类比于 Zabbix Agent,是 Prometheus 要监控的对象。
短期存储:用于临时性任务或自定义监控等度量值。
Server discovery:支持动态配置服务监控,无需重启 Prometheus Server。
报警功能:支持邮件、微信、钉钉等多种报警方式。
Web 查询接口:需写 PromQL 语句,后期可用 Grafana 替换。
部署与配置
使用 Docker 部署 Prometheus:
bash
mkdir -p /data/prometheus/{data,config}
docker run -d --name=prometheus \
-p 9090:9090 \
-v /data/prometheus/data:/prometheus \
-v /data/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus:v2.47.1 --web.enable-lifecycle
关键配置参数说明:--web.enable-lifecycle:启用配置热加载,避免服务重启。通过 volume 挂载保证配置和数据持久化,推荐固定版本号避免版本漂移问题。
Prometheus 配置文件优化:
yaml
global:
scrape_interval: 15s
evaluation_interval: 30s
alerting:
alertmanagers:
- scheme: http
static_configs:
- targets: ('alertmanager:9093')
rule_files:
- /etc/prometheus/rules/*.yaml
scrape_configs:
- job_name: 'prometheus'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ('host.docker.internal:9090')
监控指标与 PromQL
CPU 使用率计算:100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100 )
内存利用率计算:(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
智能告警体系建设
分级告警规则示例:紧急级别(Critical):
yaml
- alert: HostOutOfMemory
expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes < 0.05
for: 3m
labels:
severity: critical
annotations:
summary: "{{ $labels.instance }} 内存耗尽 (当前值: {{ $value }}%)"
黄金指标(Golden Signals):
yaml
- alert: APIHighErrorRate
expr: sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.1
for: 5m
与其他工具集成2
Prometheus 可以与 Grafana、Alertmanager 等工具集成。Grafana 用于数据可视化,提供更丰富的图表和仪表盘展示;Alertmanager 用于管理告警,实现告警的分组、抑制、静默等功能,还可将告警发送到多种渠道,如邮件、即时通讯工具等。