Skip to content

Docker 监控系统使用指南 (Monitor Stack) ​

本文档详细说明了基于 Docker 部署的监控系统(Prometheus + Grafana + Node Exporter + cAdvisor)的操作流程、配置方法及工作原理。

1. 系统架构与原理 ​

本监控系统采用经典的 "Pull" 模式架构,主要由以下四个核心组件组成:

1.1 核心组件 (Core) ​

  • Prometheus (普罗米修斯):
    • 角色: 核心大脑 / 数据库。
    • 原理: 它是一个时序数据库。它会按照设定的时间间隔(默认15秒),主动去"拉取" (Scrape) 各个采集器(Exporter)的数据,并存储在本地磁盘中。
    • 作用: 负责数据的采集、存储和查询逻辑。它是后台服务,通常不需要直接操作界面,除非调试数据源。
  • Grafana:
    • 角色: 颜值担当 / 仪表盘。
    • 原理: 它本身不存储监控数据。它连接到 Prometheus,发送查询请求,然后将返回的数据渲染成漂亮的图表。
    • 作用: 我们日常操作、查看监控、配置告警的主界面。

1.2 数据采集器 (Exporters) ​

这些组件负责从系统底层"挖掘"数据,并暴露 HTTP 接口供 Prometheus 拉取。

  • Node Exporter:
    • 作用: 监控 宿主机 (Host) 的指标。
    • 内容: CPU 使用率、内存占用、磁盘 I/O、网络流量、系统负载等 Linux 基础指标。
  • cAdvisor (Container Advisor):
    • 作用: 监控 Docker 容器 的指标。
    • 内容: 每个容器的 CPU、内存使用量、网络流量、文件系统使用情况。

2. 快速访问 ​

  • Grafana (管理面板):

    • 外网地址: https://monitor.hongjy.cn (需通过 Gateway)
    • 内网地址: http://192.168.1.200:3000 (如果网关未生效)
    • 默认账号: admin
    • 默认密码: admin (首次登录强制修改)
  • Prometheus (调试界面):

    • 内网地址: http://192.168.1.200:9090
    • 用途: 用于检查 Target 状态,确认数据是否采集成功。

3. Grafana 初始化配置教程 (首次使用必读) ​

系统部署完成后,Grafana 是空的,需要手动配置数据源和仪表盘才能看到图表。

步骤 1: 登录与修改密码 ​

  1. 访问 https://monitor.hongjy.cn。
  2. 输入默认账号密码 (admin/admin)。
  3. 系统会提示设置新密码,请设置一个安全的密码(或点击 "Skip" 跳过,但不推荐)。

步骤 2: 配置数据源 (Connect Data) ​

我们需要告诉 Grafana 去哪里拿数据(即连接 Prometheus)。

  1. 点击左侧菜单栏的 Connections (连接) -> Data sources (数据源)。
  2. 点击蓝色按钮 + Add new data source。
  3. 在列表中选择 Prometheus。
  4. 关键配置:
    • 找到 Connection 部分的 Prometheus server URL。
    • 输入: http://prometheus:9090
    • 注意: 这里必须填 Docker 容器名 prometheus,而不是 localhost 或 IP,因为它们在同一个 Docker 网络中。
  5. 滚动到底部,点击 Save & test。
    • 如果显示绿色的 "Successfully queried the Prometheus API",说明连接成功。

步骤 3: 导入监控仪表盘 (Import Dashboards) ​

我们需要导入现成的模板来展示数据,不需要自己画图。

推荐模板 ID:

  • 1860: Node Exporter Full (用于监控 Linux 主机)
  • 14282: cAdvisor (用于监控 Docker 容器)

操作方法:

  1. 点击左侧菜单栏的 Dashboards (仪表盘) -> New -> Import。
  2. 在 Import via grafana.com 输入框中,输入 ID (例如 1860),点击 Load。
  3. 在跳转的配置页面中:
    • Name: 可以保持默认或修改(如 "Linux 主机监控")。
    • Prometheus: 在下拉菜单中选择我们在"步骤2"中创建的数据源 (通常叫 Prometheus)。
  4. 点击 Import 按钮。
  5. 大功告成!你应该能看到服务器绚丽的实时监控图表了。

重复上述步骤,输入 ID 14282 导入容器监控面板。


4. 日常操作指南 ​

4.1 如何查看特定时间段的数据? ​

在 Grafana 面板右上角,有一个时间选择器(默认通常是 Last 24 hours 或 Last 1 hour)。

  • 点击它可以选择预设时间(如 Last 5 minutes, Last 7 days)。
  • 也可以在图表上直接框选某个区域,放大查看细节。

4.2 如何检查监控是否正常工作? ​

如果图表显示 "No Data",请按以下顺序排查:

  1. 检查 Prometheus 目标状态:
    • 访问 http://192.168.1.200:9090/targets。
    • 查看 node-exporter 和 cadvisor 的状态是否为 UP (绿色)。
    • 如果是 DOWN (红色),说明采集器挂了或网络不通。
  2. 检查 Docker 容器状态:
    • SSH 登录服务器,运行 docker compose -f /srv/monitor/docker-compose.yml ps。
    • 确保所有容器状态都是 Up。

4.3 常用维护命令 ​

监控系统部署在 /srv/monitor 目录下。

bash
# 进入目录
cd /srv/monitor

# 查看日志 (排查问题用)
docker compose logs -f prometheus
docker compose logs -f grafana

# 重启所有服务
docker compose restart

# 更新配置后重载 (如修改了 prometheus.yml)
docker compose up -d

5. 进阶说明 ​

5.1 为什么 URL 填 http://prometheus:9090? ​

这是 Docker 的服务发现机制。在 docker-compose.yml 中,我们将所有服务放在了同一个网络 service_mesh 下。在这个网络里,容器之间可以通过"服务名"直接通信,不需要知道对方的 IP 地址。

5.2 配置文件在哪里? ​

  • docker-compose.yml: 定义了启动哪些容器,以及它们的端口和卷映射。
  • prometheus/prometheus.yml: 定义了 Prometheus 去哪里抓取数据。
    • 如果你以后加了新的服务器想一起监控,就需要修改这个文件,添加新的 job 和 targets。

总结: 日常使用只需关注 Grafana 界面。遇到图表无数据时,先检查 Prometheus 的 Targets 状态。

方舟 · Ark