运维监控软件手册
按「监控软件 / 平台」拆分的详细手册:一个软件一篇,共 25 篇,分 7 类,约 1.1 万行。
每篇都是完整的「介绍 + 使用方法 + 配置说明 + 实战 + 排障 + 速查」,不是命令清单。
与 《运维工具手册》 互补:那边按命令行小工具讲"这台机器现在卡在哪",这边按平台讲"怎么把整个环境长期监控起来、告警怎么发、数据留多久"。
怎么用
每篇统一结构:它解决什么问题 → 核心概念与架构 → 安装与部署 → 配置文件详解 → 核心使用方法 → 告警与通知 → 实战场景 → 日常运维与故障排查 → 性能容量与高可用 → 安全加固备份升级 → 常见坑 → 速查表 → 选型建议与同类对比 → 参考链接。
监控体系分层
任何一套监控,本质都是下面这条链路。本手册的分类就是按链路上的位置切的:
┌── 采集层 ──────────┐ ┌── 存储层 ──────────┐ ┌── 查询/可视化 ──┐ ┌── 告警与触达 ──┐
│ Node Exporter │ │ Prometheus TSDB │ │ PromQL / LogQL │ │ Alertmanager │
│ Categraf / Telegraf│ │ VictoriaMetrics │ │ KQL / Flux │ │ Grafana Alert │
│ Zabbix Agent │─▶│ Thanos + 对象存储 │─▶│ Grafana / Kibana│─▶│ 各平台规则引擎 │─▶ 企微/钉钉/邮件
│ Filebeat / Alloy │ │ Elasticsearch │ │ 状态页 / 大盘 │ │ 静默 / 升级 │ / On-call
│ cAdvisor / 探针 │ │ Loki / InfluxDB │ │ │ │ │
└────────────────────┘ └────────────────────┘ └─────────────────┘ └────────────────┘
01 / 03 / 04 / 05 / 06 分类 01 / 04 分类 02 分类 01 / 02 / 03 分类
关键认知:组件分工,没有银弹。Prometheus 只评估告警不发送通知,不渲染大盘;Grafana 不存指标;Kibana 不采日志;Loki 不索引日志全文。把它们按链路拼起来,才是"一套监控"。
分类索引
01 指标采集与时序存储(6 篇)
| 软件 |
一句话定位 |
典型场景 |
| Prometheus |
pull 模型指标采集 + 本地 TSDB + PromQL,云原生事实标准 |
自建监控的起点,容器与 K8s 指标底座 |
| Node Exporter |
把主机 CPU/内存/磁盘/网络/文件系统暴露成 /metrics |
每台 Linux 必装,含 Exporter 生态综述 |
| Alertmanager |
告警分组、抑制、静默、路由树与通知渠道 |
告警风暴治理、按团队分流、值班升级 |
| VictoriaMetrics |
兼容 Prometheus 的高压缩比时序库,含 vmagent / vmalert |
单机扛大规模序列、长期留存降本、替换 Prometheus 存储 |
| Thanos |
Prometheus 长期存储、跨集群全局查询与降采样 |
已有多套 Prometheus,要统一查询与对象存储归档 |
| InfluxDB 与 Telegraf |
push 型 TICK 栈:采集代理 + 时序库 + 保留策略 |
IoT / 业务指标 / 传统监控改造,需要 push 模型 |
02 可视化与告警呈现(3 篇)
| 软件 |
一句话定位 |
典型场景 |
| Grafana |
多数据源统一大盘、变量、Provisioning 与统一告警 |
所有监控栈的默认展示层,配置即代码 |
| Kibana |
Elasticsearch 的 Discover / Lens / Dashboard 与 KQL |
日志检索、临时捞数、报错分布分析 |
| Uptime Kuma |
轻量 HTTP/TCP/Ping/DNS 拨测 + 公开状态页 |
外部视角可用性探测,几十个站点半小时搭好 |
03 一体化监控平台(6 篇)
| 软件 |
一句话定位 |
典型场景 |
| Zabbix |
采集+存储+触发器+告警+Web 全包,模板与自动发现成熟 |
传统机房、网络设备、大规模主机纳管 |
| Nagios |
插件式状态检查鼻祖,对象定义 + NRPE + 告警升级 |
存量老系统维护、轻量可用性检查 |
| Checkmk |
规则驱动的自动发现与批量纳管,配置效率极高 |
上千台主机统一规则管理,替代手工加监控项 |
| Netdata |
秒级单机监控 + 自带 Web 大盘 + 零配置健康检查 |
单机应急排障、临时巡检、Parent 集中汇总 |
| 夜莺 Nightingale |
国产开源,兼容 Prometheus 生态,配 Categraf 采集 |
信创/内网环境、需要中文界面与国产化适配 |
| Cacti |
SNMP + RRDtool 的网络流量绘图老将 |
交换机/路由器端口流量、专线带宽趋势 |
04 日志监控与分析(4 篇)
| 软件 |
一句话定位 |
典型场景 |
| Elasticsearch |
全文检索与聚合底座,索引模板 / ILM / 集群 |
日志量大、需要任意字段检索与复杂聚合 |
| Logstash |
pipeline 型日志加工:Grok、mutate、多输出 |
脏日志结构化、字段补齐、多来源汇聚 |
| Filebeat |
轻量采集端,filestream / modules / K8s autodiscover |
每台应用机部署,低开销送日志 |
| Loki |
只索引标签、不索引全文,LogQL 与 Grafana 原生打通 |
成本敏感、按服务/标签查日志,PLG 栈 |
05 APM 与链路追踪(2 篇)
| 软件 |
一句话定位 |
典型场景 |
| SkyWalking |
国产 APM:无侵入探针、服务拓扑、慢调用与告警 |
Java/Go 微服务性能定位、调用链与指标一体 |
| Jaeger |
分布式链路追踪,已转向 OpenTelemetry Collector |
跨服务 Trace 排查、OTel 标准化接入 |
06 容器与云原生监控(2 篇)
| 软件 |
一句话定位 |
典型场景 |
| kube-prometheus-stack |
Prometheus Operator + CRD + 全家桶一键装机 |
K8s 集群监控标配,ServiceMonitor 自动发现 |
| cAdvisor |
容器 cgroup 资源指标采集 |
理解容器指标来源、单机容器资源排障 |
07 商业与云监控(2 篇)
典型组合方案
方案 A:最小可用监控(10~50 台,1 人维护)
Node Exporter(每台) ──pull──► Prometheus ──► Alertmanager ──► 企业微信/钉钉/邮件
│
└──► Grafana(大盘 + 统一告警)
外部可用性:Uptime Kuma(独立部署,别和被监控对象放同一机房)
部署顺序:Node Exporter → Prometheus(先配 static_configs)→ Grafana 导入 Node Exporter 大盘 → Alertmanager → 告警规则(先只配「主机 down / 磁盘 >85% / 内存 >90%」三条)→ Uptime Kuma。
关键端口:9100 / 9090 / 3000 / 9093 / 3001。
取舍:Prometheus 本地盘默认保留 15 天;要长期留存再叠 VictoriaMetrics 或 Thanos,别一上来就上分布式。
方案 B:Kubernetes 多集群(云原生团队)
kube-prometheus-stack(Operator + Prometheus + Alertmanager + Grafana + node-exporter + kube-state-metrics)
│ remote_write │
▼ ▼
VictoriaMetrics 或 Thanos(对象存储) Loki + Alloy/Promtail(日志)
│ │
└──────────────► Grafana 统一数据源 ◄───┘
告警:PrometheusRule / Loki Ruler → Alertmanager → 按 namespace 路由到业务团队
部署顺序:Helm 装 kube-prometheus-stack → 用 ServiceMonitor 接入一个业务 → 验证 CRD 被 Operator 选中 → 再接长期存储 → 最后接日志与告警分流。
要点:ServiceMonitor 不生效是本方案最高频故障,排查链见该篇第 8 章;标签基数(cardinality)必须在接入业务前定规范。
方案 C:传统机房 / 信创内网
Zabbix 或 夜莺 Nightingale(采集 + 告警 + Web 一体)
├── Zabbix Agent / Categraf → 主机与进程
├── SNMP + Cacti → 交换机端口流量、专线带宽
└── Netdata → 单机秒级应急排障(临时启用,不长期留存)
告警 → 企业微信 / 短信 / 值班表;跨地域用 Zabbix Proxy 或夜莺边缘节点
要点:内网无外网时优先选可离线安装的发行版包/二进制;信创 CPU 与国产 OS 需实测镜像与依赖,各篇「常见坑」有说明;夜莺各版本架构变化大,先锁版本再写配置。
方案 D:日志 + APM 全栈(微服务)
应用日志 → Filebeat / Alloy → (Logstash 可选) → Elasticsearch → Kibana 【全文检索重】
应用日志 → Alloy / Promtail → Loki → Grafana 【成本敏感】
Java/Go 服务 → SkyWalking Agent 或 OTel SDK → OAP / Jaeger Collector → UI 【链路与性能】
三套数据用 trace_id 关联,Grafana 里从指标下钻到日志再到链路
要点:ELK 与 PLG 二选一即可,不要两套都上;统一 service.name / trace_id / 日志时间时区是关联的前提。
方案 E:云上 / 混合
云厂商监控(云产品指标 + 平台事件 + 账单告警) ─┐
自建 Prometheus(应用与业务指标) ├─► 统一 On-call / 告警收敛
Datadog 或托管 Prometheus(跨云聚合,可选) ─┘
要点:云监控拿不到应用内部指标,自建栈拿不到 RDS/SLB 平台侧指标,两者是互补不是替代;告警务必收敛到一个入口,否则值班会被三套通知淹没。
需求 → 工具决策表
| 需求 / 现象 |
首选 |
备选 |
不建议 |
| 几十台 Linux 要长期看 CPU/内存/磁盘 |
Prometheus + Node Exporter + Grafana |
Zabbix / 夜莺 |
只装 Netdata(不留存) |
| 传统机房、要管交换机与 SNMP |
Zabbix + Cacti(流量) |
Checkmk |
纯 Prometheus(SNMP 需额外 exporter) |
| 主机规模上千、要规则化批量纳管 |
Checkmk / Zabbix + Proxy |
夜莺 |
手工维护 static_configs |
| 单机突然卡了,要秒级定位 |
Netdata |
命令行工具手册 top/pidstat |
现搭 Prometheus(来不及) |
| 指标要留一年以上 / 多集群统一查询 |
Thanos 或 VictoriaMetrics |
InfluxDB |
只调大 Prometheus 本地保留期 |
| 日志量大、要按任意字段检索聚合 |
Elasticsearch + Filebeat + Kibana |
Graylog |
Loki(全文检索弱) |
| 日志按服务/标签查、预算有限 |
Loki + Alloy + Grafana |
ELK 精简版 |
Logstash 全量解析(资源重) |
| 外部判断网站是否真的可访问 |
Uptime Kuma |
Blackbox Exporter |
只靠机房内 Prometheus 自拉 |
| 微服务慢调用定位、看拓扑 |
SkyWalking |
Jaeger + OTel |
只看应用日志 |
| 要做标准化 Trace、避免厂商锁定 |
Jaeger v2 / OpenTelemetry |
SkyWalking |
私有埋点 SDK 硬编码 |
| K8s 集群整体监控 |
kube-prometheus-stack |
手工拼 Prometheus |
单机版 Zabbix |
| 云上 RDS/SLB 指标与平台事件 |
云厂商监控 |
各云托管 Prometheus |
自建 Agent 硬猜 |
| 没人运维监控、要快速见效 |
Datadog / 云托管可观测 |
托管 Prometheus |
自建 Thanos 全套 |
| 信创 / 内网离线 / 中文界面 |
夜莺 + Categraf |
Zabbix |
依赖外网 SaaS 的方案 |
| 告警太多、值班麻木 |
Alertmanager 分组/抑制/静默 |
Grafana 告警策略 |
继续加阈值 |
核心工具横向对比
指标与时序栈
| 维度 |
Prometheus |
VictoriaMetrics |
InfluxDB + Telegraf |
Zabbix |
夜莺 |
| 采集模型 |
pull(+ Pushgateway) |
pull(vmagent)/ 兼容 remote write |
push(Telegraf outputs) |
Agent 主动 / Server 拉取 |
Categraf push / 兼容 Prometheus |
| 数据模型 |
指标名 + 多维标签 |
同 Prometheus |
measurement + tag + field |
host + item + key |
指标 + 标签 |
| 查询语言 |
PromQL |
MetricsQL(PromQL 超集) |
InfluxQL / Flux |
触发器表达式 + 内置函数 |
PromQL 兼容 |
| 长期存储 |
本地 TSDB,需 remote write |
原生长期留存、高压缩 |
保留策略 + 降采样 |
关系库 + housekeeper |
依赖外部时序库 |
| 告警 |
规则评估 → Alertmanager |
vmalert → Alertmanager |
Kapacitor / 外部 |
内置触发器 + 媒介 + 升级 |
内置告警引擎 |
| 集群 HA |
双实例 + 外部长期存储 |
原生集群版 |
企业版集群 / 开源单节点 |
Server HA + Proxy |
多副本 + 外部库 |
| 学习成本 |
中(PromQL 是门槛) |
低(会 PromQL 就会) |
中 |
中高(概念多) |
低(中文界面) |
| 适合规模 |
单集群十万~百万序列 |
百万级以上 / 降本 |
中小规模、IoT |
数百~上万台主机 |
内网 / 信创 / 中小规模 |
一体化监控平台
| 维度 |
Zabbix |
Nagios |
Checkmk |
Netdata |
Cacti |
| 装完就能用 |
是(需配库与 Web) |
否(要手写对象定义) |
是(自动发现) |
是(零配置) |
是(需 SNMP 与模板) |
| 配置方式 |
Web 模板 / API |
文本文件 |
规则集 GUI |
配置文件 |
Web 模板 |
| 自动发现 |
LLD 强 |
弱 |
极强 |
自带 collector |
SNMP 扫描 |
| 可视化 |
内置 + 可接 Grafana |
需插件 |
内置 |
内置极强 |
RRD 流量图为主 |
| 数据留存 |
关系库,需分区清理 |
短(多靠插件) |
RRD + 历史 |
内存/短周期 |
RRD 固定精度 |
| 定位 |
通用大平台 |
存量 / 轻量检查 |
批量纳管效率 |
单机实时诊断 |
网络流量趋势 |
日志与 APM
| 维度 |
ELK(ES+Logstash+Filebeat+Kibana) |
PLG(Loki+Alloy+Grafana) |
SkyWalking |
Jaeger |
| 索引方式 |
全文倒排索引 |
仅标签索引 |
服务/实例/端点维度 |
Trace / Span |
| 资源开销 |
高(JVM、磁盘) |
低 |
中(OAP + 存储) |
中(Collector + 存储) |
| 查询能力 |
任意字段、复杂聚合 |
标签过滤 + 行内容过滤 |
拓扑、慢调用、指标 |
链路检索与依赖分析 |
| 上手难度 |
高 |
低(会 Grafana 就顺) |
中(探针挂载) |
中(需改造/接 OTel) |
| 适合 |
日志审计、检索密集 |
成本敏感、K8s 环境 |
Java/Go 服务性能治理 |
标准化 Trace、跨语言 |
Graylog、Fluent Bit、Vector、Tempo、Zipkin、Pinpoint 暂未单独成篇,见扩展计划。
默认端口与路径速查
均为默认端口,可被配置覆盖;同一组件不同版本可能有差异,以各篇第 3、12 章为准。
| 组件 |
默认端口 |
说明 / 主配置路径 |
| Prometheus |
9090 |
/etc/prometheus/prometheus.yml |
| Node Exporter |
9100 |
--collector.* 开关,通常无配置文件 |
| Alertmanager |
9093 |
/etc/alertmanager/alertmanager.yml |
| Pushgateway |
9091 |
仅短生命周期任务用 |
| Grafana |
3000 |
/etc/grafana/grafana.ini、provisioning 目录 |
| VictoriaMetrics |
8428 |
单节点 /api/v1/write、/prometheus/api/v1/query |
| Thanos |
10901 / 10902 |
各组件 gRPC / HTTP,另有 Receiver remote write 端口 |
| InfluxDB |
8086 |
/etc/influxdb/influxdb.conf(版本差异大) |
| Telegraf |
默认不监听 |
/etc/telegraf/telegraf.conf |
| Loki |
3100 |
loki-config.yaml,采集端 Alloy / Promtail |
| Elasticsearch |
9200 / 9300 |
HTTP / 节点间通信,elasticsearch.yml |
| Kibana |
5601 |
kibana.yml |
| Logstash |
5044 / 9600 |
Beats 输入 / 监控 API,pipelines.yml |
| Filebeat |
默认不监听 |
filebeat.yml |
| Zabbix Server / Agent |
10051 / 10050 |
zabbix_server.conf、zabbix_agentd.conf |
| Nagios NRPE |
5666 |
nagios.cfg + objects/*.cfg |
| Checkmk |
80/443(旧版 5000) |
OMD site 目录下 etc/check_mk/ |
| Netdata |
19999 |
/etc/netdata/netdata.conf、health.d/ |
| 夜莺 n9e |
17000 |
Web/API,Categraf conf/ 目录 |
| Cacti |
80/443;SNMP 161(被监控端) |
config.php、RRD 目录、spine |
| cAdvisor |
8080 |
/metrics,K8s 中常由 kubelet 内置暴露 |
| SkyWalking OAP / UI |
11800 / 12800,UI 8080 |
config/application.yml、agent agent.config |
| Jaeger / OTel Collector |
16686(UI)、4317/4318(OTLP) |
Collector pipeline YAML |
| Uptime Kuma |
3001 |
./data/ 数据目录,务必备份 |
| Datadog Agent |
8125(DogStatsD UDP)、8126(APM) |
/etc/datadog-agent/datadog.yaml |
通用约定与版本差异
$ 普通用户,# root 或 sudo,<xxx> 为占位符;⚠️ 标注危险操作,生产执行前先备份或 --dry-run。
- 命令默认 Linux(glibc + systemd);Alpine、国产 OS、信创 CPU 的差异在各篇「常见坑」里单独说明。
- 文中不绑定固定版本号与镜像 tag,一律写"以官方最新稳定版为准"。安装前到官方下载页/仓库确认当前版本,跨大版本升级先看官方迁移说明。
- 需要特别注意的版本差异(各篇已展开):
- Elasticsearch 8.x 起默认开启安全特性,首次启动要处理证书与内置用户密码;
- Grafana 使用 Unified Alerting,与旧版 Dashboard Alerting 配置方式不同;
- Loki 生态推荐用 Grafana Alloy 替代 Promtail,旧采集端有 EOL 时间点;
- Jaeger v2 基于 OpenTelemetry Collector,与 v1 组件模型不同;
- 夜莺 v5 / v6 / v9 架构与依赖变化较大,先锁版本再写配置;
- Kubernetes 中 cAdvisor 已内置于 kubelet,独立部署前先确认端口与指标路径;
- Zabbix 7.0 LTS、Checkmk Raw 与商业版、Nagios 与 Icinga 的功能边界均以官方文档为准。
- 所有规则与大盘纳入 Git:Prometheus rules、Grafana provisioning、Alertmanager 路由、Helm values 都应配置即代码,禁止只在 Web 上点。
- 监控系统自身必须被监控(meta-monitoring):Prometheus 抓取失败、Alertmanager 静默过期、磁盘剩余、采集延迟都要有独立告警通道,否则监控挂了没人知道。
监控上线检查清单
- 全链路 NTP/chrony 时钟同步已验证(指标被判未来时间会直接丢弃)。
- 保留期 × 采样频率 × 序列数算出磁盘需求,并预留 compaction/合并所需的额外空间。
- 标签规范已定稿,明确禁止把
user_id、request_id、trace_id 之类高基数字段做标签。
- 指标名、job、instance、service 命名统一,跨团队大盘口径一致(用 recording rule 固化)。
- 告警分级(P0~P3)与值班表、升级路径已确认;P0 走电话/短信,P3 只进群。
- 通知渠道已实测:企业微信/钉钉/Webhook 发一条测试告警,别等故障才发现 token 过期。
- 静默、抑制、分组、重复通知间隔已配置,能扛住一次机房级故障引发的告警风暴。
- 大盘有「全局概览 → 服务 → 单机」三层下钻路径,而不只是一堆曲线。
- 配置、大盘 JSON、告警规则、数据库已备份,并演练过一次恢复。
- 认证鉴权、TLS、最小权限、网络暴露面收敛完成;监控端口不对公网开放。
- 监控系统自身有独立告警通道(最好跨机房/跨云),避免"监控挂了无人知"。
- 做过一次告警演练(主动停一台非关键服务),验证从采集到通知全链路耗时。
- 容量与成本有上限:日志采样率、指标抓取间隔、对象存储生命周期策略都已设定。
- 文档沉淀:部署架构图、端口表、值班 SOP、常见故障处置,随配置一起进仓库。
与现有手册的关系
扩展计划
后续可按需增补,仍按「一个软件一篇、14 章结构」补齐:
- 采集与传输:Grafana Alloy、Fluent Bit、Vector、OpenTelemetry Collector、Blackbox Exporter、SNMP Exporter、windows_exporter、Pushgateway、statsd_exporter。
- 存储与查询:Grafana Mimir、Cortex、Tempo、ClickHouse(日志/Trace 存储)、TimescaleDB。
- 日志:Graylog、Fluentd、OpenSearch、Loki Ruler 深入实践。
- APM / 链路:Zipkin、Pinpoint、Pyroscope(持续性能剖析)、eBPF 可观测(Cilium Hubble、Pixie)。
- 网络与拨测:Smokeping、Blackbox Exporter 进阶、BGP/专线监控。
- 告警与 On-call:Grafana OnCall、PagerDuty、告警降噪与 SLO / Error Budget 实践。
- 平台与生态:Open-Falcon、蓝鲸智云、Wazuh(安全监控)、Prometheus 联邦与多租户治理、监控数据合规与信创适配。
本手册是通用参考,与具体环境强相关的部分(端口规范、保留期、通知渠道、备份路径、账号权限、值班分级)请替换为团队实际值,沉淀为内部 SOP 后再上生产。