新手入门:监控工具教程(适合零基础小白)
开篇:什么是监控工具?

你有没有遇到过这样的情况?你辛辛苦苦写了一个程序,把它部署到服务器上运行,结果第二天就崩溃了。你想知道发生了什么,却发现根本没有任何记录。这时候你会发现,如果有一个“眼睛”一直在盯着这个程序的运行状态,那该有多好。
这就是监控工具的作用。它就像一个24小时不间断工作的“观察员”,会帮我们:
- 看看系统或程序是否正常运行
- 在出问题时第一时间报警
- 记录详细的运行数据,便于后期分析
不管是网站、App、后台服务还是数据库,只要你想保证它稳定运行,就需要用到监控工具。
本篇文章将从最简单的例子出发,教你如何使用一种常见的开源监控工具 Prometheus 来实现对一个Web服务的监控。我们会一步步搭建环境,并通过实际操作帮助你理解监控的基本原理和流程。
第一步:环境准备


在开始编写监控功能之前,我们需要先准备好开发和测试所需的环境。以下是安装步骤,确保每一步都跟得上哦!
1. 安装 Prometheus
Prometheus 是一个非常流行的开源监控系统。它的安装很简单,只需要下载对应平台的压缩包即可。
Windows用户:
- 打开浏览器访问 https://prometheus.io/download/
- 下载
Windows对应的版本(通常是.zip文件) - 解压后你会看到几个文件夹,找到
prometheus.exe这个可执行文件 - 把解压后的文件夹路径加入到系统环境变量,或者直接在当前目录下运行

