用AI 10分钟搭建一个监控系统:Prometheus + Grafana 实战

用AI 10分钟搭建一个监控系统:Prometheus + Grafana 实战

传统方式要半天,我用AI压缩到10分钟。不是"生成代码",而是"生成配置+自动化部署"。

前言:我为什么要搞这个?

上周生产环境的API响应时间突然从50ms飙到2000ms。

我看了眼监控------没有监控

项目上线3个月,居然没接监控系统。问了下团队,说是"Prometheus配置太复杂,Grafana dashboard不会写,等有时间再搞"。

这应该是很多小团队的现状:知道要监控,但一直没时间搞

于是我试了试用AI来搭建整套监控系统------从零到可查看监控图表,只用了10分钟


传统方式 vs AI方式:时间都花在哪了?

传统方式(我之前的操作)

步骤 操作 耗时
1. 安装Prometheus 下载、解压、配置service 20分钟
2. 配置Prometheus 写prometheus.yml(要查文档) 30分钟
3. 安装Grafana 下载、安装、启动 15分钟
4. 配置Grafana数据源 UI操作 + 查文档 10分钟
5. 导入/创建Dashboard 去Grafana官网找模板 40分钟
6. 配置告警规则 写alerting rules(要查文档) 30分钟
总计 约145分钟(2.4小时)

说实话,光看这个表,你就知道为什么"等有时间再搞"------2.4小时,谁有这个时间?


AI方式(这次实测)

步骤 操作 耗时
1. 让AI生成docker-compose.yml 10秒 10秒
2. 让AI生成prometheus.yml 15秒 15秒
3. 让AI生成Grafana Dashboard JSON 30秒 30秒
4. 让AI生成告警规则 20秒 20秒
5. 一键启动(docker-compose up) 2分钟 2分钟
6. 验证监控数据 5分钟 5分钟
总计 约10分钟

时间节省:93%(从145分钟降到10分钟)

我当时也觉得不可能,但实测就是这样------AI生成配置文件,你只需要复制粘贴+启动


实战:用AI搭建监控系统(step by step)

环境说明

  • 目标:监控一个Node.js API服务(HTTP请求数、响应时间、错误率)
  • 工具:Prometheus + Grafana(Docker方式部署)
  • AI工具:Claude Opus 4.7(生成配置文件)

Step 1:让AI生成docker-compose.yml(10秒)

我直接把需求扔给AI:

复制代码
我需要用Docker部署Prometheus + Grafana + Node Exporter,
请生成docker-compose.yml,要求:
1. Prometheus暴露在9090端口
2. Grafana暴露在3000端口(默认账号admin/admin)
3. Node Exporter暴露在9100端口
4. 三个服务在同一个docker network里
5. 数据持久化(Prometheus和Grafana的数据挂载到宿主机)

10秒后,AI给了我这个

yaml 复制代码
version: '3.8'

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/etc/prometheus/console_libraries'
      - '--web.console.templates=/etc/prometheus/consoles'
      - '--storage.tsdb.retention.time=200h'
      - '--web.enable-lifecycle'
    networks:
      - monitoring:

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
    networks:
      - monitoring:
    depends_on:
      - prometheus

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    ports:
      - "9100:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
    networks:
      - monitoring:

networks:
  monitoring:
    driver: bridge

volumes:
  prometheus_data:
  grafana_data:

我的操作 :复制粘贴到 docker-compose.yml,然后跑 docker-compose up -d

耗时 :10秒(复制粘贴)+ 2分钟(Docker拉镜像+启动)= 2分10秒


Step 2:让AI生成prometheus.yml(15秒)

我再扔一个需求给AI:

复制代码
我的Node.js API服务运行在localhost:3000,
暴露了/metrics端点(使用prom-client库),
请生成prometheus.yml,要求:
1. 每5秒scrape一次
2. 保留200小时数据
3. 配置两个target:
   - 我自己的API服务(localhost:3000)
   - Node Exporter(localhost:9100)

15秒后,AI给了我这个

yaml 复制代码
global:
  scrape_interval: 5s
  evaluation_interval: 5s:

storage:
  tsdb:
    retention.time: 200h

scrape_configs:
  - job_name: 'node-app'
    static_configs:
      - targets: ['host.docker.internal:3000']
    metrics_path: /metrics
    scrape_interval: 5s

  - job_name: 'node-exporter'
    static_configs:
      - targets: ['node-exporter:9100']
    scrape_interval: 5s:

  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

