7.1 KiB
7.1 KiB
title, type, tags, date
| title | type | tags | date | ||||
|---|---|---|---|---|---|---|---|
| 家庭监控方案:Prometheus + Grafana + Node Exporter + cAdvisor + Blackbox | source |
|
2025-11-11 |
Source File
Summary (中文描述)
- 核心主题:家庭/家居服务器(NAS / Ubuntu Server)的一站式开源监控方案,通过 Docker Compose 快速部署完整的 Prometheus 监控栈。
- 问题域:如何对家庭服务器的主机层、容器层、服务层(HTTP 可用性、TLS 证书)进行全面的指标采集、存储、可视化和告警。
- 方法/机制:使用 Prometheus 作为时序数据库和告警规则引擎,node_exporter 采集主机指标,cAdvisor 采集容器资源,blackbox_exporter 做 HTTP/TLS 探测,Grafana 做可视化仪表盘,Alertmanager 分发告警到邮件/Slack。配合 Uptime Kuma 做合成可用性监控。
- 结论/价值:提供可直接拷贝的 docker-compose 模板、prometheus.yml、alerts.yml、alertmanager.yml,8 步落地路径,涵盖 PoC 验证到生产级部署的全流程。
Key Claims (中文描述)
- Prometheus 通过 pull 模式定期抓取 node_exporter / cAdvisor / blackbox_exporter 暴露的指标,实现主机/容器/网络探测的统一采集。
- Grafana 可通过 Dashboard ID(如 Node Exporter Full: 1860)直接导入官方仪表盘,快速搭建可视化界面。
- Blackbox Exporter 通过
probe_success == 0和probe_ssl_earliest_cert_expiry等指标实现 HTTP 可用性和 TLS 证书到期监控。 - node_exporter 以 host network 模式运行,挂载
/proc、/sys、/为只读卷,实现无代理(agentless)主机指标采集。 - Docker socket 挂载(如 cAdvisor 中的
/var/run/docker.sock)是容器监控的必要条件,但需审慎评估安全风险。 - Alertmanager 支持邮件/Slack/Teams/Webhook/PagerDuty 等多通道告警路由,并提供告警抑制(inhibition)和分组(grouping)功能。
Key Quotes
"Prometheus 通过 pull 模式定期抓取 exporters 采集指标,支持 PromQL 命名与告警规则。适合做主观测时序库与告警。" — Prometheus 核心机制说明
"Docker socket 挂载(风险:容器拿到宿主机 root 等同权限)。" — 安全警告
"把监控流量/端口放在管理 VLAN 或通过防火墙限定访问。" — 网络安全建议
"Grafana 仪表盘 JSON 导出,Prometheus rule 与配置放在 Git(GitOps)。" — 配置备份最佳实践
Key Concepts
- Prometheus:开源时序数据库和监控告警系统,支持 PromQL 查询语言和告警规则引擎
- Grafana:开源可视化平台,支持多数据源仪表盘和告警管理
- node_exporter:Prometheus 官方主机指标采集器,采集 CPU/内存/磁盘/网络/I/O 等系统指标
- cAdvisor:Google 开源的容器资源监控工具,为 Prometheus 提供容器级别指标
- blackbox_exporter:Prometheus 官方黑盒探测 exporter,支持 HTTP/TCP/ICMP/DNS/TLS 探测
- Alertmanager:Prometheus 告警分发组件,支持告警分组、抑制、静默和多通道路由
- PromQL:Prometheus Query Language,用于查询时序指标和告警条件
- Uptime Kuma:自托管 uptime monitoring 工具,支持 HTTP/TCP/DNS/TLS 合成监控
- Netdata:开箱即用的实时主机/容器监控面板,默认 19999 端口,适合快速诊断
- VictoriaMetrics:Prometheus 时序数据库替代方案,支持长期存储和高效写入
- 合成监控(Synthetic Monitoring):通过模拟真实用户请求检测服务可用性和响应时间
- Exporter:Prometheus 生态中负责暴露指标数据的组件,通过 HTTP 端点提供 /metrics
- 时序数据库(Time Series Database):专门存储带时间戳的指标数据,支持高效的时间范围查询和聚合
- Prometheus告警规则:YAML 格式的告警条件定义,基于 PromQL 表达式触发状态变更
Key Entities
- Prometheus(CNCF 项目):时序数据库 + 监控告警平台核心
- Grafana Labs:Grafana 背后的公司和维护组织
- Docker:所有组件的部署平台,通过 Docker Compose 实现一键启动
- Uptime Kuma(louislam/uptime-kuma):开源 uptime monitoring 工具
- Portainer:Docker 可视化管理工具,不替代 Prometheus 但便于运维快速操作
Connections
- Prometheus ← 数据源 ← node_exporter
- Prometheus ← 数据源 ← cAdvisor
- Prometheus ← 数据源 ← blackbox_exporter
- Grafana ← 可视化 ← Prometheus
- Alertmanager ← 告警接收 ← Prometheus
- Prometheus ← 告警规则 ← Prometheus告警规则
- Grafana ← 仪表盘模板 ← Node Exporter Full Dashboard
- Docker Compose ← 编排 ← 所有组件(Prometheus / Grafana / Alertmanager / node_exporter / cAdvisor / blackbox_exporter)
Contradictions
- 与 系统监控工具(Btop++ / Htop / Glances / Netdata)相比:Netdata 适合实时短期诊断,Prometheus + Grafana 适合长期存储和趋势分析,两者可互补使用而非互斥。
- 与 ctp-topic-42-grafana-observability-dashboard 冲突:该来源标注为 expected(source missing),但内容为 Grafana 在 AWS 场景下的企业级应用;本来源侧重家庭服务器轻量部署,场景和规模不同。
- 与 ctp-topic-67-cloud-native-observability-using-opentelemetry 冲突:OpenTelemetry 是云原生可观测性新标准(metrics/traces/logs 三合一),Prometheus 生态更成熟但 OpenTelemetry 是未来方向;短期用 Prometheus,长期可考虑 OTel 迁移路径。
Docker Compose 核心架构
# 监控栈组件
services:
prometheus: # 时序数据库 + 告警引擎
grafana: # 可视化仪表盘
alertmanager: # 告警分发
node_exporter: # 主机指标(host network)
cadvisor: # 容器指标(挂载 /var/run/docker.sock)
blackbox: # HTTP/TCP 探测
关键监控项(PromQL 示例)
| 指标 | PromQL 表达式 | 阈值 |
|---|---|---|
| 磁盘空间 | node_filesystem_avail_bytes / node_filesystem_size_bytes < 0.10 |
< 10% |
| CPU 使用率 | avg(rate(node_cpu_seconds_total[2m])) * 100 > 85 |
> 85% |
| 内存可用 | node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes < 0.15 |
< 15% |
| HTTP 可用性 | probe_success == 0 (持续 2min) |
探测失败 |
| TLS 证书到期 | probe_ssl_earliest_cert_expiry - time() < 86400 * 14 |
< 14 天 |
落地 8 步路径
- 用 PoC docker-compose 启动 Netdata + Uptime Kuma(19999 / 3001)验证
- 上线 Prometheus + prometheus.yml,配置 scrape_configs
- 每台主机部署 node_exporter(host network 模式)
- Grafana 导入 Dashboard(1860 / 14282 / 7587)
- Alertmanager 配置告警路由(邮件/Slack)
- Uptime Kuma 建好所有内外网探测项
- GitOps 配置管理(Grafana JSON 导出,Prometheus rules 放 Git)
- TLS 证书到期告警(blackbox_exporter 或 Uptime Kuma)