macOS/Linux用户:
- 使用命令行下载并解压:
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
tar xvfz prometheus-*.tar.gz
cd prometheus-*
2. 启动 Prometheus
进入解压后的目录,在命令行中输入:
./prometheus --config.file=prometheus.yml
这样就启动了 Prometheus,默认监听在 http://localhost:9090,你可以在浏览器中访问这个地址打开它的图形界面。
如果你看到类似下面的内容说明启动成功:
level=info msg="Starting Prometheus"
3. 创建一个被监控的示例应用
为了展示监控过程,我们可以创建一个非常简单的 Web 服务。
使用 Python 搭建一个带有基本指标暴露的服务。
安装依赖:
pip install flask
编写代码(保存为 app.py):
from flask import Flask
import time
app = Flask(__name__)
@app.route("/")
def index():
return "Hello, this is monitored service!"
@app.route("/metrics")
def metrics():
current_time = time.time()
return f"# TYPE current_time gauge\ncurrent_time {current_time}"
if __name__ == "__main__":
app.run(port=5000)
这个服务会在 /metrics 接口返回一个时间戳数值(模拟监控指标),供 Prometheus 收集。
启动这个服务:
python app.py
现在你可以访问 http://localhost:5000/metrics 看到类似以下输出(数字是时间戳):
# TYPE current_time gauge
current_time 1710000000
核心概念:监控到底在监控什么?
刚刚我们写了一个能返回时间戳的小服务,并且学会了启动 Prometheus。接下来我们要把它们“连起来”,让 Prometheus 能“看见”这个服务的状态。为此,我们先了解几个核心概念:
1. 指标(Metric)
指标就是你要监控的数据。比如:
- 当前 CPU 使用率
- 内存占用
- 网站请求延迟
- 用户登录次数
这些都可以作为监控指标。
在我们上面的例子中,返回的就是当前的时间戳作为一个简单指标。
2. 指标类型(Metric Types)
Prometheus 支持多种类型的指标,我们先了解最常见的两种:
| 类型 | 用途说明 |
|---|---|
| Gauge | 可以增加也可以减少的值,比如温度、内存使用量 |
| Counter | 一直递增的计数器,比如请求数、错误数 |
我们在上面使用的 gauge 就是表示一个可以变化的值。
3. 采集目标(Target)
采集目标是指 Prometheus 要去收集数据的地方。通常是一个 URL 地址,例如我们写的这个服务提供的 /metrics 接口。
4. Job 和 Scrape Interval
Prometheus 通过配置文件来指定要监控哪些目标。每个目标属于一个 Job,并设置一个采集间隔(Scrape Interval),比如每5秒拉取一次数据。
实战项目:让 Prometheus 监控你的服务
现在我们来完整地实现一次监控操作。
步骤一:修改 Prometheus 配置文件
在 Prometheus 的安装目录下找到 prometheus.yml 文件,修改内容如下:
scrape_configs:
- job_name: 'example-service'
static_configs:
- targets: ['localhost:5000']
scrape_interval: 5s
这段配置的意思是:
- job 名字是
example-service - 去监控
localhost:5000这个目标 - 每隔 5 秒抓取一次数据
步骤二:重启 Prometheus
保存完配置后,重启 Prometheus,使其生效:
./prometheus --config.file=prometheus.yml
步骤三:查看监控数据
打开浏览器访问 http://localhost:9090,进入 Prometheus 的网页界面。
点击顶部菜单中的 "Graph",然后在输入框中输入:
current_time
点击 Execute,你应该能看到一个图表显示随时间变化的时间戳数据。
🎉恭喜!你现在已经完成了一次完整的监控实践!
常见问题与解答(FAQ)
刚开始学习监控工具时,可能会遇到一些常见问题。下面我们一起来看看新手最容易卡住的问题有哪些,以及对应的解决方法:
❓ Q1:为什么我看不到 metrics 页面?
原因排查:
- 是否正确启动了你的 Flask 服务?
- 是否端口冲突?试着访问
http://localhost:5000/metrics确认能否访问。 - 浏览器是否有缓存?尝试换个浏览器或清除缓存试试。
❓ Q2:Prometheus 显示没有发现指标?
检查点:
- Prometheus 的配置文件是否正确指定了目标地址?
- 你的服务是否真的提供了
metrics接口? - 检查 Prometheus 日志是否有报错信息(如连接失败等)
❓ Q3:指标格式必须严格按照标准吗?
是的。 Prometheus 非常严格地要求你按照特定格式提供数据,否则无法识别。比如:
✅ 正确示例:
# TYPE current_time gauge
current_time 1710000000
❌ 错误示例:
current_time: 1710000000
❓ Q4:Prometheus 收集数据会很慢吗?
默认 scrape_interval 是 1 分钟,但在测试阶段我们通常设为 5 秒。你可以根据需要调整这个参数。
❓ Q5:可以用其他语言做监控吗?
当然可以!不只是 Python,Java、Go、Node.js 等几乎所有主流语言都可以暴露 Prometheus 指标。只需要安装对应的客户端库即可。
学习建议:下一步怎么学?
恭喜你完成了第一次监控任务!虽然目前只是一个简单的时间戳指标,但这为你打下了扎实的基础。接下来你可以继续深入学习以下方向:
🔹 Step 1:学习更多指标类型
除了 gauge,还有:
counter:用于递增计数histogram:记录请求耗时分布summary:统计值的分布情况
尝试在你的 Flask 应用中添加一个计数器,比如记录访问首页的次数。
🔹 Step 2:使用监控客户端库
手动构造指标字符串有点麻烦,推荐使用现成的客户端库,比如 Python 的 prometheus_client。
安装方式:
pip install prometheus_client
改写我们的 Flask 应用:
from flask import Flask
from prometheus_client import start_http_server, Counter
app = Flask(__name__)
start_http_server(8000) # 开启一个专用的指标暴露端口
REQUEST_COUNT = Counter('home_visits_total', 'Total number of visits to homepage')
@app.route('/')
def home():
REQUEST_COUNT.inc() # 每访问一次就加1
return "Welcome!"
if __name__ == '__main__':
app.run(port=5000)
访问首页几次后,去 http://localhost:8000/metrics 看看你新增的 home_visits_total 指标。
🔹 Step 3:集成 Grafana 可视化
Prometheus 自带的 UI 功能有限,想更好地可视化监控数据,可以搭配 Grafana 使用。
Grafana 提供丰富的图表、面板和告警功能,更适合长期运维和团队协作。
🔹 Step 4:学习真实生产项目的监控结构
随着你掌握越来越多的技能,你可以尝试监控:
- 数据库性能
- Web 服务器负载
- 微服务间的调用链
- 用户行为日志
很多公司都会使用 Prometheus + Alertmanager + Grafana 的组合进行全栈监控。
总结
本文从零开始带你认识了监控工具是什么,为什么重要,并通过实际操作讲解了如何使用 Prometheus 对一个简单的 Web 服务进行监控。
我们完成了:
- 安装 Prometheus
- 编写了一个带有监控接口的服务
- 修改配置,实现指标采集
- 查看了图形化的监控数据
- 回答了一些新手常见问题
- 给出了进一步学习的方向
只要你持续练习,很快就能独立搭建一套完整的监控系统啦!
📌 如果你有任何疑问,欢迎在评论区提问,我会尽可能帮你解答!
祝你在学习监控的路上越走越远 😎

评论 0