Grafana + Prometheus + Proxmox czyli prezentacja metryk z serwera
Posted on Sat 11 February 2023 in Linux, Proxmox, Wirtualizacja • 2 min read
Najszybciej na świecie uruchomić Grafanę i Prometheusa można za pomocą kontenerów.
Na maszynie 192.168.1.1 mam Dockera, odpalam na niej kontenery z Grafaną i Prometeuszem.
Grafana
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
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.