Najszybciej na świecie uruchomić Grafanę i Prometheusa można za pomocą kontenerów.
IP maszyny z Proxmoxem: 192.168.1.2
IP maszyny z Grafaną i Prometheusem: 192.168.1.1
Na maszynie 192.168.1.1 mam Dockera, odpalam na niej kontenery z Grafaną i Prometeuszem.
Grafana
grafana.yml
docker-compose -f grafana.yml up -d
version: '3'
volumes:
grafana-data:
driver: local
services:
grafana:
image: grafana/grafana-oss:latest
container_name: grafana
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
restart: unless-stopped
Prometheus
prometheus.yml
docker-compose -f prometheus.yml up -d
version: '3'
volumes:
prometheus-data:
driver: local
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- "9090:9090"
volumes:
- /etc/prometheus:/etc/prometheus
- prometheus-data:/prometheus
restart: unless-stopped
command:
- "--config.file=/etc/prometheus/prometheus.yml"
W /etc/prometheus/prometheus.yml:
global:
scrape_interval: 15s
# sam prometeusz we własnej osobie
scrape_configs:
- job_name: 'prometheus'
# tu nadpisujemy domyślny interwał czasowy
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
# a tu Proxmox
- job_name: 'My Proxmox'
metrics_path: /pve
static_configs:
- targets: ['192.168.1.2:9221']
Na maszynie z Proxmoxem instaluję Python3 oraz eksporter danych Proxmoxa do Prometeusza. Dodaję też użytkownika, na którego uprawnieniach będzie działał eksporter.
apt install python3 python3-pip
pip3 install prometheus-pve-exporter
mkdir /etc/prometheus
groupadd --system prometheus
useradd -s /sbin/nologin --system -g prometheus prometheus
W Proxmoxie tworzę grupę 'auditors’, dodaję użytkownika 'prometheus’ i dodaję do tej grupy. Tworzę Token API o nazwie 'prometheus’ dla tego użytkownika. Zapisuję jego wartość, będzie zaraz potrzebna.
Dodaje uprawnienia, a właściwie rolę PVEAuditors (w opcjach: Permisions) dla użytkownika.
pveum acl modify / -user prometheus@pve -role PVEAuditor
Do pliku: /etc/prometheus/pve.yml wpisuję:
default:
user: prometheus@pve
token_name: "prometheus"
token_value: "3f416134-f0f0-ff5-00f3-002d00ffc00b"
verify_ssl: false
Linia 'token_value’ zawiera wartość tokenu wspomnianą wyżej.
Tworzę plik dla systemd w /etc/systemd/system/prometheus-pve-exporter.service o następującej zawartości:
[Unit]
Description=Prometheus exporter for Proxmox VE
Documentation=https://github.com/znerol/prometheus-pve-exporter
[Service]
Restart=always
User=prometheus
ExecStart=/usr/local/bin/pve_exporter /etc/prometheus/pve.yml
[Install]
WantedBy=multi-user.target
Odświeżam konfig systemd:
systemctl daemon-reload
Odpalam eksporter i sprawdzam czy działa:
systemctl start prometheus-pve-exporter
systemctl status prometheus-pve-exporter
Jeśli jest OK, to włączam automatyczny start:
systemctl enable prometheus-pve-exporter
Na maszynie z Proxmoxem na porcie 9221, eksporter wypluwa metryki, można to sobie obejrzeć:
http://192.168.1.2:9221/pve?target=192.168.1.2
W Grafanie dodaję 'Data Source’ i wybieram 'Prometheus’. W polu URL wpisuję adres maszyny: http://192.168.1.1:9090.
W bocznym menu wybieram Import i w polu 'Import via Grafana.com’ wpisuję liczbę: 10347.
To jest szablon dashboardu do Proxmoxa, gotowiec. Klikam w 'Load’, daję nazwę serwera z Proxmoxem i zachowuję nowy dashboard.