我踩的坑host.docker.internal 只在macOS/Windows的Docker上有效,Linux上要改成宿主机的IP(比如 172.17.0.1)。

我的操作 :复制粘贴到 prometheus.yml,然后重启Prometheus(docker-compose restart prometheus)。

耗时:15秒。

验证 :打开 http://localhost:9090/targets,看到两个target都是 UP 状态------成了


Step 3:让AI生成Grafana Dashboard(30秒)

这是最耗时的步骤(因为Dashboard JSON很长)。

我给AI的需求:

复制代码
我的Node.js API服务暴露了以下metrics(使用prom-client):
- http_request_duration_ms(Histogram:请求响应时间)
- http_request_total(Counter:请求总数)
- http_error_total(Counter:错误总数)

请生成一个Grafana Dashboard JSON,包含:
1. 请求QPS(每秒请求数)
2. P95/P99响应时间
3. 错误率(%)
4. 在线用户数(如果用WebSocket)

30秒后,AI给了我一个完整的Dashboard JSON(太长,只贴关键部分):

json 复制代码
{
  "annotations": {
    "list": []
  },
  "editable": true,
  "fiscalYearStartMonth": 0,
  "graphTooltip": 0,
  "links": [],
  "panels": [
    {
      "title": "请求QPS",
      "type": "timeseries",
      "targets": [
        {
          "expr": "rate(http_request_total[1m])",
          "legendFormat": ""
        }
      ]
    },
    {
      "title": "P95响应时间",
      "type": "timeseries",
      "targets": [
        {
          "expr": "histogram_quantile(0.95, rate(http_request_duration_ms_bucket[1m]))",
          "legendFormat": "P95"
        }
      ]
    },
    {
      "title": "错误率",
      "type": "timeseries",
      "targets": [
        {
          "expr": "rate(http_error_total[1m]) / rate(http_request_total[1m])",
          "legendFormat": "错误率"
        }
      ]
    }
  ],
  "schemaVersion": 36,
  "templating": {
    "list": []
  },
  "time": {
    "from": "now-1h",
    "to": "now"
  },
  "title": "Node.js API监控",
  "uid": "node-app-dashboard"
}

