云原生监控:Prometheus+Grafana实战部署
数栈君
发表于 2026-03-28 10:53
58
0
云原生监控:Prometheus+Grafana实战部署在云原生架构日益普及的今天,企业对系统可观测性的要求已从“可观察”升级为“可预测、可自愈、可优化”。Prometheus 与 Grafana 的组合,已成为全球范围内最主流的云原生监控解决方案。它不仅开源、轻量、可扩展,更深度适配 Kubernetes、微服务、容器化部署等现代基础设施。本文将带你从零开始,完整部署一套生产级的 Prometheus + Grafana 监控体系,覆盖指标采集、存储、可视化与告警配置,适用于数据中台、数字孪生系统及高可用数字可视化平台的运维需求。---### 一、为什么选择 Prometheus + Grafana?Prometheus 是由 SoundCloud 开发并于 2012 年开源的时序数据库,专为动态云环境设计。它采用拉取(pull)模式采集指标,支持多维数据模型,内置强大的 PromQL 查询语言,能高效处理高基数、高频率的监控数据。Grafana 则是开源的可视化平台,支持超过 50 种数据源,其灵活的面板、模板与告警功能,使其成为展示 Prometheus 数据的首选前端。二者结合,形成“采集-存储-查询-展示-告警”闭环,无需依赖商业闭源工具,即可构建企业级监控体系。尤其在数字孪生系统中,实时反映物理设备状态的指标流(如CPU负载、网络延迟、磁盘I/O),必须具备低延迟、高精度、可聚合的能力,Prometheus 正是为此而生。[申请试用&https://www.dtstack.com/?src=bbs](https://www.dtstack.com/?src=bbs)---### 二、部署环境准备建议在 Linux 系统(如 CentOS 7.9 / Ubuntu 20.04)上部署,确保具备以下条件:- Docker 20.10+(推荐使用 Docker Compose 管理多服务)- 至少 4GB 内存(生产环境建议 8GB+)- 20GB 以上可用磁盘空间(Prometheus 默认存储本地 TSDB,数据量大时需扩容)- 开放端口:9090(Prometheus)、3000(Grafana)、9100(Node Exporter)> ✅ **最佳实践**:所有组件部署于独立主机或容器,避免与业务应用混部,确保监控系统自身稳定。---### 三、部署 Prometheus:核心指标采集引擎#### 1. 创建 Prometheus 配置文件新建 `prometheus.yml` 文件,内容如下:```yamlglobal: 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'] # 若在 Docker 内部署,使用 host.docker.internal - 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 - action: labelmap regex: __meta_kubernetes_pod_label_(.+) - source_labels: [__meta_kubernetes_namespace] action: replace target_label: kubernetes_namespace - source_labels: [__meta_kubernetes_pod_name] action: replace target_label: kubernetes_pod_name```> ⚠️ 若部署在 Kubernetes 集群内,需配合 ServiceMonitor 资源自动发现 Pod,此处为简化演示使用静态配置。#### 2. 启动 Prometheus 容器```bashdocker run -d \ --name=prometheus \ -p 9090:9090 \ -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus:v2.51.0```访问 `http://<你的IP>:9090`,进入 Prometheus Web UI。点击 **Status > Targets**,确认 `node_exporter` 和 `prometheus` 均为 UP 状态。#### 3. 部署 Node Exporter:采集主机指标Node Exporter 是 Prometheus 官方提供的主机级指标采集器,可采集 CPU、内存、磁盘、网络等关键指标。```bashdocker run -d \ --name=node_exporter \ -p 9100:9100 \ -v "/proc:/proc:ro" \ -v "/:/rootfs:ro" \ --privileged \ quay.io/prometheus/node-exporter:v1.7.0```> 🔍 指标示例:`node_cpu_seconds_total`、`node_memory_MemAvailable_bytes`、`node_disk_read_bytes_total`---### 四、部署 Grafana:可视化与仪表盘构建#### 1. 启动 Grafana 容器```bashdocker run -d \ --name=grafana \ -p 3000:3000 \ grafana/grafana:10.3.0```首次访问 `http://<你的IP>:3000`,默认用户名/密码为 `admin/admin`,登录后强制修改密码。#### 2. 添加 Prometheus 数据源进入 **Configuration > Data Sources**,点击 **Add data source**,选择 **Prometheus**:- URL: `http://prometheus:9090`(若 Grafana 与 Prometheus 同网络)- 若部署在不同主机,使用 `http://
:9090`- 点击 **Save & Test**,显示“Data source is working”即成功。#### 3. 导入官方仪表盘模板Grafana 社区提供大量预置仪表盘,推荐导入以下两个:- **Node Exporter Full**(ID: 1860):主机资源监控全景图- **Kubernetes / APIServer**(ID: 3119):K8s 集群核心指标点击 **Create > Import**,输入 ID,选择 Prometheus 数据源,点击 **Import**。> 📊 效果展示:仪表盘将实时呈现 CPU 使用率、内存占用、网络吞吐、磁盘 IOPS、进程数等 50+ 指标,支持时间范围拖拽、变量过滤、多维度下钻。[申请试用&https://www.dtstack.com/?src=bbs](https://www.dtstack.com/?src=bbs)---### 五、高级配置:告警规则与通知Prometheus 的告警能力由 Alertmanager 组件实现。我们扩展部署 Alertmanager 并配置规则。#### 1. 创建告警规则文件 `alerts.yml````yamlgroups:- name: node-alerts rules: - alert: HighCPUUsage expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 2m labels: severity: warning annotations: summary: "High CPU usage on {{ $labels.instance }}" description: "CPU usage is above 80% for more than 2 minutes." - alert: LowMemory expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100) < 10 for: 5m labels: severity: critical annotations: summary: "Low available memory on {{ $labels.instance }}" description: "Available memory is below 10% of total."```#### 2. 修改 Prometheus 配置,加载告警规则在 `prometheus.yml` 中添加:```yamlrule_files: - "alerts.yml"alerting: alertmanagers: - static_configs: - targets: - alertmanager:9093```#### 3. 启动 Alertmanager```bashdocker run -d \ --name=alertmanager \ -p 9093:9093 \ -v $(pwd)/alertmanager.yml:/etc/alertmanager/alertmanager.yml \ prom/alertmanager:v0.26.0```创建 `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: 'alert@yourcompany.com' from: 'prometheus@yourcompany.com' smarthost: 'smtp.yourcompany.com:587' auth_username: 'user@yourcompany.com' auth_password: 'yourpassword'```> ✅ 告警触发后,Alertmanager 会聚合、去重、静默重复通知,并通过邮件、Slack、钉钉(需集成 Webhook)发送。---### 六、数字孪生与数据中台场景下的最佳实践在数字孪生系统中,物理设备的运行状态需通过边缘网关采集后上报至云端。Prometheus 可通过 **Pushgateway** 接收来自 IoT 设备的指标,实现“非拉取”模式采集。```bashdocker run -d \ --name=pushgateway \ -p 9091:9091 \ prom/pushgateway:v1.5.1```设备端使用 curl 或 SDK 将指标推送到 `http://pushgateway:9091/metrics/job/device_id`,Prometheus 定期拉取 Pushgateway 数据,实现异构设备统一监控。在数据中台架构中,Prometheus 可作为指标入口,与 Kafka、Flink 结合,实现指标流的实时计算与聚合,再写入时序数据库(如 Thanos、Cortex)实现长期存储。> 📌 **建议架构**: > 设备 → Pushgateway → Prometheus → Thanos(长期存储) → Grafana(可视化) > 告警 → Alertmanager → 企业微信/钉钉/短信平台[申请试用&https://www.dtstack.com/?src=bbs](https://www.dtstack.com/?src=bbs)---### 七、性能优化与生产建议| 项目 | 建议 ||------|------|| 存储 | 使用 SSD 磁盘,避免机械盘;设置 `storage.tsdb.retention.time=30d` 控制数据量 || 高可用 | 部署多个 Prometheus 实例 + Thanos Sidecar,实现联邦查询 || 安全 | 启用 Basic Auth 或 OAuth2;使用 HTTPS;限制外网访问 || 监控自身 | 用 Prometheus 监控 Prometheus(自监控) || 指标命名 | 遵循 Prometheus 命名规范:`{申请试用&下载资料
点击袋鼠云官网申请免费试用:
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进行反馈,袋鼠云收到您的反馈后将及时答复和处理。