Prometheus + Grafana 构建监控平台

在云原生和微服务时代,系统复杂度飙升,传统监控力不从心。Prometheus + Grafana 组合横扫这一痛点:Prometheus 凭借强大的时序数据采集(Pull/Push)、多维数据模型和高效的 PromQL 查询,精准抓取海量动态指标;Grafana 则以顶级的可视化能力,将数据转化为直观、可交互的仪表盘,实现秒级洞察。开源特性降低成本,组合方案覆盖从基础设施到应用的全栈监控,提供灵活告警,是构建实时、高效、低成本监控平台的事实标准,助你掌控系统脉搏,化被动为主动。


1. Prometheus 与 Grafana 技术定位

Prometheus 和 Grafana 是现代云原生监控体系的核心组件,常用于构建高效、可视化的监控平台。
Prometheus 是一个开源的时序数据库和监控系统,最初由 SoundCloud 开发,现为 CNCF(云原生计算基金会)托管项目。其核心功能包括数据采集(通过 HTTP Pull 模式采集 metrics)、多维数据模型(基于 label 的数据标识)、强大的查询语言(PromQL),以及本地存储与告警能力。

Grafana 是一款开源的数据可视化平台,支持多种数据源(包括 Prometheus)。在监控体系中,Grafana 主要用于构建实时仪表盘,展示 CPU、内存、网络、应用性能等指标。用户可以通过专业的图表、表格等形式灵活展示 Prometheus 中的数据,并设置阈值、告警等。

二者常组合使用:Prometheus 负责采集与处理时序数据,Grafana 负责展示与分析,形成一个完整的监控闭环,广泛应用于微服务、Kubernetes、DevOps 场景。

组件用途部署位置
Prometheus Server核心服务:数据抓取、存储、告警评估监控主节点
Exporters如 Node Exporter、Blackbox Exporter,用于将主机或应用指标暴露为 Prometheus 可采集的格式;所有被监控节点
Alertmanager用于接收 Prometheus 告警并发送通知(如邮件、Slack、Webhook);监控主节点
Pushgateway允许短生命周期任务(如批处理任务)将指标推送至 Prometheus。监控主节点
Grafana Server数据可视化与仪表盘管理监控主节点

2. Prometheus 与 Grafana 部署

2.1 系统准备

节点IP/hostname系统
Prometheus Server / Grafana 10.88.88.76/k8smgtUbuntu Server 22.04 LTS
Node Exporter10.88.88.74/k8sn1Ubuntu Server 22.04 LTS

系统基本配置参考:https://blog.procoding.cn/2025/07/04/using-rek2-to-build-a-6-node-k8s-cluster-part-i-system-preparation/

2.2 Prometheus Server 基础配置文件

首先需要写入Prometheus的基础配置文件到/data/prometheus/prometheus.yml
此配置告诉 Prometheus 每 15 秒从localhost抓取一次指标。

Bash
mkdir -p /data/prometheus
mkdir -p /data/grafana/
chmod -R 777 /data/prometheus/
chmod -R 777 /data/grafana/
nano /data/prometheus/prometheus.yml
YAML – /data/prometheus/prometheus.yml
global:
  scrape_interval: 15s  # Frequency of metric scraping

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

2.3 Prometheus Server 与 Grafana 安装

使用Docker Compose安装,修改volumes(挂载路径)、GF_SECURITY_ADMIN_PASSWORD(grafana密码)变量

version: '3.8'

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    restart: unless-stopped
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=your_password
    volumes:
      - /data/grafana/:/var/lib/grafana
    restart: unless-stopped
Bash
docker-compose -f prometheus_dockerfile.yml  up -d

浏览器中打开http://10.88.88.76:9090/,确认prometheus已完成安装。

浏览器中打开http://10.88.88.76:3000/,确认grafana已完成安装。

2.4 Prometheus Node Exporter 安装

由于 Node Exporter 检测的是主机本身的资源,因此并不适合使用容器化部署。本笔记采用二进制安装的方式部署。

第一步:添加独立的监控用户,避免使用root账户引起额外安全风险。

sudo useradd --no-create-home --shell /bin/false node_exporter

第二步:下载Node Exporter,并安装。

wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz 
tar xvf node_exporter-1.9.1.linux-amd64.tar.gz 
sudo mv node_exporter-1.9.1.linux-amd64  /opt/node_exporter
sudo chown -R node_exporter:node_exporter  /opt/node_exporter

第三步:配置开机启动项。

# 输出开机启动脚本
sudo bash -c 'cat > /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/opt/node_exporter/node_exporter --collector.systemd

[Install]
WantedBy=multi-user.target
EOF'

# 重新加载systemd配置
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable node_exporter
# 启动服务
sudo systemctl start node_exporter
# 检查状态
systemctl status node_exporter

浏览器访问Node Exporter的主机IP+9100端口,如10.88.88.74:9100,即可查看Node Exporter运行状态。

新增Node Exporter后记得更新Prometheus Server的的配置文件,将本机IP和端口插入到/data/prometheus/prometheus.yml配置文件中。

YAML – /data/prometheus/prometheus.yml
global:
  scrape_interval: 15s  # Frequency of metric scraping

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090','10.88.88.74:9100']
Bash
docker restart prometheus

3. Grafana 连接到 Prometheus

3.1 将 Grafana 连接到 Prometheus

点击左侧导航栏 Connections -> Data sources -> Add data source ,填入 Prometheus 的网址后点击Save & Test。

3.2 选择 Grafana 模板

https://grafana.com/grafana/dashboards

这里推荐一个 ID为 1860 的模板:

https://grafana.com/grafana/dashboards/1860-node-exporter-full

下载模板(json):

在 Grafana中的 Dashboards -> New -> Import 导入这个模板:

就可以看到Node Exporter部署机的状态了。

参考文档:

https://signoz.io/guides/how-to-install-prometheus-and-grafana-on-docker

FAQ:

Grafana 重置密码:

Bash
docker exec -it  grafana  grafana-cli admin reset-admin-password 123456
REK2 搭建6节点K8S教程(三):RKE节点安装 REK2 搭建6节点K8S教程(四):K8S可视化管理工具 GitLab CE搭建指南
View Comments
There are currently no comments.