Auto-sync: 2026-04-27 00:02

This commit is contained in:
2026-04-27 00:02:56 +08:00
parent 997e25aae6
commit 23bef113dd
30 changed files with 1454 additions and 1037 deletions

View File

@@ -1,101 +1,61 @@
---
title: "家庭监控方案Prometheus + Grafana + Node Exporter + cAdvisor + Blackbox"
type: source
tags: [grafana, monitoring, prometheus, home-server]
date: 2025-11-11
---
## Source File
- [[raw/Home Office/家庭监控方案Prometheus + Grafana + Node Exporter + cAdvisor +Blackbox.md]]
## 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.yml8 步落地路径,涵盖 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 与配置放在 GitGitOps。" — 配置备份最佳实践
## 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]] 冲突:该来源标注为 expectedsource missing但内容为 Grafana 在 AWS 场景下的企业级应用;本来源侧重家庭服务器轻量部署,场景和规模不同。
- 与 [[ctp-topic-67-cloud-native-observability-using-opentelemetry]] 冲突OpenTelemetry 是云原生可观测性新标准metrics/traces/logs 三合一Prometheus 生态更成熟但 OpenTelemetry 是未来方向;短期用 Prometheus长期可考虑 OTel 迁移路径。
## Docker Compose 核心架构
```yaml
# 监控栈组件
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 步路径
1. 用 PoC docker-compose 启动 Netdata + Uptime Kuma19999 / 3001验证
2. 上线 Prometheus + prometheus.yml配置 scrape_configs
3. 每台主机部署 node_exporterhost network 模式)
4. Grafana 导入 Dashboard1860 / 14282 / 7587
5. Alertmanager 配置告警路由(邮件/Slack
6. Uptime Kuma 建好所有内外网探测项
7. GitOps 配置管理Grafana JSON 导出Prometheus rules 放 Git
8. TLS 证书到期告警blackbox_exporter 或 Uptime Kuma
---
title: "家庭监控方案Prometheus + Grafana + Node Exporter + cAdvisor + Blackbox"
type: source
tags: [prometheus, grafana, monitoring, docker, home-server]
date: 2025-11-11
---
## Source File
- [[Home Office/家庭监控方案Prometheus + Grafana + Node Exporter + cAdvisor +Blackbox]]
## Summary(用中文描述
- 核心主题:家庭/小型服务器监控的完整 Docker 化解决方案
- 问题域:主机层、容器层、服务层的可观测性覆盖,以及告警通知渠道
- 方法/机制Prometheus 拉取模式采集 + Grafana 可视化 + Alertmanager 告警分发;通过 node_exporter、cAdvisor、blackbox_exporter 三个 exporter 覆盖主机、容器和网络探测;提供可直接拷贝的 docker-compose 完整模板
- 结论/价值:面向 NAS / Ubuntu Server 用户的零门槛可落地监控栈,含具体 PromQL 告警规则和 Grafana Dashboard ID
## Key Claims(用中文描述
- Prometheus + node_exporter + cAdvisor + blackbox_exporter + Grafana + Alertmanager 的组合可覆盖家庭服务器的完整监控面
- 主机层监控 CPU / 内存 / 磁盘 / 网络 / I/O / inode容器层监控运行状态、重启次数、资源使用服务层监控 HTTP 可用性、响应码、延迟、TLS 证书到期、DNS 解析
- TLS 证书剩余天数 < 14 天应触发告警
- 黑箱探测 `probe_success == 0` 连续 3 次应触发告警
- Docker socket 挂载存在宿主机 root 等效权限风险,需审慎处理
- Grafana 官方 Dashboard IDNode Exporter Full (`1860`)、cAdvisor Container Metrics (`14282`)、Blackbox Exporter Probe (`7587`)
## Key Quotes
> "Docker socket 挂载存在宿主机 root 等效权限风险" — 容器安全注意事项
> "Prometheus 本地磁盘会增长,考虑长期保留要用远端存储或定期 snapshot" — 存储注意事项
> "Grafana 仪表盘 JSON 导出Prometheus rule 与配置放在 GitGitOps" — 备份最佳实践
> "把容器/服务启动时打上 service=xxx、env=prod 标签,便于 PromQL 分组和 SLA 报表" — 标签化运维建议
## Key Concepts
- [[Prometheus]]:开源时序数据库 + 监控系统采用拉取pull模式从 exporters 采集指标
- [[Grafana]]:跨数据源的可视化与告警平台,支持 Prometheus/Loki/VictoriaMetrics 等
- [[Observability]]可观测性覆盖指标Metrics、日志Logs、链路Traces三大支柱
- [[Container Monitoring]](容器监控):通过 cAdvisor 采集容器资源使用、重启次数、退出码等指标
- [[Synthetic Monitoring]](合成监控):通过 blackbox_exporter 和 Uptime Kuma 做主动式可用性探测,区别于基于真实用户流量的 RUM
- [[Alert Management]]告警管理Prometheus 定义告警规则 → Alertmanager 接收 → 抑制/分组/路由到邮件/Slack/Webhook/PagerDuty
- [[Home Server Automation]]:家庭服务器的运维自动化与监控覆盖
## Key Entities
- [[Prometheus]](监控数据采集与告警规则引擎):负责从各 exporter 拉取指标并执行告警条件判断
- [[Grafana]](可视化与告警平台):展示 Prometheus 时序数据,配置告警规则和通知渠道
- [[Alertmanager]]Prometheus 告警分发组件):负责告警的抑制、分组、向邮件/Slack/Teams 等渠道分发
- [[Node Exporter]]主机指标采集器Prometheus 官方 exporter采集 CPU/内存/磁盘/网络/文件系统指标
- [[cAdvisor]]Google 容器指标采集器采集容器级别的资源使用情况CPU/内存/网络/磁盘 I/O
- [[Blackbox Exporter]](黑箱探测 exporter通过 HTTP/TCP/ICMP/DNS 探测外部或内部服务端点
- [[Uptime Kuma]](自托管可用性监控工具):开源 uptime monitoring支持 HTTP/TCP/DNS/TLS 探测与历史记录
- [[Netdata]](实时监控看板):开箱即用的详细实时主机/容器监控面板,默认 19999 端口
- [[Portainer]]Docker 可视化管理平台):图形化管理 Docker 主机/Swarm带监控/日志功能
## Connections
- [[Prometheus]] ← scrape_configs ← [[Node Exporter]]
- [[Prometheus]] ← scrape_configs ← [[cAdvisor]]
- [[Prometheus]] ← scrape_configs ← [[Blackbox Exporter]]
- [[Prometheus]] ← sends alerts ← [[Alertmanager]]
- [[Grafana]] ← datasource ← [[Prometheus]]
- [[Grafana]] ← dashboards ← [[Node Exporter]], [[cAdvisor]], [[Blackbox Exporter]]
- [[家庭网络环境概览]] ← provides context for ← [[Home Server Automation]]
## Contradictions
- 与 [[Uptime Kuma]] 描述存在侧重差异:源文档将 Uptime Kuma 定位为"合成监控补充工具"与 blackbox_exporter 并列,实际部署中两者均可独立完成 HTTP/TLS 探测Uptime Kuma 更适合做外网监控(无公网 IP 时blackbox_exporter 更适合内网和更细粒度的 PromQL 告警集成