Skip to content

Prometheus 和 Grafana搭建指南 ​


环境信息 ​

Prometheus Server:

10.7.220.106

Prometheus:

9090

Grafana:

3000

Node Exporter:

9100

Docker环境:

docker-compose

Step1 创建工作目录 ​

创建服务目录:

mkdir -p /data/prometheus
cd /data/prometheus

目录结构:

预期:

/data/prometheus
├── docker-compose.yml
└── prometheus.yml

Step2 创建 Prometheus 配置文件 ​

创建:

vim prometheus.yml

写入:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets:
        - "localhost:9090"

  - job_name: "node-exporter"
    static_configs:
      - targets:
        - "10.7.220.106:9100"

说明:

global:
    全局采集周期

scrape_configs:
    配置监控目标

job_name:
    指标分类名称

targets:
    exporter地址

Step3 创建 Docker Compose 文件 ​

创建:

vim docker-compose.yml

写入:

services:
  prometheus:
    image: prometheus:2.46.0
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus-data:/prometheus

  grafana:
    image: grafana:10.4.3
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana

volumes:
  prometheus-data:
  grafana-data:

Step4 启动 Prometheus 和 Grafana ​

执行:

docker-compose up -d

查看状态:

docker ps

预期:

prometheus    Up
grafana       Up

Step5 验证 Prometheus 服务 ​

访问:

http://10.7.220.106:9090

进入:

Status
 ↓
Targets

查看:

prometheus

UP

验证 PromQL:

进入:

Graph

执行:

up

预期:

up{instance="localhost:9090"} 1

说明 Prometheus 工作正常。


Step6 验证 Node Exporter ​

查看节点指标:

PromQL:

node_cpu_seconds_total

预期:

返回 CPU 指标。


查看磁盘:

node_filesystem_size_bytes

查看内存:

node_memory_MemTotal_bytes

Step7 登录 Grafana ​

访问:

http://10.7.220.106:3000

默认账号:

admin

默认密码:

admin

首次登录:

修改密码。


Step8 添加 Prometheus 数据源 ​

进入:

Connections

↓

Data sources

↓

Add data source

↓

Prometheus

配置:

URL:

http://prometheus:9090

点击:

Save & Test

预期:

Data source is working

Step9 导入 Dashboard ​

进入:

Dashboards

↓

New

↓

Import

输入 Dashboard ID:

例如:

1860

选择:

Prometheus

点击:

Import

完成 Node Exporter Dashboard 导入。


Step10 新增监控节点 Exporter 部署 ​

一. Node Exporter(10.7.220.107) ​

用于监控:

  • CPU
  • Memory
  • Disk
  • Network
  • System

1. 删除旧容器 ​

docker stop node-exporter

docker rm node-exporter

2. 启动 Node Exporter ​

docker run -d \
  --name node-exporter \
  --net=host \
  --pid=host \
  --restart=always \
  -v /proc:/host/proc:ro \
  -v /sys:/host/sys:ro \
  -v /:/rootfs:ro \
  -v /var/lib/node-exporter:/var/lib/node-exporter:ro \
  docker.m.daocloud.io/prom/node-exporter:v1.7.0 \
  --path.rootfs=/rootfs \
  --path.procfs=/host/proc \
  --path.sysfs=/host/sys \
  --collector.netdev \
  --collector.textfile.directory=/var/lib/node-exporter \
  --collector.netstat

3. 验证 Node Exporter ​

查看状态:

docker ps | grep node-exporter

检查 Metrics:

curl localhost:9100/metrics

正常输出:

# HELP node_cpu_seconds_total
# TYPE node_cpu_seconds_total counter

说明 Node Exporter 工作正常。


二. MetaX GPU Exporter(GPU节点) ​

用于监控:

  • GPU温度
  • GPU显存
  • GPU状态
  • ECC
  • 编解码利用率

1. 启动 mx-exporter ​

docker run -d \
  --name mx-exporter \
  --device=/dev/dri \
  -p 8000:8000 \
  cr.metax-tech.com/cloud/mx-exporter:0.13.2

2. 验证 mx-exporter ​

查看状态:

docker ps | grep mx-exporter

查看日志:

docker logs mx-exporter

检查 Metrics:

curl localhost:8000/metrics

预期:

# HELP mx_device_type

# TYPE mx_device_type gauge

mx_device_type{deviceId="0"} 1

说明 GPU Exporter 工作正常。


Step11 添加监控节点到 Prometheus ​

修改:

vim prometheus.yml

新增 Node Exporter:

- job_name: "node-exporter"

  static_configs:
    - targets:
      - "10.7.220.107:9100"

新增 MetaX GPU:

- job_name: "mx-exporter"

  static_configs:
    - targets:
      - "10.7.220.254:8000"

Step12 重启 Prometheus ​

当前 Prometheus 未开启:

--web.enable-lifecycle

因此不能使用:

curl -X POST http://10.7.220.106:9090/-/reload

执行:

docker restart prometheus

Step13 常用 PromQL ​

CPU利用率 ​

100 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100

内存使用率 ​

100 * (1-node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes)

磁盘使用率 ​

100 * (
1 -
node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"}
/
node_filesystem_size_bytes{fstype!~"tmpfs|overlay"}
)

GPU温度 ​

mx_chip_hotspot_temp

GPU显存使用率 ​

mx_memory_usage{type="vram"}
/
mx_memory_total{type="vram"}
*100

Step14 故障排查 ​

Prometheus 无法启动 ​

查看:

docker logs prometheus

检查配置:

docker exec prometheus \
promtool check config /etc/prometheus/prometheus.yml

Grafana 无法访问 ​

查看:

docker logs grafana

检查端口:

ss -lntp | grep 3000

Prometheus 无法抓取 Exporter ​

检查:

curl http://目标IP:端口/metrics

例如:

curl http://10.7.220.254:8000/metrics

正常:

# HELP xxx
# TYPE xxx gauge
xxx 1

修改配置后未生效 ​

检查:

docker restart prometheus

查看:

Status
 ↓
Targets

确认:

UP

Step15 服务维护命令 ​

查看服务:

docker ps

停止:

docker-compose down

启动:

docker-compose up -d

重启:

docker-compose restart

查看日志:

docker logs -f prometheus

docker logs -f grafana

Step16 数据持久化说明 ​

Grafana 数据:

grafana-data volume

保存:

  • 用户账号
  • Dashboard
  • 数据源配置

Prometheus 数据:

默认保存在容器内部。

生产环境建议增加:

volumes:

  - ./prometheus-data:/prometheus

避免容器删除导致历史数据丢失。


完成标准 ​

验证:

Prometheus      UP
Grafana         UP
Node Exporter   UP
mx-exporter     UP

Grafana 可以正常展示:

CPU
Memory
Disk
GPU
Temperature
Power
Network

说明 Prometheus + Grafana 监控服务部署完成。