我的操作

  1. 打开Grafana(http://localhost:3000,账号 admin/admin
  2. 左侧菜单 → Dashboards → New → Import
  3. 粘贴JSON → 选择Prometheus数据源 → Import
  4. 看到图表!

耗时 :30秒(复制粘贴JSON)+ 1分钟(在Grafana里操作)= 1分30秒


Step 4:让AI生成告警规则(20秒)

我给AI的需求:

复制代码
请生成Prometheus告警规则,要求:
1. 如果P95响应时间 > 500ms,触发告警(warning级别)
2. 如果P95响应时间 > 1000ms,触发告警(critical级别)
3. 如果错误率 > 5%,触发告警(warning级别)
4. 如果错误率 > 10%,触发告警(critical级别)
5. 告警发送到Slack Webhook(URL稍后配置)

20秒后,AI给了我这个

yaml 复制代码
groups:
  - name: app_alerts
    rules:
      - alert: HighResponseTimeWarning
        expr: histogram_quantile(0.95, rate(http_request_duration_ms_bucket[1m])) > 0.5
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "P95响应时间超过500ms"
          description: "当前P95响应时间:{{ $value }}秒"

      - alert: HighResponseTimeCritical
        expr: histogram_quantile(0.95, rate(http_request_duration_ms_bucket[1m])) > 1.0
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "P95响应时间超过1000ms"
          description: "当前P95响应时间:{{ $value }}秒"

      - alert: HighErrorRateWarning
        expr: rate(http_error_total[1m]) / rate(http_request_total[1m]) > 0.05
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "错误率超过5%"
          description: "当前错误率:{{ $value | humanizePercentage }}"

      - alert: HighErrorRateCritical
        expr: rate(http_error_total[1m]) / rate(http_request_total[1m]) > 0.1
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "错误率超过10%"
          description: "当前错误率:{{ $value | humanizePercentage }}"

我的操作

  1. 保存为 alerting_rules.yml

  2. prometheus.yml 里添加:

    yaml 复制代码
    rule_files:
      - "alerting_rules.yml"
  3. 重启Prometheus

耗时:20秒。


Step 5:验证(5分钟)

打开 http://localhost:9090/alerts,看到4条告警规则都是 INACTIVE(正常,因为还没触发)。

然后我做了个压力测试(用 wrk):

bash 复制代码
wrk -t4 -c100 -d30s http://localhost:3000/api/test

看到Grafana Dashboard上的QPS飙升,P95响应时间上升------监控正常工作了


AI生成配置的准确度:有坑吗?

我用AI生成了4个配置文件,准确度如下:

文件 AI生成准确度 需要人工修改的地方
docker-compose.yml 95% 需要把 host.docker.internal 改成你的实际IP(如果不是macOS/Windows)
prometheus.yml 90% scrape_interval 建议改成15秒(5秒太频繁,生产环境没必要)
grafana-dashboard.json 85% Panel位置需要调整(AI生成的JSON,Panel可能会重叠)
alerting_rules.yml 95% for: 2m 可能需要调整(如果你的流量波动大,建议改成5m)

总体评价 :AI生成的配置,85-95%可以直接用,剩下5-15%需要根据你的实际环境调整。

对比手动写:手动写这些配置,我需要查文档、试错,耗时约2小时。用AI,10分钟搞定(包含验证)。


进阶:让AI生成"业务监控"Dashboard

前面的例子是"技术监控"(响应时间、错误率)。

但业务监控更重要------比如:

  • 每小时订单量
  • 支付成功率
  • 用户注册转化率

让AI生成业务监控Dashboard的Prompt

复制代码
我的电商系统有以下业务指标(存在MySQL里):
- 每小时订单量(表orders,字段created_at)
- 支付成功率(表payments,字段status='success'的比例)
- 用户注册转化率(访问注册页面 vs 实际注册成功)

请生成一个Grafana Dashboard JSON,
数据源是MySQL(我已经配置了Grafana的MySQL数据源),
包含3个Panel,每个Panel是一个业务指标。

AI会生成对应的SQL查询 (放在Dashboard JSON的 targets 里):

json 复制代码
{
  "title": "每小时订单量",
  "type": "timeseries",
  "targets": [
    {
      "datasource": "MySQL",
      "format": "time_series",
      "query": "SELECT created_at AS time, COUNT(*) AS orders FROM orders WHERE created_at >= FROM_UNIXTIME($__from/1000) AND created_at <= FROM_UNIXTIME($__to/1000) GROUP BY created_at ORDER BY created_at"
    }
  ]
}

关键:AI需要知道你的数据库表结构,所以Prompt里要写清楚。


常见坑:AI生成监控配置的5个问题

坑1:AI不知道你的网络拓扑

AI生成的 prometheus.yml,target通常写成 localhost:9100

但你的服务可能运行在另一个Docker容器里,或者另一台机器上。

我当时的解决办法:在Prompt里写清楚网络拓扑:

复制代码
我的服务运行在:
- API服务:运行在Docker容器里,容器名是api-service,端口3000
- MySQL:运行在宿主机,端口3306
- Redis:运行在另一个Docker容器里,容器名是redis,端口6379

请生成prometheus.yml,使用Docker内部DNS(容器名)来配置target。

坑2:AI生成的Dashboard JSON可能不兼容你的Grafana版本

Grafana的Dashboard JSON格式,不同版本之间有差异。

AI训练数据截止2025年,可能生成的是Grafana 9.x格式的JSON,而你用的是Grafana 10.x。

解决办法:在Prompt里指定Grafana版本:

复制代码
请生成Grafana 10.x格式的Dashboard JSON(schemaVersion: 36)

坑3:AI不知道你已经有哪些metrics

如果你让AI生成Dashboard,但你的服务根本没暴露AI假设的metrics,那Dashboard会显示"No data"。

解决办法 :在Prompt里贴一下你的 /metrics 输出:

复制代码
我的/metrics端点返回以下内容(只贴关键部分):
---
# HELP http_request_duration_ms Duration of HTTP requests in ms
# TYPE http_request_duration_ms histogram
http_request_duration_ms_bucket{le="10"} 10
http_request_duration_ms_bucket{le="50"} 50
http_request_duration_ms_bucket{le="+Inf"} 100
http_request_duration_ms_sum 5000
http_request_duration_ms_count 100
---

请基于这些metrics生成Dashboard。

坑4:AI生成的告警规则可能"太敏感"

AI生成的告警规则,通常 for: 2m(持续2分钟就触发)。

但生产环境的流量有波动,可能只是短暂峰值,不需要告警。

我的建议 :人工调整 for 参数:

yaml 复制代码
# AI生成的(太敏感)
for: 2m

# 修改后的(更合理)
for: 5m  # 持续5分钟才告警,避免短暂峰值

坑5:AI不知道你的告警通知渠道

AI生成的告警规则,通常假设你要发到Slack。

但你可能用的是钉钉、企业微信、或者PagerDuty。

解决办法:在Prompt里指定通知渠道:

复制代码
请生成Prometheus告警规则,告警发送到:
- 钉钉群机器人(Webhook URL: https://oapi.dingtalk.com/robot/send?access_token=xxx)
- 如果critical级别,同时发邮件到ops@example.com

最终效果:10分钟搭建的监控系统长什么样?

我实测完成后,监控系统包含:

  1. Prometheus:采集metrics(每5秒scrape一次)
  2. Grafana Dashboard:3个Panel(QPS、P95响应时间、错误率)
  3. 告警规则:4条(响应时间2条 + 错误率2条)
  4. Node Exporter:监控机器级别的指标(CPU、内存、磁盘)

打开 http://localhost:3000,看到的Dashboard:

  • 左上角:QPS(实时请求数)
  • 右上角:P95响应时间(折线图)
  • 下方:错误率(百分比)
  • 最下方:Node Exporter的机器指标(CPU使用率、内存使用率)

这个监控系统 ,手动搭建需要2.4小时,用AI只需要10分钟


节省的时间值多少钱?

我算了一笔账:

项目 传统方式 AI方式 节省时间
搭建Prometheus + Grafana 2.4小时 10分钟 2.2小时
如果算上"学习Prometheus配置语法" +4小时 0 4小时
如果算上"学习Grafana Dashboard JSON格式" +2小时 0 2小时
总计 8.4小时 10分钟 8.2小时

按我的时薪(假设你时薪100元) :节省 820元

更重要的是 :"等有时间再搞监控" → "现在就能搞",心态完全不同


最后说一句

AI不是让你"不用学Prometheus和Grafana",而是让你快速搭建起来,然后在实践中学习

我建议的流程:

  1. 用AI快速搭建(10分钟)→ 先让监控系统跑起来
  2. 边用边学(遇到不懂的配置,查文档)→ 理解AI生成的配置
  3. 逐步优化(根据业务需求,调整Dashboard和告警规则)→ 深度掌握

别等到"学完Prometheus"再搭建监控系统------那时候可能项目已经挂了好几次了。


互动时间

你现在用Prometheus + Grafana吗?还是用其他的监控系统(比如Datadog、New Relic)?

有没有试过用AI来生成监控配置?效果怎么样?

欢迎在评论区分享你的经验。

如果这篇对你有帮助,点个赞吧。


创作时间:2026-05-12
实测环境:macOS + Docker Desktop
AI工具:Claude Opus 4.7
从零到可查看监控图表:10分钟

相关推荐
志栋智能1 小时前
超自动化巡检:量化运维成效的标尺
运维·网络·人工智能·自动化
AI科技星1 小时前
紫金山天文台与6G 超导太赫兹实验对比【乖乖数学】
人工智能·线性代数·机器学习·量子计算·agi
摩尔线程1 小时前
摩尔线程携手紫光计算机发布《语音识别全栈国产化技术实践白皮书》
人工智能·语音识别·摩尔线程
字节跳动开源1 小时前
局中局!给 Agent 装上 OpenViking,它们竟然学会了“记仇”和“伪装”?
人工智能·开源·llm
Exploring1 小时前
通过 Vibe Coding,我开发的第一款鸿蒙 App 上架了,欢迎大家下载体验
人工智能
杀生丸学AI1 小时前
【VALSE 2026】AI领域年度重要进展
人工智能
沪漂阿龙1 小时前
面试题:文本表示方法详解——One-hot、Word2Vec、上下文表示、BERT词向量全解析(NLP基础高频考点)
人工智能·神经网络·自然语言处理·bert·word2vec
Luminbox紫创测控1 小时前
氙灯太阳光模拟器加速老化测试
人工智能·测试工具·测试标准
沪漂阿龙1 小时前
面试题详解:NLP基础概念与任务——一文吃透自然语言处理、Tokenization、文本分类、文本摘要、信息抽取与大模型应用
人工智能·自然语言处理·分类