“Sunucu yavaş” işe yaramaz bir hata raporudur; tabii bir grafik açıp çökmeden önceki üç gün boyunca belleğin tırmandığını göremiyorsanız. Prometheus ve Grafana size tam olarak bunu verir: her sunucunun CPU, RAM, disk ve ağ verileri 15 saniyede bir kaydedilir ve geriye kaydırabileceğiniz grafiklere dönüşür. Onları kendi küçük VPS'lerine koyun; bir üretim makinesi devrildiğinde bile izlemeye devam etsinler.
Parçalar
- İzlemek istediğiniz her sunucuda node_exporter: sistem ölçümlerini 9100 portunda sunar.
- İzleme VPS'inde Prometheus: bu ölçümleri çeker (scrape) ve saklar.
- Grafana: HTTPS arkasındaki paneller.
- İsteğe bağlı olarak, bir şey eşiği aştığında size mesaj atacak Alertmanager veya Grafana uyarıları.
Neye ihtiyacınız var
- Micro-IP ($10/ay, 2 vCPU, 2 GB RAM, 25 GB) bir iki düzine sunucuyu izler. Daha fazla ana makine, özel uygulama ölçümleri veya aylarca saklama için: Small-IP.
- İzleme sunucusu için özel bir IPv4: Grafana HTTPS üzerinden sunulur ve hedefleriniz 9100 portu için tek bir sabit adresi izin listesine alabilir.
1. Her hedefte node_exporter
apt install -y prometheus-node-exporter
# allow only the monitoring server to scrape it
ufw allow from 203.0.113.10 to any port 9100 proto tcp
203.0.113.10 adresini izleme VPS'inizin adresiyle değiştirin. 9100'ü asla tüm dünyaya açık bırakmayın: sunucunuz hakkında çok şey ele verir.
2. İzleme VPS'inde Prometheus ve Grafana
apt update && apt install -y docker.io docker-compose-v2 caddy
mkdir -p /opt/monitoring && cd /opt/monitoring
cat > prometheus.yml <<'EOF'
global:
scrape_interval: 15s
scrape_configs:
- job_name: nodes
static_configs:
- targets: ['198.51.100.21:9100', '198.51.100.22:9100']
EOF
cat > compose.yml <<'EOF'
services:
prometheus:
image: prom/prometheus
volumes: [ "./prometheus.yml:/etc/prometheus/prometheus.yml:ro", "prom:/prometheus" ]
command: [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.retention.time=15d", "--web.enable-remote-write-receiver" ]
ports: [ "127.0.0.1:9090:9090" ]
restart: unless-stopped
grafana:
image: grafana/grafana
volumes: [ "grafana:/var/lib/grafana" ]
ports: [ "127.0.0.1:3000:3000" ]
restart: unless-stopped
volumes: { prom: {}, grafana: {} }
EOF
docker compose up -d
Grafana'nın önünde HTTPS:
echo 'grafana.example.com {
reverse_proxy 127.0.0.1:3000
}' > /etc/caddy/Caddyfile && systemctl reload caddy
Giriş yapın (admin / admin, ardından değiştirin), Prometheus'u http://prometheus:9090 adresinde veri kaynağı olarak ekleyin ve topluluğun “Node Exporter Full” panelini (ID 1860) içe aktarın. Yaklaşık bir dakikada eksiksiz bir sistem paneliniz olur.
NAT planlarındaki sunucular
NAT sunucusu gelen bağlantıları yalnızca kişisel SSH portunda kabul eder, bu yüzden Prometheus onun exporter'ını çekemez. Yönü tersine çevirin: NAT makinesinde Prometheus'u agent modunda çalıştırın ve verileri zaten uzak yazmaları kabul eden izleme sunucusuna gönderin (yukarıdaki --web.enable-remote-write-receiver bayrağı).
# /etc/prometheus/agent.yml on the NAT server
scrape_configs:
- job_name: self
static_configs: [ { targets: ['127.0.0.1:9100'] } ]
remote_write:
- url: https://prom-push.example.com/api/v1/write
9090 portunu çıplak hâlde açmak yerine bu gönderim uç noktasını Caddy üzerinden basic auth ile sunun.
Dürüst notlar
Prometheus çekme (pull) modeliyle çalışır: denetiminizdeki bir filo için harika, NAT arkasındaki her şey için zahmetlidir; agent hilesi bu yüzden var. Yerel depolaması yıllarca geçmiş için tasarlanmamıştır; uzun saklama için daha sonra uzak bir depolama eklersiniz. Paneller ise değerin yalnızca yarısıdır: ilk gün en az üç uyarı kurun (disk %85'in üzerinde, bellek baskısı, hedef erişilemez), yoksa grafiklere ancak bir şey bozulduktan sonra bakarsınız.
İlgili
- Çalışma süresi izleme için VPS (Uptime Kuma): kesinti uyarıları ve durum sayfaları
- UFW güvenlik duvarı nasıl yapılandırılır
- Bir VPS ne kadar RAM'e ihtiyaç duyar?
Yorumlar
Henüz yorum yok. İlk olun.