「PVE」- 通过 prometheus-pve-exporter + Prometheus + Grafana Dashboard 监控

  CREATED BY JENKINSBOT

问题描述

该笔记将记录:通过 prometheus-pve-exporter + Prometheus + Grafana Dashboard 监控 PVE Cluster 的方法,以及相关问题的解决办法。

解决方案

prometheus-pve-exporter + Prometheus + Grafana Dashboard
GitHub/prometheus-pve/prometheus-pve-exporter
Hetzner Online Community/Gather metrics of your Proxmox server with Prometheus

Grafana Dashboard
https://grafana.com/grafana/dashboards/10347-proxmox-via-prometheus/

第一步、prometheus-pve-exporter

Prometheus-pve-exporter Helm Chart | Datree
prompve/prometheus-pve-exporter Tags | Docker Hub
GitHub/prometheus-pve/prometheus-pve-exporter

# 10/22/2022 当前最新为 v2.2.4 版本;

helm repo add stenic https://charts.stenic.io/
helm repo update

helm pull stenic/prometheus-pve-exporter                                        # prometheus-pve-exporter-0.1.1.tgz
helm show values ./prometheus-pve-exporter-0.1.1.tgz > prometheus-pve-exporter-0.1.1.helm-values.yaml

vim prometheus-pve-exporter-0.1.1.helm-values.yaml
...(1)修改 image.tag: "2.2.4" 参数;(尽管该 Chart 是针对于 pve-exporter 2.0.1 版本)
...(2)修改 pve.user pve.password pve.verify_ssl 参数;

helm install --namespace observing-system --create-namespace                   \
    mon-exp-pve ./prometheus-pve-exporter-0.1.1.tgz -f prometheus-pve-exporter-0.1.1.helm-values.yaml

第二步、Prometheus Server

我们的 Promethues 是通过 Helm Chart 部署的,所以修改 values.yaml 文件:

...
extraScrapeConfigs: |
  - job_name: 'pve'
    static_configs:
    - targets:
      # 任意 Target 便能够完成采集
      # 多个 Target 用于实现高可用
      - 172.31.253.254  # Proxmox VE node with PVE exporter.
    metrics_path: /pve
    params:
      module: [default]
    relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: mon-exp-pve-prometheus-pve-exporter:9221  # PVE exporter.
...

关于 targets 参数:
1)任意 PVE Cluster Node 即可,不需要指定所有 PVE Cluser Node;
2)能够指定多个 Node,以在某个 Node 故障后,能够使用其他 Node 继续抓取数据;
3)能够通过 round robin DNS 来简化配置(Monitoring a cluster using round robin DNS

第三步、Grafana Dashboard

导入 Grafana Labs/Proxmox via Prometheus 面板,以显示数据;

已知问题

无法显示磁盘使用情况

pve_disk_usage_bytes on all qemu guest is null · Issue #77
Proxmox VE API Documentation/#/nodes/{node}/qemu/{vmid}/agent/get-fsinfo

问题描述:在 Disk Usage 中,QEMU 虚拟机的磁盘使用情况为 10%;

原因分析:虽然能够通过 pvesh get /nodes/{node}/qemu/{vmid}/agent/get-fsinfo 获得 Guest 的磁盘使用情况,但是 prometheus-pve-exporter 并未实现该功能,所以 exporter 给到的 pve_disk_usage_bytes 数据为零;

解决方案:

参考文献

prometheus-pve/prometheus-pve-exporter