在 OpenStack Rocky 中部署 Prometheus + Grafana

一、环境说明

1. 基础环境

  • OpenStack 版本:Rocky
  • 部署模式:All-in-One
    • 控制节点 + 计算节点在同一台虚拟机
  • 操作系统:CentOS Linux 7.9.2009
  • 虚拟化:KVM + libvirt
  • 网络:宿主机可访问 OpenStack 虚拟机管理网段

2. 目标

  • 使用 Prometheus 采集监控指标
  • 使用 Grafana 进行可视化
  • 监控内容包括:
    • 宿主机(CPU / 内存 / 磁盘)
    • OpenStack 虚拟机实例(CPU / 内存 / 网络)
  • 为后续 实例能耗估算 做数据准备

二、整体架构

复制代码
+--------------------------------------------------+
| OpenStack Rocky All-in-One (CentOS 7.9)          |
|                                                  |
|  +----------------+     +--------------------+  |
|  | node_exporter  | --> |                    |  |
|  | (9100)         |     |                    |  |
|  +----------------+     |                    |  |
|                          |   Prometheus       |  |
|  +----------------+     |   (9090)            |  |
|  | libvirt_exporter| --> |                    |  |
|  | (9177)         |     |                    |  |
|  +----------------+     +--------------------+  |
|                                                  |
|                     +--------------------+       |
|                     | Grafana (3000)     |       |
|                     +--------------------+       |
+--------------------------------------------------+

三、部署 node_exporter(宿主机监控)

1. 下载与解压

shell 复制代码
cd /opt
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xf node_exporter-1.7.0.linux-amd64.tar.gz
ln -s node_exporter-1.7.0.linux-amd64 node_exporter

2. 启动

shell 复制代码
cd /opt/node_exporter
./node_exporter &

3. 验证

复制代码
ss -lntp | grep 9100
curl http://localhost:9100/metrics | head

确认 9100 端口监听成功。


四、部署 libvirt_exporter(实例级监控)

1. 前置依赖(非常关键)

shell 复制代码
yum install -y libvirt-devel libvirt-daemon-devel pkgconfig gcc

2. 编译 libvirt_exporter

shell 复制代码
cd /opt
git clone https://github.com/Tinkoff/libvirt-exporter.git
cd libvirt-exporter
go build -o libvirt-exporter

3. 启动 exporter

shell 复制代码
./libvirt-exporter --libvirt.uri="qemu:///system" &

4. 验证实例指标

shell 复制代码
curl http://localhost:9177/metrics | grep instance

应能看到类似:

shell 复制代码
libvirt_domain_info_cpu_time_seconds_total{domain="instance-0000xxxx"} ...

五、部署 Prometheus

1. 安装

shell 复制代码
cd /opt
wget https://github.com/prometheus/prometheus/releases/download/v2.48.0/prometheus-2.48.0.linux-amd64.tar.gz
tar xf prometheus-2.48.0.linux-amd64.tar.gz
ln -s prometheus-2.48.0.linux-amd64 prometheus

2. 配置文件 /opt/prometheus/prometheus.yml

shell 复制代码
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "node-exporter"
    static_configs:
      - targets: ["localhost:9100"]

  - job_name: "libvirt"
    static_configs:
      - targets: ["localhost:9177"]

3. 启动 Prometheus

shell 复制代码
/opt/prometheus/prometheus \
  --config.file=/opt/prometheus/prometheus.yml &

六、部署 Grafana

1. 安装

shell 复制代码
yum install -y https://dl.grafana.com/oss/release/grafana-10.2.3-1.x86_64.rpm
systemctl enable grafana-server
systemctl start grafana-server

2. 访问

shell 复制代码
http://<OpenStack_IP>:3000

默认账号:

shell 复制代码
admin / admin

3. 添加 Prometheus 数据源

  • URL:http://localhost:9090
  • Save & Test → Success

七、Dashboard 使用说明

1. Node Exporter Full(宿主机)

  • Dashboard ID:1860
  • 注意事项:
    • Prometheus 中的 job 名称需为 node-exporter
    • 导入后必须选择:
      • Job
      • Instance
      • Nodename
  • 常见问题:
    • No data ≠ 没采集数据
    • 多数是变量未选择或 job 名不匹配

2. libvirt 实例监控

公共 Dashboard 在 libvirt 场景下假设差异较大,

最终采用 自定义 Dashboard,直接基于以下指标:

  • libvirt_domain_info_cpu_time_seconds_total
  • libvirt_domain_memory_stats_used_percent
  • libvirt_domain_interface_stats_*

确保:

  • 不依赖固定 job 名
  • 直接按 domain 标签区分实例
相关推荐
rKWP8gKv715 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
江南风月1 天前
WGCLOUD如果使用SQL Server数据库推荐哪个版本
运维·网络·zabbix·运维开发·prometheus
AI木马人2 天前
8.人工智能实战:大模型服务“看起来正常却突然变慢”?Prometheus + Grafana + GPU 指标构建全链路监控体系
人工智能·grafana·prometheus
萧行之3 天前
Docker部署Loki+Grafana+Vector实现全服务器日志监控(含N8N/SSH/Fail2ban监控)
服务器·docker·grafana
invicinble3 天前
关于搭建运维监控系统(Prometheus+Grafana)
运维·grafana·prometheus
Elastic 中国社区官方博客4 天前
使用 Observability Migration Platform 将 Datadog 和 Grafana 的仪表板与告警迁移到 Kibana
大数据·elasticsearch·搜索引擎·信息可视化·全文检索·grafana·datalog
sitellla4 天前
Grafana Loki 入门:高效日志聚合系统
其他·grafana
日取其半万世不竭4 天前
用 Netdata 实时监控服务器,比 Prometheus + Grafana 轻量得多
linux·服务器·网络·系统架构·负载均衡·zabbix·grafana
梵得儿SHI6 天前
(第二篇)Spring AI 架构设计与优化:可观察性体系,打造全链路可视化的 AI 运维方案
人工智能·微服务·grafana·prometheus·监控·可观察性·spring ai
川石课堂软件测试6 天前
AI如何赋能软件测试行业的发展
人工智能·python·功能测试·网络协议·单元测试·测试用例·prometheus