Skip to main content

Command Palette

Search for a command to run...

Grafana 配置 Prometheus Proxmox VE Exporter

Published
Grafana 配置 Prometheus Proxmox VE Exporter

冥冥之中,自有天意。

本文不做基础知识的扫盲。

我一直想将 PVE 上全量的虚拟机纳入 Grafana 中展示,然而又不想一台台的配置 node_exporter。偶然的机会听说了 Prometheus Proxmox VE Exporter 插件,索性配置一下这个插件,将 PVE 的数据接入 Grafana。

整体架构如下图:

1. 配置 PVE 用户

网上的很多教程都是直接拿 root@pam 账户来进行操作,但特权账号用作监控其实是安全风险蛮高的一件事情。这里我们单独建立一个审计(PVEAuditor)账户来执行操作。

建立账户很简单,登录网页控制台,在数据中心(Datacenter) → 权限(Permissions) → 用户(Users)中,直接添加一个用户即可。我这里使用的用户名是 monitor,鉴权方式(Realm)选择的是 PVE 鉴权。

之后要给用户配置审计角色(Role),这里很搞的是,PVE 没有办法通过 WebUI 来配置,需要登录到控制台执行命令:pveum aclmod / -user monitor@pve -role PVEAuditor 来实现。

命令执行成功后没有任何回显,但可以在 WebUI 中点击 Permissions 按钮就可以看到用户对应的权限。

2. 创建配置文件

在本地创建一个 pve.yml 文件,用于保存 PVE 的访问凭证。

可以使用密码或者 token,我这里使用的是密码,Token 的配置可参考项目官方 Github:https://github.com/prometheus-pve/prometheus-pve-exporter?tab=readme-ov-file#authentication

💡
我的 PVE 绑定了域名并配置了有效的证书,如果你使用的是自签名证书,请不要开启 SSL 校验。

3. 拉起插件的 Docker 镜像

最开始我其实是希望在本地直接用 Python 虚拟环境启动的,结果在使用 pip install prometheus-pve-exporter 的过程中,有一个依赖始终找不到,后面懒得去找了,索性直接拉 Docker 镜像。

拉镜像也很简单,直接命令执行 docker run --init --name prometheus-pve-exporter -d -p 127.0.0.1:9221:9221 -v /root/pve.yml:/etc/prometheus/pve.yml prompve/prometheus-pve-exporter 即可。

注:我的 prometheus-pve-exporter 和 prometheus、Grafana 是放在同一台机器上的,如果你的 exporter 是放在 PVE 宿主机上的,监听请监听 0.0.0.0 而非 127.0.0.1。

拉起来之后可以通过命令 curl http://localhost:9221/pve?target=<PVE IP地址> 试一下,看看能不能读取到 metrics。

4. 添加 Prometheus 配置

这一步直接跟着官网的操作,在Prometheus 的配置文件 scrape_configs 下新增一项即可(注意不要出现两个 scrape_configs: ,同时记得调整 Proxmox VE node 的地址)。

scrape_configs:
  - job_name: 'pve'
    static_configs:
      - targets:
        - 192.168.1.2  # Proxmox VE node.
        - 192.168.1.3  # Proxmox VE node.
    metrics_path: /pve
    params:
      module: [default]
      cluster: ['1']
      node: ['1']
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9221  # PVE exporter.

如果是部署在 PVE 上,则无需配置 relabel_configs 相关字段,具体可参考官方 Github:https://github.com/prometheus-pve/prometheus-pve-exporter?tab=readme-ov-file#prometheus-configuration

添加完成后,执行 systemctl restart prometheus 重启 Prometheus。

后续可以访问 Prometheus 网页,通过 StatusTarget health 查看配置项的运行状态。

5. Grafana 中添加 Dashboard

一方面传统的 Dashboard 依然可以使用,同时也可以添加针对 PVE 定制的 Dashboard,个人比较推荐:https://grafana.com/grafana/dashboards/10347-proxmox-via-prometheus/

添加完成后即可在仪表盘中查看对应的监控信息。

More from this blog

刘梦熊:问题在经济,根子在政治

导语:在美国和西方发达国家,经济繁荣、衰退、复苏、繁荣周而复始,有其周期性和相应的经济对策。但中国是政治挂帅,政治凌驾经济,而且习惯只算政治账,不算经济账。当前中国经济盛极而衰,正是由于中共只搞局部经济体制改革,迟迟不启动政治体制改革带来的恶果。 当前中国经济面临私企倒闭潮、外企撤离潮、投资大幅萎缩潮、出生人口下降潮、消费严重不足潮、债务连环爆煲潮,员工大规模失业潮,政府财税失血潮……投资、出口、消费三大经济引擎全部动力不足乃至死火。中国国家统计局日前公布的7月份经济数据,不是疲弱下挫就是远...

Aug 29, 2023
刘梦熊:问题在经济,根子在政治

WireGuard 配置 Global IPv6 (公网下放)

众所周知,IPv6 和 IPv4 不同,IPv6 的地址池更加丰富,也摒弃了 IPv4 中目前常见的 NAT 做法(虽然有 NAT6 的存在,但这终究是一种不受推荐的选择)。对于如果 WireGuard 中的一个 Peer 存在 IPv6 前缀(即 IP 地址不是/128),该设备就可以作为 Server,将前缀下的一部分地址分配给 VPN 中的其他设备的。 本文以 WireGuard 为例进行展示,IP地址均为静态指定,不涉及 DHCPv6。 首先给出网络拓扑图: 1. 更改 Linux 配...

Aug 14, 2023
WireGuard 配置 Global IPv6 (公网下放)

Kali 2021.2 安装搜狗输入法

我平时比较懒,不愿意手工安装系统,而是使用官方的 VMware 镜像,但官方镜像的语言支持只提供了 English。对于偶尔需要输入个中文的我来说,还是有些困扰的。 1、 换源 从官网下载 deb 包:https://pinyin.sogou.com/linux/?r=pinyin 推荐使用 apt install ./sogouxxxxx.deb,自动解决依赖问题,省心。 2、左上角图标,所有程序中输入input,找到 Input Method。 在一堆弹窗之后,将输入法切换到 Fcitx。...

Mar 10, 2023
Kali 2021.2 安装搜狗输入法

四种不同类型的 Nat

1 完全圆锥形 NAT(Full cone NAT) 对于完全圆锥形 NAT,内网 IP 和内网端口号,被映射为外部 IP 和外部端口号。当路由器收到来自外部的报文时,只要报文的目的 IP 和目的端口号,匹配到 NAT 表项的外部 IP 和外部端口号,都会转换为对应的内网 IP 和内网端口号,转发到内网设备。 对于外部报文,路由器并不关心报文的源 IP 和源端口号(即报文来自谁),只要收到匹配 NAT 表项的报文,都能发送到内网设备。所以,完全圆锥形 NAT 是最宽松的 NAT,打洞最方便。 ...

Jan 13, 2023
四种不同类型的 Nat

Xiaoxk's Blog

27 posts

你看那通天的巨塔,每时每刻都有人往下跳。我小时候不懂,以为那是雪花。