prometheus 覆盖 linux 全链路的关键是分层建模:1. 基础资源层用 node_exporter 采集内核指标并标准化标签;2. 进程服务层结合 blackbox_exporter、process-exporter 和日志转指标;3. 业务层通过统一标签打通应用与系统指标;4. 可视化与告警需带上下文和根因分析。

要让 Prometheus 真正覆盖 Linux 系统的全链路,关键不是堆 exporter,而是分层建模:从内核资源、进程行为、服务状态到业务指标,每一层都得有对应的数据源和标签维度。
1. 基础资源层:用 node_exporter 打牢底座
node_exporter 是 Linux 监控的事实标准,它直接读取 /proc 和 /sys,不依赖额外代理。默认暴露 9100 端口,采集超 90 类指标,包括 CPU 时间片分布、内存页回收率、磁盘 I/O 队列深度、网络连接状态等。
- 必须启用的采集器:–collector.systemd(服务运行状态)、–collector.textfile(自定义指标落盘)、–collector.netstat(TCP 连接统计)
- 避免高频抖动:将 scrape_interval 设为 15s,对 disk 和 netdev 类指标可单独设为 30s
- 标签标准化:在 prometheus.yml 中通过 relabel_configs 为 target 添加 instance、region、env 标签,便于后续多维下钻
2. 进程与服务层:补充 blackbox_exporter + custom exporter
node_exporter 只管系统级,但具体服务是否健康、响应是否达标,得靠主动探测和进程内埋点。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- HTTP/HTTPS/TCP 探测:用 blackbox_exporter 检查 nginx、ssh、数据库端口连通性与响应时长,配合 probe_success 和 probe_duration_seconds 指标设超时告警
- 关键进程存活:通过 node_systemd_unit_state{unit=~"nginx|mysql|redis.*"} != 0 判断 systemd 服务状态;对非 systemd 进程(如 Java 应用),可用 process-exporter 抓取 PID、CPU、RSS 内存等
- 日志异常模式识别:结合 filebeat + prometheus-log-exporter,把 error/warn 日志行转成 counter,例如 mysql_error_log_total{type="connection_timeout"}
3. 业务逻辑层:打通应用指标与系统指标的关联
真正的“全链路”,是能把一次用户请求的延迟,映射到某台机器的 CPU 尖峰、某个磁盘的 IO 等待、某条 SQL 的执行时间上。这需要统一标签体系和上下文传递。
- Java 应用:接入 micrometer + prometheus-simpleclient,暴露 jvm_memory_used_bytes、http_server_requests_seconds_sum 等指标,并通过 common labels 加入 service_name、instance_id、cluster_zone
- Go 应用:用 promhttp.Handler() 暴露 /metrics,配合 otel-go 自动注入 trace_id 到 metrics label(需开启 trace propagation)
- 指标对齐:确保所有 exporter 输出的 instance 标签与 node_exporter 一致(如都用 hostname 或 IP),否则 Grafana 无法 cross-join 关联
4. 可视化与告警闭环:不止看图,更要定位根因
面板和告警不是终点,而是问题发现的第一步。真正覆盖全链路,得让每个告警自带上下文线索。
- Grafana 面板分三层:资源层(CPU/Mem/Disk)、服务层(HTTP 5xx rate、MySQL slow query count)、业务层(订单创建失败率、支付成功率)
- 告警规则带 link:在 alert rule 的 annotations 中写 'runbook_url: https://wiki.example.com/alerts/cpu-high',并嵌入 PromQL 表达式变量,如 {{ $labels.instance }}
- 根因推荐:在 Alertmanager 的 webhook 中调用轻量分析脚本,自动查出该 instance 最近 5 分钟 top3 CPU 进程、磁盘 await > 100ms 的设备、以及对应时间窗口的 error 日志关键词










