《监控工具踩坑记录》:零基础也能轻松上手的教程
开篇:什么是监控工具?它有什么用?

在开发中,我们经常需要知道系统的运行状态。比如:
- 我的服务器现在 CPU 占用是多少?
- 数据库连接数有没有异常?
- 某个 API 接口响应变慢了怎么办?
这就需要用到监控工具(Monitoring Tools)。它们就像医生的听诊器,能帮你随时了解系统的“健康状况”。
想象一下你开了个小店,想知道每天来了多少顾客、谁是常客、什么时候最忙。你可以自己记账,但太麻烦。有了监控系统,就能自动统计这些信息。
今天我们要用一个流行的开源监控工具 Prometheus + Grafana 来搭建一套简单的监控系统,并一起避开那些新手容易掉进去的“坑”。
环境准备:从零开始搭建监控环境

第一步:安装 Docker(Mac/Linux/Windows)
Docker 能帮我们快速部署 Prometheus 和 Grafana。
安装步骤:
- Windows & Mac:下载 Docker Desktop 并安装
- Linux(Ubuntu 为例):
sudo apt update sudo apt install docker.io -y sudo systemctl start docker
✅ 验证是否安装成功:
docker --version
输出类似 Docker version 24.0.7, build afdd529 即可。
第二步:创建你的监控项目目录
新建一个文件夹来放配置文件:
mkdir ~/monitoring-demo
cd ~/monitoring-demo
第三步:使用 Docker Compose 部署 Prometheus + Grafana
在项目目录下创建 docker-compose.yml 文件,内容如下:
version: '3'
services:
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
restart: always
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
restart: always
接着,在同一目录下创建 prometheus.yml 文件:
global:
scrape_interval: 15s
scrape_configs:
- job_name: "node_exporter"
static_configs:
- targets: ["host.docker.internal:9100"]
⚠️ 注意:如果你是在 Linux 上运行 Docker,不需要
host.docker.internal,请替换成localhost。
启动服务:
docker-compose up -d
等几分钟后,访问以下网址看看是否跑起来了:
- Prometheus:http://localhost:9090
- Grafana:http://localhost:3000 (用户名 admin / 密码 admin)
小结:我们已经完成了以下操作
✅ 安装了 Docker
✅ 配置了 Prometheus 和 Grafana 的基础服务
✅ 启动了一个基本的监控系统框架
接下来我们继续深入!
核心概念:理解监控工具的关键术语
1. Prometheus 是什么?
Prometheus 是一个用于抓取指标数据(Metric)并存储、查询的系统。它通过 HTTP 请求定时去拉取监控目标的数据。
2. Grafana 是什么?
Grafana 是一个可视化平台,可以把 Prometheus 抓到的数据画成图、表、仪表盘等,更直观地展示给用户。
3. 什么是 Exporter?
Exporter 是帮助采集不同服务或主机指标的小程序。例如:
- node_exporter:采集主机的 CPU、内存、硬盘等数据
- mysqld_exporter:采集 MySQL 的指标
实战项目:让 Node Exporter 监控你的电脑资源

我们现在要做的,就是用 Prometheus 和 Grafana 来监控本机的 CPU、内存和磁盘使用情况。
第一步:启动 node_exporter
修改 docker-compose.yml 文件,添加 node_exporter 服务:
node_exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node-exporter
ports:
- "9100:9100"
restart: always
重启服务:
docker-compose down
docker-compose up -d
访问 http://localhost:9100/metrics 看看是否能看到一堆类似下面的数据:
# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
node_cpu_seconds_total{device="cpu0",mode="idle"} 123456.78
...
这表示 node_exporter 已经正常运行了!
第二步:查看 Prometheus 是否成功抓取数据
打开 Prometheus 的页面:http://localhost:9090
在输入框中输入:
node_cpu_seconds_total
点击 “Execute”,你会看到很多 CPU 使用的指标。
第三步:在 Grafana 中添加 Prometheus 数据源
登录 Grafana:http://localhost:3000
点击 左侧菜单 -> Data Sources -> Add data source
选择 Prometheus,填写 URL 为 http://prometheus:9090(Docker 内部服务名),然后保存。
第四步:导入默认的 Node Exporter Dashboard
我们可以导入社区提供的模板 Dashboard:
点击 左侧菜单 -> Dashboards -> Manage -> Import
在 ID 输入框中输入 1860,然后点击 Load → Import
你会看到一个完整的系统监控面板,包含 CPU、内存、磁盘使用等图表。
🧪 小结:你刚刚完成了一套完整的监控流程!
| 步骤 | 工具 | 功能 |
|---|---|---|
| 1 | node_exporter | 收集主机性能数据 |
| 2 | Prometheus | 抓取、存储数据 |
| 3 | Grafana | 图形化展示数据 |
常见问题与解答

❓ Q1:为什么我的 Prometheus 没有抓取到 node_exporter 的数据?
可能是网络配置问题:
- 如果你在 Linux 上运行 Docker,请将
host.docker.internal替换为localhost - 检查端口是否被防火墙阻挡
- 查看 Prometheus 日志:
docker logs monitor_prometheus_1
❓ Q2:Grafana 显示 "Data source not found"
说明没有正确添加 Prometheus 数据源。请回到 Grafana 页面重新配置。
❓ Q3:如何修改 Prometheus 的抓取频率?
修改 prometheus.yml 中的 scrape_interval 字段:
global:
scrape_interval: 5s
然后执行:
docker-compose down
docker-compose up -d
❓ Q4:我不想用 Docker 可以吗?
当然可以!不过会复杂一些:
但建议新手先用 Docker 快速体验整个流程。
学习建议:下一步怎么学?
恭喜你完成了第一个监控项目!现在你知道了:
- 如何用 Prometheus 和 Grafana 搭建监控系统
- 如何收集主机性能数据
- 如何可视化数据
接下来你可以尝试:
🔧 进阶技能包:
- 添加 MySQL、Redis、Nginx 的 exporter(网上都有现成模板)
- 学习 PromQL 查询语言
- 配置报警规则(Alertmanager)
📖 推荐阅读:
- 《Prometheus入门与实战》 – 林冠宏
- Prometheus 官方文档:https://prometheus.io/docs/introduction/overview/
💡 推荐练习项目:
- 监控你的 Web 应用(如 Flask/Django)
- 给数据库加上监控
- 设置邮件报警
总结:监控不是玄学,而是你掌控系统的能力
刚开始学习监控,可能会觉得有些“看不懂”的地方。但别担心,只要跟着本文一步步来实践,你会发现它是如此实用又有趣。
🧭 记住一句话:“看得见”才能“管得好”。
只要你动手多练,监控也能成为你开发路上的好伙伴!
🔚 祝你学习愉快,早日成为监控小达人!

评论 0