博客 云原生监控:Prometheus+Grafana实战部署

云原生监控:Prometheus+Grafana实战部署

   数栈君   发表于 2026-03-29 19:36  97  0

云原生监控:Prometheus+Grafana实战部署

在云原生架构日益普及的今天,企业对系统可观测性的要求已从“可看”升级为“可测、可告、可优”。无论是微服务集群、Kubernetes容器平台,还是无服务器函数计算,都需要一套稳定、高效、可扩展的监控体系。Prometheus 与 Grafana 的组合,已成为云原生监控的事实标准。本文将深入解析如何在生产环境中实战部署 Prometheus + Grafana,构建企业级监控平台,助力数据中台、数字孪生和数字可视化系统实现全链路可观测。


一、为什么选择 Prometheus + Grafana?

Prometheus 是由 CNCF(云原生计算基金会)孵化的开源监控系统,专为动态云环境设计。其核心优势包括:

  • 多维数据模型:基于时间序列,支持通过标签(label)进行灵活聚合,如 http_requests_total{method="GET", status="200", service="order-api"}
  • Pull 模型采集:主动拉取目标指标,避免推模式下的网络拥塞与单点故障。
  • 内置服务发现:自动发现 Kubernetes Pod、Service、Node,适配动态扩缩容场景。
  • 强大查询语言 PromQL:支持复杂聚合、趋势预测、百分位计算,满足精细化分析需求。

Grafana 则是领先的开源可视化平台,支持超过50种数据源,其核心价值在于:

  • 高度可定制仪表盘:支持变量、模板、告警面板、时间范围联动。
  • 跨数据源整合:可同时接入 Prometheus、Loki、MySQL、Elasticsearch,构建统一视图。
  • 企业级权限与分享:支持 RBAC、SAML 登录、仪表盘导出导入,便于团队协作。

二者结合,形成“采集 → 存储 → 查询 → 可视化 → 告警”闭环,是构建数字孪生系统监控底座的理想选择。


二、部署环境准备

在开始部署前,请确保以下环境就绪:

  • 一台 Linux 服务器(推荐 Ubuntu 22.04 / CentOS 8+)
  • Docker 与 Docker Compose 已安装(建议版本 ≥20.10)
  • 至少 4GB 内存,推荐 8GB 以上用于生产环境
  • 开放端口:9090(Prometheus)、3000(Grafana)、9100(Node Exporter)

💡 提示:若部署在云平台(如阿里云、AWS),请配置安全组规则允许上述端口入站。


三、实战部署步骤

1. 创建项目目录结构

mkdir -p ~/prometheus-grafana/{prometheus,grafana}cd ~/prometheus-grafana

创建以下文件:

  • docker-compose.yml
  • prometheus/prometheus.yml
  • grafana/provisioning/datasources/datasource.yml
  • grafana/provisioning/dashboards/dashboard.json

2. 配置 Prometheus(prometheus/prometheus.yml)

global:  scrape_interval: 15s  evaluation_interval: 15sscrape_configs:  - job_name: 'prometheus'    static_configs:      - targets: ['localhost:9090']  - job_name: 'node-exporter'    static_configs:      - targets: ['host.docker.internal:9100']  # 本地主机监控  - job_name: 'kubernetes-pods'    kubernetes_sd_configs:    - role: pod    relabel_configs:    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]      action: keep      regex: true    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]      action: replace      target_label: __metrics_path__      regex: (.+)    - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]      action: replace      target_label: __address__      regex: (.+):(?:\d+);(\d+)      replacement: $1:$2

✅ 此配置已包含对本地 Node Exporter 和 Kubernetes Pod 的自动发现支持。如需对接真实 K8s 集群,需挂载 kubeconfig 文件并配置 RBAC。

3. 配置 Grafana 数据源(grafana/provisioning/datasources/datasource.yml)

apiVersion: 1datasources:  - name: Prometheus    type: prometheus    url: http://prometheus:9090    access: proxy    isDefault: true    version: 1    editable: false

4. 导入默认仪表盘(grafana/provisioning/dashboards/dashboard.json)

可从 Grafana Dashboard Library 下载官方模板,例如:

  • Node Exporter Full(ID: 1860)
  • Kubernetes / API Server(ID: 3119)
  • Docker and Container Monitoring(ID: 12865)

将 JSON 文件保存为 dashboard.json,并放入 grafana/provisioning/dashboards/ 目录。

5. 编写 docker-compose.yml

version: '3.8'services:  prometheus:    image: prom/prometheus:v2.51.1    container_name: prometheus    ports:      - "9090:9090"    volumes:      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml      - prometheus_data:/prometheus    command:      - '--config.file=/etc/prometheus/prometheus.yml'      - '--storage.tsdb.path=/prometheus'      - '--web.console.templates=/etc/prometheus/consoles'      - '--web.console.templates=/etc/prometheus/console_templates'    restart: unless-stopped  node-exporter:    image: prom/node-exporter:v1.6.1    container_name: node-exporter    ports:      - "9100:9100"    volumes:      - /proc:/proc:ro      - /:/rootfs:ro      - /sys:/sys:ro    restart: unless-stopped  grafana:    image: grafana/grafana:10.2.2    container_name: grafana    ports:      - "3000:3000"    volumes:      - ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources      - ./grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards      - grafana_data:/var/lib/grafana    environment:      - GF_SECURITY_ADMIN_USER=admin      - GF_SECURITY_ADMIN_PASSWORD=Prometheus!2024    restart: unless-stoppedvolumes:  prometheus_data:  grafana_data:

