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

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

   数栈君   发表于 2026-03-30 09:11  54  0
云原生监控:Prometheus+Grafana实战部署 🚀在云原生架构日益普及的今天,企业对系统可观测性的需求已从“可有可无”转变为“生存刚需”。无论是微服务集群、容器编排平台,还是无服务器函数,每一个组件都必须被精准监控。Prometheus + Grafana 的组合,已成为全球90%以上云原生团队的标配监控方案。本文将手把手带你完成从零部署到可视化告警的完整实战流程,适用于数据中台、数字孪生系统及数字可视化平台的运维工程师与架构师。---### 一、为什么选择 Prometheus + Grafana?Prometheus 是由 SoundCloud 开发并捐赠给 CNCF(云原生计算基金会)的开源监控系统,专为动态云环境设计。其核心优势在于:- **拉取式采集(Pull-based)**:主动从目标服务拉取指标,避免推模式下的网络拥塞与单点故障。- **多维数据模型**:使用键值对(label)标记指标,支持灵活聚合与查询(如 `http_requests_total{method="POST", status="500"}`)。- **强大查询语言 PromQL**:可进行时间序列计算、窗口聚合、预测趋势,满足复杂业务指标分析。- **原生集成 Kubernetes**:通过 ServiceMonitor 和 PodMonitor 自动发现服务,无需手动配置。Grafana 则是业界领先的可视化平台,支持超过50种数据源,其仪表盘功能强大、交互流畅,特别适合构建数字孪生系统的实时状态看板。二者结合,形成“采集+展示+告警”闭环,是构建企业级监控体系的黄金搭档。> ✅ 推荐场景:微服务调用链追踪、容器资源利用率监控、API 响应延迟分析、数据库连接池健康度可视化。---### 二、部署环境准备我们将在 Linux 环境下(推荐 Ubuntu 22.04 或 CentOS 8+)部署 Prometheus 和 Grafana,所有组件均使用 Docker Compose 管理,确保环境一致、易于迁移。#### 1. 安装 Docker 和 Docker Compose```bash# 更新系统包sudo apt update && sudo apt upgrade -y# 安装 Dockercurl -fsSL https://get.docker.com | sh# 安装 Docker Composesudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose# 验证安装docker --versiondocker-compose --version```#### 2. 创建项目目录结构```bashmkdir -p ~/prometheus-grafana/{prometheus,grafana}cd ~/prometheus-grafana```目录结构如下:```prometheus-grafana/├── prometheus/│ ├── prometheus.yml│ └── rules/├── grafana/│ └── provisioning/└── docker-compose.yml```---### 三、Prometheus 配置详解#### 1. 编写 `prometheus.yml````yamlglobal: scrape_interval: 15s evaluation_interval: 15srule_files: - "rules/*.yml"scrape_configs: # 监控 Prometheus 自身 - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] # 监控 Node Exporter(主机指标) - job_name: 'node-exporter' static_configs: - targets: ['node-exporter:9100'] # 监控 Kubernetes API Server(若部署在K8s) - job_name: 'kubernetes-apiservers' kubernetes_sd_configs: - role: endpoints scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] action: keep regex: default;kubernetes;https # 监控自定义应用(示例:Java应用暴露 /actuator/prometheus) - job_name: 'java-app' static_configs: - targets: ['my-java-app:8080'] metrics_path: '/actuator/prometheus'```> ⚠️ 注意:若部署在 Kubernetes 中,建议使用 `ServiceMonitor` 而非 `static_configs`,实现自动服务发现。#### 2. 创建告警规则文件在 `prometheus/rules/` 下创建 `alert.rules.yml`:```yamlgroups:- name: example rules: - alert: HighCPUUsage expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 2m labels: severity: critical annotations: summary: "High CPU usage on {{ $labels.instance }}" description: "CPU usage has been above 80% for the last 2 minutes." - alert: HighMemoryUsage expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85 for: 3m labels: severity: warning annotations: summary: "High memory usage on {{ $labels.instance }}" description: "Memory usage is {{ $value }}%, exceeding 85% threshold."```---### 四、Grafana 配置与接入#### 1. 编写 `docker-compose.yml````yamlversion: '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/rules:/etc/prometheus/rules command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.templates=/etc/prometheus/consoles' - '--web.console.templates=/etc/prometheus/consoles' restart: unless-stopped node-exporter: image: prom/node-exporter:v1.6.1 container_name: node-exporter ports: - "9100:9100" restart: unless-stopped grafana: image: grafana/grafana:10.2.2 container_name: grafana ports: - "3000:3000" volumes: - ./grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=Prometheus@2024 restart: unless-stopped```#### 2. 启动服务```bashdocker-compose up -d```访问:- Prometheus:http://localhost:9090- Grafana:http://localhost:3000(默认账号:admin / Prometheus@2024)---### 五、Grafana 数据源与仪表盘配置#### 1. 添加 Prometheus 数据源登录 Grafana → Configuration → Data Sources → Add data source → 选择 Prometheus填写:- URL: `http://prometheus:9090`- Access: Server(默认)- Save & Test → 显示 “Data source is working”#### 2. 导入官方仪表盘Grafana 社区提供大量开箱即用的仪表盘,推荐导入以下两个:- **Node Exporter Full**(ID: 1860):监控主机 CPU、内存、磁盘、网络- **Kubernetes / API Server**(ID: 315):监控 K8s 集群健康状态导入方式:- Dashboard → Import → 输入 ID → Load → 选择 Prometheus 数据源 → Import> 📌 每个仪表盘都包含数十个面板,如:CPU 使用率热力图、内存增长趋势、网络吞吐量、磁盘 I/O 等,完美支撑数字孪生系统中的物理设备映射。#### 3. 自定义关键业务指标看板以“API 响应时间”为例,创建新仪表盘:1. 新建 Panel → 选择 Prometheus 作为数据源2. 输入 PromQL 查询:```promqlhistogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))```3. 设置: - 图表类型:Graph - 单位:秒(s) - 颜色:红色(>1s)、黄色(>0.5s)、绿色(<0.3s)4. 添加注释:`95th percentile latency over last 5 minutes`该面板可直接嵌入企业数字可视化平台,作为服务SLA的核心指标。---### 六、告警通知集成(Alertmanager)Prometheus 本身不发送通知,需搭配 Alertmanager。#### 1. 在 `docker-compose.yml` 中添加 Alertmanager```yaml alertmanager: image: prom/alertmanager:v0.26.0 container_name: alertmanager ports: - "9093:9093" volumes: - ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml restart: unless-stopped```#### 2. 创建 `alertmanager/alertmanager.yml````yamlglobal: resolve_timeout: 5mroute: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'email-notifications'receivers:- name: 'email-notifications' email_configs: - to: 'ops@yourcompany.com' from: 'alertmanager@yourcompany.com' smarthost: 'smtp.gmail.com:587' auth_username: 'your-email@gmail.com' auth_password: 'your-app-password'```> 💡 生产环境建议接入钉钉、企业微信或 Slack,避免邮件延迟。#### 3. 在 Prometheus 中配置 Alertmanager 地址修改 `prometheus.yml`:```yamlalerting: alertmanagers: - static_configs: - targets: - alertmanager:9093```重启 Prometheus 后,告警将自动推送。---### 七、生产环境优化建议| 优化项 | 实施建议 ||--------|----------|| **持久化存储** | 使用 NFS 或云盘挂载 `/prometheus`,避免容器重启丢失数据 || **高可用** | 部署多个 Prometheus 实例 + Thanos 或 Cortex 实现联邦 || **指标保留** | 设置 `--storage.tsdb.retention.time=30d` 控制磁盘占用 || **认证安全** | 在 Grafana 前部署 Nginx + Basic Auth 或 OAuth2 || **自动发现** | 在 Kubernetes 中使用 Prometheus Operator + ServiceMonitor || **性能监控** | 监控 Prometheus 自身的 `prometheus_tsdb_head_samples_appended_total` |---### 八、与数字孪生和数据中台的融合价值在数字孪生系统中,Prometheus 可采集物理设备的传感器数据(通过自定义 Exporter),Grafana 将其映射为三维空间中的动态热力图或状态灯。例如:- 工厂设备温度 → 映射为车间模型中的颜色变化- 数据库连接池饱和度 → 在中台控制台中高亮告警区域- API 调用延迟 → 与业务流程图联动,定位瓶颈节点这种“监控即可视化”的能力,极大提升了运维效率与决策速度。> 🔍 企业用户可将 Prometheus 采集的指标接入数据中台,作为统一指标库的一部分,支撑后续 AI 异常检测与根因分析。---### 九、总结:构建企业级云原生监控体系Prometheus + Grafana 不是工具的简单叠加,而是一套完整的可观测性基础设施。它具备:- ✅ 开源免费,无厂商锁定- ✅ 支持百万级时间序列- ✅ 插件生态丰富(支持 Kafka、Redis、MySQL、Nginx 等)- ✅ 与 CI/CD、K8s、Istio 深度集成无论你是正在构建数据中台的架构师,还是负责数字孪生系统可视化的工程师,这套方案都能为你提供坚实的技术底座。> 🌐 **申请试用&https://www.dtstack.com/?src=bbs** > 为提升监控效率,建议结合企业级数据治理平台,实现指标元数据统一管理。 > > **申请试用&https://www.dtstack.com/?src=bbs** > 适用于大规模集群监控的自动化探针部署与告警策略模板,可显著降低运维成本。 > > **申请试用&https://www.dtstack.com/?src=bbs** > 企业级用户可获得专属监控架构咨询与定制化仪表盘开发服务。---### 十、下一步行动清单1. ✅ 在测试环境部署 Prometheus + Grafana2. ✅ 导入 Node Exporter 仪表盘3. ✅ 编写一条自定义业务指标告警4. ✅ 配置 Email / 钉钉告警通知5. ✅ 将监控数据接入数据中台,构建统一指标视图6. ✅ 评估是否需要引入 Thanos 实现长期存储云原生监控不是一次性项目,而是持续演进的工程。从今天开始,让每一个服务都“看得见”,让每一次故障都“有迹可循”。> 📌 建议每周回顾一次 Grafana 仪表盘,优化指标维度,淘汰无效告警。监控的质量,决定系统的韧性。申请试用&下载资料
点击袋鼠云官网申请免费试用: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条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

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