İçerik
Proxmox’un kendisi, sanal makineler, container’lar ve depolar gibi her türlü kaynağı izlemek için çok iyi bir arayüze sahiptir. Diğer servisler için prometheus ve grafana kullandığım için proxmox için de kullanmaya karar verdim. Hemen kuruluma geçelim.
Not: Bu öğretici, Proxmox 7 için yazılmıştır. Komutların çoğunun değişmemesi gerekirken, ana sürümler arasında bazı farklılıklar olabilir.
Prometheus’u yükleyin
Öncelikle prometheus için özel bir kullanıcı oluşturuyoruz. Bu şekilde, hizmetlerin daha iyi bir şekilde kapsanmasına sahip olacağız.
Bir kullanıcı oluşturun
groupadd --system prometheus
useradd -s /sbin/nologin --system -g prometheus prometheus
Bu kullanıcının herhangi bir shell’e ihtiyacı yok, bu yüzden -s /sbin/nologin
flag’ı ekledik.
Veri ve yapılandırma için dizinler oluşturun
Ardından, verileri ve yapılandırma dosyalarını depolamak için Prometheus için gerekli klasörleri oluşturuyoruz.
mkdir /var/lib/prometheus
for i in rules rules.d files_sd; do mkdir -p /etc/prometheus/${i}; done
Prometheus’u indirin ve kurun
Artık Prometheus’un son sürümünü doğrudan Github’dan indirmeye hazırız.
mkdir -p /tmp/prometheus && cd /tmp/prometheus
curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest \
| grep browser_download_url \
| grep linux-amd64 \
| cut -d '"' -f 4 \
| wget -qi -
Dosyayı çıkartmalı ve tüm dosyaları doğru dizine taşımalıyız.
tar xvf prometheus*.tar.gz
cd prometheus*/
mv prometheus promtool /usr/local/bin/
mv prometheus.yml /etc/prometheus/prometheus.yml
mv consoles/ console_libraries/ /etc/prometheus/
/tmp dizinini temizleyin.
cd ~/
rm -rf /tmp/prometheus
Bir systemd yapılandırma dosyası oluşturun
Prometheus’u systemd ile yönetmek istiyoruz. Bu nedenle aşağıdaki komutu kullanarak bir yapılandırma dosyası oluşturmamız gerekiyor.
tee /etc/systemd/system/prometheus.service<<EOF
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.listen-address=0.0.0.0:9090 \
--web.external-url=
SyslogIdentifier=prometheus
Restart=always
[Install]
WantedBy=multi-user.target
EOF
Bunu yaptıktan sonra, doğru dosya izinlerini ayarlayın ve Prometheus’u başlatın.
for i in rules rules.d files_sd; do chown -R prometheus:prometheus /etc/prometheus/${i}; done
for i in rules rules.d files_sd; do chmod -R 775 /etc/prometheus/${i}; done
chown -R prometheus:prometheus /var/lib/prometheus/
systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus
Prometheus’u çalışır duruma getirmek için yapmamız gereken tek şey bu. Bir sonraki adımda proxmox-pve-exporter’ı kurup yapılandırıyoruz.
Proxmox-pve-exporter’ı kurun
Adından da anlaşılacağı gibi, proxmox-pve-exporter, proxmox api’den verileri filtreler ve prometheus’a gönderir.
Henüz yüklemediyseniz, aşağıdaki komutu kullanarak python ve pip’i kurun.
apt install python3 python3-pip
Bu komut bittiğinde, proxmox-pve-exporter’ı pip aracılığıyla kurmaya hazırız.
pip3 install prometheus-pve-exporter
Bir kimlik doğrulama dosyası oluşturun
Proxmox-pve-exporter’ın Proxmox api’ye bağlanması için kimlik bilgileriyle bir dosya oluşturmamız gerekiyor.
nano /etc/prometheus/pve.yml
Aşağıdaki satırları dosyaya yapıştırın ve kimlik bilgilerini sizinkilerle değiştirdiğinizden emin olun.
default:
user: user@pve
password: your_password_here
verify_ssl: false
Not: Kimlik doğrulamayla ilgili herhangi bir sorunla karşılaşırsanız, lütfen proxmox-pve-exporter dokümanlarına bakın.
Bir systemd yapılandırma dosyası oluşturun
İlk bölümde olduğu gibi, proxmox-pve-exporter’ı kontrol etmek için bir systemd yapılandırma dosyası oluşturmamız gerekiyor.
tee /etc/systemd/system/prometheus-pve-exporter.service<<EOF
[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
EOF
Aşağıdaki komutları çalıştırarak hizmeti etkinleştirin.
systemctl daemon-reload
systemctl start prometheus-pve-exporter
systemctl enable prometheus-pve-exporter
Proxmox-pve-exporter’ı prometheus’a ekleyin
Şimdi prometheus’a proxmox-pve-exporter’ı eklemeliyiz.
nano /etc/prometheus/prometheus.yml
- job_name: 'proxmox'
metrics_path: /pve
static_configs:
- targets: ['localhost:9221']
Dosyayı kaydedin ve prometheus’u yeniden başlatın.
systemctl restart prometheus
Gafana’yı yükleyin
Önceki tüm adımlarda sistemimizden veri toplamaya başladık. Şimdi tüm verilere güzel bir genel bakış elde etmek için grafana’yı yüklememiz gerekiyor.
Grafana’yı kurun
Öncelikle aşağıdaki satırları bu dosyaya ekleyin. /etc/apt/sources.list.d/grafana.list
deb https://packages.grafana.com/oss/deb stable main
Şimdi uygun anahtarı yüklememiz gerekiyor.
curl https://packages.grafana.com/gpg.key | apt-key add -
apt dizinini güncelleyin ve grafana’yı kurun.
apt update && apt install -y apt-transport-https grafana
grafana kurulduktan sonra etkinleştirin ve çalışıp çalışmadığını kontrol edin.
systemctl enable --now grafana-server
systemctl status grafana-server.service
Kurulumu test edin
Grafana başarıyla kuruldu. Tarayıcınızı açın ve http://ipaddress:3000
varsayılan kimlik bilgilerine gidin ve bu bilgilerle giriş yapın.
username: admin
password: admin
Prometheus veri kaynağını ekleyin
Grafana’da oturum açtıktan sonra “Add data source”a tıklayın.
Şablon olarak “Prometheus”u seçin.
Veri kaynağını eklerken, açılır listeden URL’yi seçtiğinizden emin olun. “Save & Test”e tıklayın.
Ardından, kenar çubuğuna gidin ve “Create” -> “Import”ı seçin.
Pano kimliğine (10347) id’sini yapıştırın ve “Load”a tıklayın.
Son adımda, açılır menüden “Prometheus” u seçin ve “Import” a tıklayın.
İşte yeni Grafana panomuz böyle görünüyor! güzel değil mi :]