Appearance
Linux系统监控
本文档详细说明了基于 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: 登录与修改密码
- 访问
https://monitor.hongjy.cn。 - 输入默认账号密码 (
admin/admin)。 - 系统会提示设置新密码,请设置一个安全的密码(或点击 "Skip" 跳过,但不推荐)。
步骤 2: 配置数据源 (Connect Data)
我们需要告诉 Grafana 去哪里拿数据(即连接 Prometheus)。
- 点击左侧菜单栏的 Connections (连接) -> Data sources (数据源)。
- 点击蓝色按钮 + Add new data source。
- 在列表中选择 Prometheus。
- 关键配置:
- 找到 Connection 部分的 Prometheus server URL。
- 输入:
http://prometheus:9090 - 注意: 这里必须填 Docker 容器名
prometheus,而不是localhost或 IP,因为它们在同一个 Docker 网络中。
- 滚动到底部,点击 Save & test。
- 如果显示绿色的 "Successfully queried the Prometheus API",说明连接成功。
步骤 3: 导入监控仪表盘 (Import Dashboards)
我们需要导入现成的模板来展示数据,不需要自己画图。
推荐模板 ID:
- 1860: Node Exporter Full (用于监控 Linux 主机)
- 14282: cAdvisor (用于监控 Docker 容器)
操作方法:
- 点击左侧菜单栏的 Dashboards (仪表盘) -> New -> Import。
- 在 Import via grafana.com 输入框中,输入 ID (例如
1860),点击 Load。 - 在跳转的配置页面中:
- Name: 可以保持默认或修改(如 "Linux 主机监控")。
- Prometheus: 在下拉菜单中选择我们在"步骤2"中创建的数据源 (通常叫
Prometheus)。
- 点击 Import 按钮。
- 大功告成!你应该能看到服务器绚丽的实时监控图表了。
重复上述步骤,输入 ID 14282 导入容器监控面板。
4. 日常操作指南
4.1 如何查看特定时间段的数据?
在 Grafana 面板右上角,有一个时间选择器(默认通常是 Last 24 hours 或 Last 1 hour)。
- 点击它可以选择预设时间(如
Last 5 minutes,Last 7 days)。 - 也可以在图表上直接框选某个区域,放大查看细节。
4.2 如何检查监控是否正常工作?
如果图表显示 "No Data",请按以下顺序排查:
- 检查 Prometheus 目标状态:
- 访问
http://192.168.1.200:9090/targets。 - 查看
node-exporter和cadvisor的状态是否为 UP (绿色)。 - 如果是 DOWN (红色),说明采集器挂了或网络不通。
- 访问
- 检查 Docker 容器状态:
- SSH 登录服务器,运行
docker compose -f /srv/monitor/docker-compose.yml ps。 - 确保所有容器状态都是
Up。
- SSH 登录服务器,运行
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 -d5. 进阶说明
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 状态。
