پرش به محتوا

پایش Proxmox با Prometheus و اعلان‌های ایمیلی

با یک توکن فقط‌خواندنی و pve-exporter وضعیت نودها، ماشین‌ها و storageها را به Prometheus بدهید و اعلان شکست بکاپ و خرابی دیسک را به ایمیل بفرستید.

Proxmox VE 9سطح: متوسطبه‌روزرسانی: ۱۷ آبان ۱۴۰۵

۱. توکن فقط‌خواندنی

روی یکی از نودهای Proxmox:

bash
pveum user add prometheus@pve --comment "metrics exporter"
pveum user token add prometheus@pve exporter --privsep 1
pveum acl modify / --tokens 'prometheus@pve!exporter' --roles PVEAuditor

مقدار value توکن را یادداشت کنید، چون دیگر نمایش داده نمی‌شود. نقش PVEAuditor فقط اجازه‌ی خواندن می‌دهد.

۲. نصب pve-exporter روی سرور مانیتورینگ

exporter را روی سرور Prometheus (یا یک LXC جداگانه) نصب کنید، نه روی خود نود:

bash
sudo apt install -y python3-venv
sudo python3 -m venv /opt/pve-exporter
sudo /opt/pve-exporter/bin/pip install prometheus-pve-exporter

/etc/prometheus/pve.yml (دسترسی فقط برای کاربر سرویس):

yaml
default:
  user: prometheus@pve
  token_name: exporter
  token_value: "PASTE-TOKEN-VALUE"
  verify_ssl: false

اگر گواهی Proxmox از CA معتبر است، verify_ssl را true بگذارید.

/etc/systemd/system/pve-exporter.service:

ini
[Unit]
Description=Prometheus Proxmox VE exporter
After=network-online.target

[Service]
User=prometheus
ExecStart=/opt/pve-exporter/bin/pve_exporter --config.file /etc/prometheus/pve.yml --web.listen-address 127.0.0.1:9221
Restart=on-failure

[Install]
WantedBy=multi-user.target
bash
sudo chown prometheus /etc/prometheus/pve.yml && sudo chmod 600 /etc/prometheus/pve.yml
sudo systemctl daemon-reload && sudo systemctl enable --now pve-exporter
curl -s '127.0.0.1:9221/pve?target=192.168.10.11' | grep -m5 '^pve_up'

۳. Prometheus

در prometheus.yml:

yaml
scrape_configs:
  - job_name: proxmox
    metrics_path: /pve
    params:
      module: [default]
      cluster: ['1']
      node: ['1']
    static_configs:
      - targets: ['192.168.10.11', '192.168.10.12']
    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_up: روشن بودن نود، VM یا کانتینر (۱ یا ۰)
  • pve_cpu_usage_ratio: مصرف CPU
  • pve_memory_usage_bytes / pve_memory_size_bytes: نسبت مصرف حافظه
  • pve_disk_usage_bytes / pve_disk_size_bytes: پر شدن storage

داشبورد آماده‌ی «Proxmox via Prometheus» را در Grafana وارد کنید.

۴. اعلان‌های داخلی Proxmox

از Proxmox 8.1 به بعد اعلان‌ها در Datacenter › Notifications تنظیم می‌شوند:

  1. در Notification Targets یک مقصد SMTP بسازید (سرور ایمیل، پورت 587، نام کاربری و رمز).
  2. در Notification Matchers، matcher پیش‌فرض را ویرایش کنید تا رخدادهای با شدت error و warning به همین مقصد بروند.
  3. با دکمه‌ی Test یک ایمیل آزمایشی بفرستید.

شکست بکاپ، خرابی دیسک (از smartd و ZFS ZED) و نبود به‌روزرسانی‌ها از همین مسیر ارسال می‌شوند. فایل تنظیمات در /etc/pve/notifications.cfg است و بین نودهای خوشه مشترک است.