在云原生和微服务时代,系统复杂度飙升,传统监控力不从心。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/k8smgt | Ubuntu Server 22.04 LTS |
Node Exporter | 10.88.88.74/k8sn1 | Ubuntu Server 22.04 LTS |
2.2 Prometheus Server 基础配置文件
首先需要写入Prometheus的基础配置文件到/data/prometheus/prometheus.yml
此配置告诉 Prometheus 每 15 秒从localhost抓取一次指标。
mkdir -p /data/prometheus
mkdir -p /data/grafana/
chmod -R 777 /data/prometheus/
chmod -R 777 /data/grafana/
nano /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
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配置文件中。
global:
scrape_interval: 15s # Frequency of metric scraping
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090','10.88.88.74:9100']
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 重置密码:
docker exec -it grafana grafana-cli admin reset-admin-password 123456