云原生监控:Prometheus+Grafana实战部署
数栈君
发表于 2026-03-27 15:02
43
0
云原生监控:Prometheus+Grafana实战部署 🚀在云原生架构快速普及的今天,企业对系统可观测性的需求已从“可有可无”升级为“生存刚需”。无论是微服务集群、容器编排平台,还是无服务器函数,每一个组件都必须被精准监控。Prometheus + Grafana 作为开源生态中最成熟、最广泛采用的云原生监控组合,已成为技术团队构建可观测性体系的黄金标准。本文将带你从零开始,完成一套生产级云原生监控系统的实战部署,涵盖核心组件安装、配置优化、指标采集与可视化呈现,适用于数据中台、数字孪生和数字可视化场景下的高可用监控需求。---### 一、为什么选择 Prometheus + Grafana?Prometheus 是由 SoundCloud 开发并捐赠给 CNCF 的开源监控系统,专为动态云环境设计。它采用拉取(Pull)模型采集指标,支持多维数据模型(时间序列 + 标签),具备强大的 PromQL 查询语言,可高效聚合、过滤和计算指标。Grafana 则是领先的开源可视化平台,支持超过50种数据源,其灵活的仪表盘设计能力,让复杂监控数据变得直观易懂。二者结合,形成“采集+展示”的闭环: - Prometheus 负责高效、可靠地抓取指标 - Grafana 负责多维度、交互式呈现与告警联动 相比传统监控工具,该组合具备以下优势: ✅ 原生支持 Kubernetes、Docker、Node Exporter 等云原生组件 ✅ 无需代理,无侵入式采集,降低系统开销 ✅ 社区生态丰富,Exporter 生态覆盖90%以上主流中间件 ✅ 支持高可用与水平扩展,适用于千节点集群 [申请试用&https://www.dtstack.com/?src=bbs]---### 二、部署环境准备在开始部署前,请确保具备以下基础环境:- **操作系统**:Ubuntu 22.04 LTS 或 CentOS 7.9+(推荐使用 Linux 系统,避免 Windows 环境下权限与路径问题) - **硬件要求**: - 监控服务器:4核CPU / 8GB RAM / 100GB SSD(适用于100节点以下集群) - 若用于生产环境,建议启用独立部署,避免与业务节点混用 - **网络要求**: - Prometheus 节点需能访问所有目标服务的 `/metrics` 端点(默认端口9100、9090等) - Grafana Web 端口(3000)需对外暴露,建议配置反向代理(Nginx)并启用 HTTPS > ⚠️ 注意:确保防火墙开放端口:9090(Prometheus)、9100(Node Exporter)、3000(Grafana)---### 三、部署 Prometheus 监控核心#### 1. 下载并安装 Prometheus```bash# 下载最新稳定版(截至2024年为2.50.1)wget https://github.com/prometheus/prometheus/releases/download/v2.50.1/prometheus-2.50.1.linux-amd64.tar.gz# 解压tar xvfz prometheus-2.50.1.linux-amd64.tar.gzcd prometheus-2.50.1.linux-amd64# 创建用户与目录sudo useradd --no-create-home --shell /bin/false prometheussudo mkdir /etc/prometheussudo mkdir /var/lib/prometheus# 复制二进制文件sudo cp prometheus /usr/local/bin/sudo chown prometheus:prometheus /usr/local/bin/prometheus# 复制配置模板sudo cp prometheus.yml /etc/prometheus/sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml```#### 2. 配置 Prometheus 监控目标编辑 `/etc/prometheus/prometheus.yml`,添加以下关键配置:```yamlglobal: scrape_interval: 15s evaluation_interval: 15sscrape_configs: # 监控本机(Node Exporter) - job_name: 'node' static_configs: - targets: ['localhost: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 # 自定义应用指标(示例:Spring Boot应用) - job_name: 'spring-boot-app' static_configs: - targets: ['192.168.1.10:8080'] # 替换为实际应用地址```> 💡 提示:Prometheus 默认每15秒拉取一次指标,适用于大多数场景。若需更高精度(如金融交易监控),可调整为5s,但会增加存储压力。#### 3. 创建 Systemd 服务创建 `/etc/systemd/system/prometheus.service`:```ini[Unit]Description=PrometheusWants=network-online.targetAfter=network-online.target[Service]User=prometheusGroup=prometheusType=simpleExecStart=/usr/local/bin/prometheus \ --config.file /etc/prometheus/prometheus.yml \ --storage.tsdb.path /var/lib/prometheus/ \ --web.console.templates=/etc/prometheus/consoles \ --web.console.template=/etc/prometheus/console.tmpl \ --web.listen-address=0.0.0.0:9090 \ --web.enable-admin-api \ --web.enable-lifecycleRestart=always[Install]WantedBy=multi-user.target```启动服务:```bashsudo systemctl daemon-reloadsudo systemctl enable prometheussudo systemctl start prometheus```验证是否运行成功:```bashcurl http://localhost:9090/-/healthy# 返回 "ok" 表示正常```---### 四、部署 Node Exporter(主机指标采集)Node Exporter 是 Prometheus 官方提供的主机级指标采集器,可监控 CPU、内存、磁盘、网络等关键指标。```bash# 下载wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gztar xvfz node_exporter-1.7.0.linux-amd64.tar.gzcd node_exporter-1.7.0.linux-amd64# 安装sudo cp node_exporter /usr/local/bin/sudo chown root:root /usr/local/bin/node_exporter# 创建服务sudo tee /etc/systemd/system/node_exporter.service <
:9100/metrics`,应看到大量以 `node_` 开头的指标,如 `node_cpu_seconds_total`、`node_memory_MemAvailable_bytes`。---### 五、部署 Grafana 可视化平台Grafana 不仅是看板工具,更是企业级数据洞察中枢。#### 1. 安装 Grafana```bash# 添加官方仓库(Ubuntu)sudo apt-get install -y apt-transport-httpssudo apt-get install -y software-properties-common wgetwget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list# 安装sudo apt-get updatesudo apt-get install -y grafana# 启动sudo systemctl daemon-reloadsudo systemctl enable grafana-serversudo systemctl start grafana-server```#### 2. 登录并配置数据源打开浏览器,访问 `http://:3000`,默认账号密码为 `admin/admin`,首次登录强制修改密码。进入 **Configuration → Data Sources → Add data source**,选择 **Prometheus**:- URL:`http://localhost:9090`(若 Grafana 与 Prometheus 同机) - Access:`Server`(推荐) - 点击 **Save & Test**,成功后显示 “Data source is working”#### 3. 导入官方仪表盘模板Grafana 社区提供大量预置仪表盘,推荐导入以下两个:- **Node Exporter Full**(ID: 1860):全面展示主机资源使用情况 - **Kubernetes / API Server**(ID: 3119):适用于 K8s 集群监控 导入路径:**Create → Import** → 输入 ID → 选择 Prometheus 数据源 → Import> 📊 仪表盘效果: > - 实时 CPU 使用率热力图 > - 内存使用趋势折线图 > - 磁盘 I/O 与网络流量监控 > - 进程数量与系统负载监控 [申请试用&https://www.dtstack.com/?src=bbs]---### 六、高级实践:监控自定义应用指标在数字孪生或数据中台场景中,业务系统(如数据管道、ETL任务、API网关)需暴露自定义指标。以 Java Spring Boot 应用为例,引入 Micrometer:```xml io.micrometer micrometer-registry-prometheus```配置 `application.yml`:```yamlmanagement: endpoints: web: exposure: include: prometheus,health metrics: enabled: true```重启应用后,访问 `http://:8080/actuator/prometheus`,即可看到自定义指标如:```http_server_requests_seconds_count{uri="/api/data",method="GET"} 154```在 Prometheus 中添加该 Job,Grafana 中即可创建“API响应延迟分布”、“请求成功率”等专属看板。---### 七、告警配置:从监控到主动响应Prometheus 内置 Alertmanager 实现告警路由。创建 `/etc/prometheus/alert.rules`:```yamlgroups:- name: node-alerts rules: - alert: HighNodeCPUUsage expr: 100 - (avg by (instance) (rate(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 is above 80% for more than 2 minutes."```在 `prometheus.yml` 中添加:```yamlrule_files: - "alert.rules"alerting: alertmanagers: - static_configs: - targets: - localhost:9093```安装 Alertmanager:```bashwget https://github.com/prometheus/alertmanager/releases/download/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gztar xvfz alertmanager-*.tar.gzcd alertmanager-*sudo cp alertmanager /usr/local/bin/sudo cp alertmanager.yml /etc/alertmanager/```配置邮件/钉钉/企业微信告警通道,实现“故障即通知”。---### 八、生产环境优化建议| 优化项 | 建议 ||--------|------|| 存储 | 使用 SSD,设置 `storage.tsdb.retention.time=30d` 避免磁盘爆满 || 高可用 | 部署两个 Prometheus 实例 + Thanos 或 Cortex 实现长期存储 || 认证 | 为 Grafana 启用 SSO(LDAP/OAuth2) || 缓存 | 在 Prometheus 前部署 Nginx 缓存静态指标 || 监控监控 | 用 Prometheus 监控自身指标,避免“监控雪崩” |[申请试用&https://www.dtstack.com/?src=bbs]---### 九、总结:构建企业级云原生监控体系Prometheus + Grafana 不仅是一套工具,更是一种可观测性文化。它让运维从“被动救火”转向“主动预测”,让数据中台的每一条数据流、每一个数字孪生节点的状态都清晰可见。通过本文部署,你已掌握:- Prometheus 指标采集架构 - Node Exporter 主机监控 - Grafana 仪表盘设计与模板复用 - 自定义应用指标暴露 - 告警规则配置与通知联动 下一步,可结合 Loki(日志)与 Tempo(链路追踪),构建完整的“Metrics-Logs-Traces”三位一体可观测体系。无论是构建企业级数据中台,还是实现数字孪生的实时状态映射,这套组合都是你最值得信赖的“数字神经系统”。立即行动,部署你的第一套云原生监控系统,让数据不再沉默。 [申请试用&https://www.dtstack.com/?src=bbs]申请试用&下载资料
点击袋鼠云官网申请免费试用:
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进行反馈,袋鼠云收到您的反馈后将及时答复和处理。