6. 启动服务

docker-compose up -d

等待 1~2 分钟,访问:


四、关键监控指标与可视化实践

1. 主机层监控(Node Exporter)

  • CPU 使用率:100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
  • 内存使用率:(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
  • 磁盘 I/O:rate(node_disk_read_bytes_total[1m])rate(node_disk_written_bytes_total[1m])

在 Grafana 中创建面板,使用 StatGraph 展示实时趋势,设置告警阈值(如内存 > 85%)。

2. 容器与 Kubernetes 监控

若部署于 K8s,需额外部署:

  • kube-state-metrics:采集 Pod、Deployment、ReplicaSet 状态
  • cAdvisor:由 Kubelet 自动暴露容器资源指标

通过 Grafana 导入 Kubernetes / API Server (ID: 3119) 仪表盘,即可看到:

  • 集群节点健康状态
  • Pod 重启次数
  • CPU/内存请求与限制使用率
  • 网络流入流出流量

📊 数字孪生系统中,这些指标可映射为虚拟实体的“生理状态”,实现物理世界与数字世界的同步感知。

3. 自定义业务指标上报

使用 Prometheus Client SDK(如 Python、Java、Go)在应用中埋点:

from prometheus_client import Counter, start_http_serverREQUEST_COUNT = Counter('http_requests_total', 'Total HTTP Requests', ['method', 'endpoint'])@app.route('/api/orders')def get_orders():    REQUEST_COUNT.labels(method='GET', endpoint='/api/orders').inc()    return jsonify(orders)

启动 HTTP 服务暴露 /metrics 端点,Prometheus 自动抓取,即可在 Grafana 中绘制:

  • 每分钟订单请求数
  • 错误率趋势(5xx / 总请求)
  • 平均响应时间(使用 Histogram 类型)

五、告警与通知集成

Prometheus 内置 Alertmanager 实现告警路由。创建 alertmanager.yml

route:  receiver: 'email-notifications'receivers:- name: 'email-notifications'  email_configs:  - to: 'alert@yourcompany.com'    from: 'prometheus@yourcompany.com'    smarthost: 'smtp.yourcompany.com:587'    auth_username: 'user'    auth_password: 'pass'

在 Prometheus 中定义告警规则 rules/alerts.yml

groups:- name: example  rules:  - alert: HighPodRestartRate    expr: rate(kube_pod_container_status_restarts_total[5m]) > 0.1    for: 10m    labels:      severity: critical    annotations:      summary: "Pod restart rate exceeds 0.1 per minute"

重启 Prometheus 加载规则,告警将通过 Email、Slack、Webhook 通知到运维团队。


六、性能优化与生产建议

优化项建议
存储使用 SSD 磁盘,设置 storage.tsdb.retention.time=30d 避免磁盘爆满
高可用部署多个 Prometheus 实例 + Thanos 或 Cortex 实现长期存储
权限在 Grafana 中启用 LDAP/SAML 登录,禁用匿名访问
备份定期导出仪表盘 JSON,备份 prometheus_data
监控监控用 Prometheus 监控自身指标,避免“监控雪崩”

七、扩展能力:接入更多数据源

Prometheus + Grafana 不仅限于指标监控。通过集成:

  • Loki:收集容器日志,实现“指标 + 日志”联动分析
  • Tempo:追踪分布式调用链,构建端到端性能视图
  • InfluxDB:存储历史时序数据,用于季度容量规划

企业可构建“三位一体”可观测性平台:Metrics(指标)、Logs(日志)、Traces(链路)


八、结语:构建企业级监控体系的下一步

Prometheus + Grafana 的部署不是终点,而是数字化运营的起点。当您能实时看到微服务的调用延迟、容器的资源争抢、数据库的慢查询趋势时,系统稳定性将从“被动救火”转向“主动预防”。

对于正在构建数据中台、推进数字孪生项目的企业而言,这套监控体系是连接物理世界与数字世界的“神经网络”。它让抽象的数据流动变得可视化,让系统健康度可量化、可追踪、可优化。

为加速您的云原生监控体系建设,我们提供专业部署支持与定制化仪表盘模板,立即申请试用&https://www.dtstack.com/?src=bbs,获取企业级监控最佳实践手册。

想要一键部署完整监控栈?我们已封装 Helm Chart 与 Terraform 模块,支持私有云与混合云环境,立即申请试用&https://www.dtstack.com/?src=bbs。

无论您是运维工程师、数据架构师,还是数字孪生项目负责人,这套方案都值得纳入您的技术选型清单。现在就行动,申请试用&https://www.dtstack.com/?src=bbs,开启您的可观测性升级之旅。


附:推荐学习资源

通过本文部署,您已掌握云原生监控的核心能力。下一步,是将监控数据与业务 KPI 关联,让技术指标驱动商业决策。

申请试用&下载资料
点击袋鼠云官网申请免费试用:https://www.dtstack.com/?src=bbs
点击袋鼠云资料中心免费下载干货资料:https://www.dtstack.com/resources/?src=bbs
《数据资产管理白皮书》下载地址:https://www.dtstack.com/resources/1073/?src=bbs
《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs
《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs
《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs

免责声明
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,袋鼠云不对内容的真实、准确或完整作任何形式的承诺。如有其他问题,您可以通过联系400-002-1024进行反馈,袋鼠云收到您的反馈后将及时答复和处理。
0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料