《监控工具踩坑记录》:零基础也能轻松上手的教程

Bug自己会好
2025-06-20 08:23
阅读 726

开篇:什么是监控工具?它有什么用?

开篇:什么是监控工具?它有什么用?

在开发中,我们经常需要知道系统的运行状态。比如:

  • 我的服务器现在 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

等几分钟后,访问以下网址看看是否跑起来了:


小结:我们已经完成了以下操作

✅ 安装了 Docker
✅ 配置了 Prometheus 和 Grafana 的基础服务
✅ 启动了一个基本的监控系统框架

接下来我们继续深入!


核心概念:理解监控工具的关键术语

1. Prometheus 是什么?

Prometheus 是一个用于抓取指标数据(Metric)并存储、查询的系统。它通过 HTTP 请求定时去拉取监控目标的数据。

2. Grafana 是什么?

Grafana 是一个可视化平台,可以把 Prometheus 抓到的数据画成图、表、仪表盘等,更直观地展示给用户。

3. 什么是 Exporter?

Exporter 是帮助采集不同服务或主机指标的小程序。例如:

  • node_exporter:采集主机的 CPU、内存、硬盘等数据
  • mysqld_exporter:采集 MySQL 的指标

实战项目:让 Node Exporter 监控你的电脑资源

项目管理工具-1

我们现在要做的,就是用 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 图形化展示数据

常见问题与解答

项目管理工具-2

❓ 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)

📖 推荐阅读:

💡 推荐练习项目:

  1. 监控你的 Web 应用(如 Flask/Django)
  2. 给数据库加上监控
  3. 设置邮件报警

总结:监控不是玄学,而是你掌控系统的能力

刚开始学习监控,可能会觉得有些“看不懂”的地方。但别担心,只要跟着本文一步步来实践,你会发现它是如此实用又有趣。

🧭 记住一句话:“看得见”才能“管得好”。

只要你动手多练,监控也能成为你开发路上的好伙伴!


🔚 祝你学习愉快,早日成为监控小达人!

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