
VDS Sunucu İzleme: Zabbix, Netdata ve Prometheus + Grafana Karşılaştırması
VDS sunucunuzu Netdata, Zabbix 7.0 ve Prometheus + Grafana ile izleyin. Hangi araç ne zaman, alerting, retention ve kurulum rehberi.
VDS Sunucu İzleme: Zabbix, Netdata ve Prometheus + Grafana Karşılaştırması (2026)
Gece 03:00'te sunucunuzun diski dolup web uygulamanız çöktü. Sabah 09:00'da müşteri şikayetiyle öğrendiniz — altı saatlik kesinti. Önceden disk uyarısı alabilir miydiniz? Evet, eğer doğru monitoring stack kurmuş olsaydınız.
Bu rehberde Buyukweb VDS müşterileri için üç temel izleme aracını karşılaştırıyoruz: Netdata, Zabbix 7.0 LTS ve Prometheus 2.x + Grafana 10.x. Hangisi ne zaman tercih edilmeli, hangisi gereksiz karmaşıklık getirir — dürüstçe anlatıyoruz.
Buyukweb perspektifi: VDS'lerimiz unmanaged. Buyukweb tarafında hypervisor seviyesi monitoring çalışır — CPU/RAM/disk anomali, donanım arıza, ağ kesintisi gibi altyapı olaylarını 7/24 izliyoruz. Ama uygulama-içi metrikler (HTTP istek sayısı, DB query süresi, PHP-FPM queue derinliği, container CPU limiti) tamamen müşteride. Disk dolmadan uyarı almak, PHP hata oranını görmek, MySQL slow-query'yi tespit etmek — bunlar için kendi monitoring stack'inizi kurmanız gerekiyor.
Neden Monitoring Şart?
Sunucu gözlemlenebilirliği üç soruyu yanıtlar:
- Şu an ne durumda? — CPU %97'de mi, bellek dolmak üzere mi, disk I/O doymuş mu?
- Ne zaman başladı? — Yavaşlama saat 14:00'de mi başladı, deploy ile mi çakıştı?
- Uyarı ne zaman gelir? — Disk %85'e ulaştığında mail/Slack/Telegram gönder.
VDS sunucular için en kritik metrikler:
| Metrik | Eşik (Dikkat) | Eşik (Kritik) |
|---|---|---|
| CPU kullanımı | %70 sürekli | %90+ anlık |
| RAM kullanımı | %80 | %95+ |
| Disk doluluk | %80 | %90+ |
| Disk I/O await | >50 ms | >200 ms |
| Load average | >çekirdek sayısı | >2× çekirdek |
| Swap kullanımı | >%20 | >%50 |
| Ağ hata oranı | >0.1% | >1% |
3 Araç Karar Matrisi
| Özellik | Netdata (Open Source) | Zabbix 7.0 LTS | Prometheus 2.x + Grafana 10.x |
|---|---|---|---|
| Kurulum süresi | ~5 dakika | 30–60 dakika | 20–30 dakika |
| Ek RAM ihtiyacı | ~150–250 MB | ~512 MB – 1 GB | ~500 MB – 1.5 GB |
| Multi-server merkezi | Ücretli Cloud / kendi Netdata Parent | ✅ Ücretsiz, dahili | ✅ (Prometheus federasyonu) |
| Yerleşik alerting | ✅ Email/Slack/PagerDuty | ✅ Gelişmiş, koşullu | Alertmanager (ayrı kurulum) |
| Hazır dashboard | ✅ Otomatik, görsel | Şablon tabanlı | Grafana'dan import |
| PromQL sorgu | ❌ | ❌ | ✅ |
| Kurumsal SLA raporu | Sınırlı | ✅ Kapsamlı | Grafana ile mümkün |
| Kubernetes / dinamik | Sınırlı | Eklenti gerekir | ✅ Güçlü (cAdvisor) |
| Tek sunucu için öneri | ✅ En iyi seçim | ⚠️ Aşırı karmaşık | Orta — PromQL öğrenmek gerekir |
Kimin için ne?
- 1–3 VDS, sade web uygulaması → Netdata — 5 dakikada kurulur, anında canlı görsel veri.
- 5+ sunucu filo, kurumsal alarm ve SLA raporu → Zabbix — multi-agent mimarisi, hazır şablonlar, olgunlaşmış ITSM entegrasyonu.
- Kubernetes ortamı, dinamik infra, özel metrik scrape → Prometheus + Grafana — PromQL esnekliği, Grafana ekosistemi.
Tercih etmeyin: Tek VDS için Zabbix kurmak. Zabbix bir filo yönetim aracıdır: MariaDB, PHP, Apache/Nginx, Zabbix server, Zabbix agent kurmanız gerekir; bakım yükü, yama yükü ve öğrenme eğrisi tek sunucu için karşılığını vermez. Netdata 1 dakikada gerçek zamanlı veri gösterirken Zabbix kurulumu saatlerce sürebilir.
Netdata: 5 Dakikada Gerçek Zamanlı İzleme
Kurulum (AlmaLinux 9 / Ubuntu 22.04 / Debian 12)
# Tek satır kurulum — kararlı sürüm
curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel --dont-start-it
# Servisi başlat ve etkinleştir
systemctl enable --now netdata
# Durum kontrolü
systemctl status netdata
Kurulum bitti. Tarayıcınızdan http://SUNUCU_IP:19999 adresine gidin — CPU, RAM, disk, ağ, process, MySQL, Nginx, PHP-FPM dahil onlarca plugin otomatik algılanır ve anında grafik çizer.
Port Güvenliği
19999 portunu dünyaya açmayın:
# firewalld (AlmaLinux 9 / RHEL 9)
firewall-cmd --permanent --zone=public --remove-port=19999/tcp
firewall-cmd --reload
# ufw (Ubuntu/Debian)
ufw deny 19999
# Nginx reverse proxy + Let's Encrypt ile güvenli erişim
# /etc/nginx/sites-available/netdata.conf
server {
listen 443 ssl;
server_name monitor.siteniz.com;
ssl_certificate /etc/letsencrypt/live/monitor.siteniz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monitor.siteniz.com/privkey.pem;
auth_basic "Monitoring";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:19999;
proxy_set_header Host $host;
}
}
Netdata Alerting — Email ve Telegram
nano /etc/netdata/health_alarm_notify.conf
Email için:
SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="[email protected]"
Telegram için:
SEND_TELEGRAM="YES"
TELEGRAM_BOT_TOKEN="123456:BOT_TOKEN"
DEFAULT_RECIPIENT_TELEGRAM="CHAT_ID"
Alarm eşikleri için hazır kurallar /usr/lib/netdata/conf.d/health.d/ altında; özelleştirmek için /etc/netdata/health.d/ altına kopyalayın.
Veri Saklama (Retention)
Netdata varsayılan olarak son ~1–2 saatlik veriyi hafızada tutar. Uzun dönem için:
# /etc/netdata/netdata.conf
[db]
# 30 günlük saklama — yaklaşık 1–2 GB disk
retention = 2592000
mode = dbengine
dbengine multihost disk space MB = 1024
Zabbix 7.0 LTS: Çok Sunuculu Filo İzleme
Tek sunucu için kurmayı düşünmeyin. Aşağıdaki rehber 5+ sunucu filonuz varsa geçerlidir.
Mimari
[Zabbix Server] ← [Zabbix Agent2] ← İzlenen Sunucu 1
← [Zabbix Agent2] ← İzlenen Sunucu 2
← [Zabbix Agent2] ← İzlenen Sunucu N
[MariaDB] ← Zabbix Server
[Nginx + PHP] ← Zabbix Web Arayüzü
Zabbix Server Kurulumu (Ubuntu 22.04)
# Zabbix 7.0 LTS deposu
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_7.0+ubuntu22.04_all.deb
apt update
# Server + frontend + agent
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
# MariaDB
apt install -y mariadb-server
systemctl enable --now mariadb
# Veritabanı oluştur
mysql -u root -p <<EOF
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'GucluSifre123!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EOF
# Şemayı yükle
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u zabbix -p zabbix
# /etc/zabbix/zabbix_server.conf — temel ayarlar
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=GucluSifre123!
CacheSize=256M
HistoryCacheSize=128M
systemctl enable --now zabbix-server zabbix-agent2 nginx php8.1-fpm
Web arayüzü: http://SUNUCU_IP/zabbix — varsayılan giriş: Admin / zabbix.
İzlenen Sunuculara Agent2 Kurulumu
# Her izlenecek sunucuda (AlmaLinux 9 örneği)
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest.el9.noarch.rpm
dnf install -y zabbix-agent2
# /etc/zabbix/zabbix_agent2.conf
Server=ZABBIX_SERVER_IP
ServerActive=ZABBIX_SERVER_IP
Hostname=web-server-01
systemctl enable --now zabbix-agent2
Hazır Şablonlar
Zabbix'in değeri burada: Configuration → Templates altında yüzlerce hazır şablon var.
| Şablon | Kapsadığı |
|---|---|
| Linux by Zabbix agent | CPU, RAM, disk, ağ, process |
| MySQL by Zabbix agent | Sorgu/sn, bağlantı sayısı, replikasyon |
| Nginx by HTTP | İstek/sn, hata oranı, 5xx |
| Docker by Zabbix agent | Container CPU/RAM, restart sayısı |
| TLS/SSL certificate check | Sertifika son kullanma tarihi uyarısı |
Prometheus + Grafana: Esnek Metrik Pipeline
Mimari
[node_exporter :9100] ← Sunucu metrikleri
[cAdvisor :8080] ← Docker container metrikleri
[blackbox_exporter] ← HTTP/TCP/ICMP probe
↓ scrape (pull)
[Prometheus :9090] → veri depola (TSDB)
↓ query (PromQL)
[Grafana :3000] → dashboard görselleştir
[Alertmanager :9093] → email / Slack / Telegram uyarı
node_exporter Kurulumu (İzlenecek Sunucu)
# node_exporter 1.8.x — sistemik metrik toplayıcı
useradd --no-create-home --shell /bin/false node_exporter
wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-1.8.2.linux-amd64.tar.gz
tar xzf node_exporter-1.8.2.linux-amd64.tar.gz
cp node_exporter-1.8.2.linux-amd64/node_exporter /usr/local/bin/
chown node_exporter:node_exporter /usr/local/bin/node_exporter
# systemd servis
cat > /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl enable --now node_exporter
Prometheus Kurulumu
useradd --no-create-home --shell /bin/false prometheus
mkdir /etc/prometheus /var/lib/prometheus
wget https://github.com/prometheus/prometheus/releases/latest/download/prometheus-2.52.0.linux-amd64.tar.gz
tar xzf prometheus-2.52.0.linux-amd64.tar.gz
cp prometheus-2.52.0.linux-amd64/{prometheus,promtool} /usr/local/bin/
cp -r prometheus-2.52.0.linux-amd64/{consoles,console_libraries} /etc/prometheus/
chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets: ["localhost:9093"]
rule_files:
- "/etc/prometheus/rules/*.yml"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "node_exporters"
static_configs:
- targets:
- "sunucu-1-IP:9100"
- "sunucu-2-IP:9100"
labels:
env: "production"
- job_name: "blackbox_http"
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://siteniz.com
- https://api.siteniz.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9115
Grafana Kurulumu
# Grafana 10.x (Ubuntu/Debian)
apt install -y software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" > /etc/apt/sources.list.d/grafana.list
apt update && apt install -y grafana
systemctl enable --now grafana-server
# Arayüz: http://SUNUCU_IP:3000 (varsayılan: admin/admin)
Prometheus data source ekleyin: Configuration → Data Sources → Prometheus → URL: http://localhost:9090. Ardından Grafana.com'dan "Node Exporter Full" (dashboard ID: 1860) import edin — tüm sunucu metrikleri hazır görünür.
Alerting: Alertmanager + Slack / Telegram
Alertmanager Konfigürasyonu
# /etc/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
smtp_smarthost: "smtp.siteniz.com:587"
smtp_from: "[email protected]"
smtp_auth_username: "[email protected]"
smtp_auth_password: "SMTP_SIFRE"
route:
group_by: ["alertname", "instance"]
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receiver: "team-slack"
routes:
- match:
severity: critical
receiver: "team-telegram"
receivers:
- name: "team-slack"
slack_configs:
- api_url: "https://hooks.slack.com/services/XXX/YYY/ZZZ"
channel: "#alerts"
title: "{{ .GroupLabels.alertname }}"
text: "{{ range .Alerts }}{{ .Annotations.description }}{{ end }}"
- name: "team-telegram"
telegram_configs:
- api_url: "https://api.telegram.org"
bot_token: "BOT_TOKEN"
chat_id: CHAT_ID
message: "🔴 {{ .GroupLabels.alertname }}: {{ range .Alerts }}{{ .Annotations.summary }}{{ end }}"
Prometheus Alert Kuralları
# /etc/prometheus/rules/node_alerts.yml
groups:
- name: node_alerts
rules:
- alert: DiskDoluyYaklasıyor
expr: (node_filesystem_size_bytes{fstype!="tmpfs"} - node_filesystem_free_bytes{fstype!="tmpfs"}) / node_filesystem_size_bytes{fstype!="tmpfs"} > 0.85
for: 5m
labels:
severity: warning
annotations:
summary: "Disk %85 dolu: {{ $labels.instance }}"
description: "{{ $labels.device }} aygıtı %{{ $value | humanizePercentage }} dolu."
- alert: YuksekCPUKullanimi
expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
for: 10m
labels:
severity: critical
annotations:
summary: "CPU %90+ — {{ $labels.instance }}"
- alert: BelekKritiSeviye
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes > 0.95
for: 3m
labels:
severity: critical
annotations:
summary: "RAM %95 dolu — {{ $labels.instance }}"
Örnek PromQL Sorguları
# Son 1 saatin ortalama CPU kullanımı
100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[1h])) * 100)
# Disk doluluk yüzdesi — her mount point
(1 - node_filesystem_free_bytes / node_filesystem_size_bytes) * 100
# Ağ gelen/giden bant genişliği (byte/sn)
irate(node_network_receive_bytes_total[5m])
irate(node_network_transmit_bytes_total[5m])
# HTTP probe başarı oranı (blackbox_exporter)
probe_success{job="blackbox_http"}
Retention ve Depolama Planlaması
Uzun dönem veri saklama için hesap yapın:
| Araç | Varsayılan Retention | 1 Sunucu / 30 Gün Disk | 10 Sunucu / 90 Gün Disk |
|---|---|---|---|
| Netdata (dbengine) | ~1–2 saat RAM + yapılandırılabilir disk | ~1–2 GB | ~15–20 GB |
| Zabbix (MariaDB) | Yapılandırılabilir (varsayılan 90 gün) | ~3–5 GB | ~30–50 GB |
| Prometheus (TSDB) | 15 gün (varsayılan) | ~2–4 GB | ~20–40 GB |
# Prometheus retention ayarı (systemd ExecStart'a ekle)
--storage.tsdb.retention.time=30d
--storage.tsdb.retention.size=10GB
# Zabbix DB temizleme (otomatik — Administration > General > Housekeeping)
# History: 90 gün, Trends: 365 gün öneri
Büyükweb VDS ₺250/ay'dan başlar. Prometheus + Grafana stack'i için 1–2 GB ek RAM hesaplayın. 2 GB RAM VDS'de monitoring stack'i uygulama ile rekabet eder — bu senaryoda Netdata (150–250 MB RAM) daha verimli.
Sık Sorulan Sorular
Netdata mi Zabbix mi seçmeliyim?
Tek sunucu veya 2–3 VDS için Netdata. Kurulumu 5 dakika, dashboard otomatik. 5+ sunucu filonuz varsa, merkezi alarm + SLA raporu istiyorsanız Zabbix değer kazanır. "Her şeyi bilmek istiyorum ama nasıl kurarım bilmiyorum" diyorsanız Netdata ile başlayın, büyüdükçe geçiş yaparsınız.
Prometheus'u Zabbix yerine kullanabilir miyim?
Evet — ama PromQL öğrenmek gerekiyor. Kubernetes veya Docker swarm ortamınız varsa, özel metrikler (uygulama /metrics endpoint'i) scrape etmek istiyorsanız Prometheus + Grafana daha esnek. Statik sunucu filonuzu izlemek için Zabbix genellikle daha az konfigürasyon gerektirir.
Alerting kanalı olarak ne öneririz?
Küçük ekipler için Telegram (bot kurulumu kolay, ücretsiz). Slack kullanan ekipler için webhook entegrasyonu birkaç satır YAML. Kritik alarmlar için çoklu kanal (Telegram + email) kurun; email'i yedek olarak bırakın. Alertmanager route mantığıyla severity=critical → Telegram, warning → email gibi ayırım yapabilirsiniz.
Buyukweb VDS'nin kendi monitoring'i var mı?
Evet — hypervisor seviyesinde CPU/RAM/disk anomali ve donanım arızalarını izliyoruz. Ama bu altyapı izlemesi; uygulamanızın içinden gelen metrikleri (HTTP 500 oranı, DB sorgu gecikmesi, kuyruk derinliği) göremez. Uygulama seviyesi monitoring'i kendiniz kurmalısınız.
Monitoring stack için kaç GB RAM yeterli?
Netdata: 150–250 MB. Prometheus + Grafana: 500 MB – 1.5 GB (scrape hedef sayısına ve retention'a göre). Zabbix: 512 MB – 1 GB (agent sayısına ve cache boyutuna göre). 2 GB RAM VDS'de monitoring + uygulama bir arada sıkışır — bu durumda ayrı monitoring VDS'i veya hafif Netdata tercih edin.
Disk doluluk alarmı için en hızlı yol nedir?
Netdata otomatik olarak disk %85'e ulaştığında uyarı üretir — ek yapılandırma gerekmez. Kurulum bitince /etc/netdata/health_alarm_notify.conf dosyasına email veya Telegram bilgilerinizi girin, hazır.
Çoklu VDS'i tek dashboard'dan izleyebilir miyim?
Evet, üç araçla da mümkün. Netdata'da merkezi izleme Netdata Cloud üzerinden (ücretsiz tier sınırlı) veya self-hosted Netdata Parent kurulumla yapılır. Zabbix zaten multi-server için tasarlandı. Prometheus'ta birden fazla sunucuya node_exporter kurulsun, tümünü tek prometheus.yml'e ekleyin — Grafana tek panodan gösterir.
İlgili Büyükweb Hizmetleri
Monitoring stack kurmak için güçlü, Bursa Tier 3 veri merkezinde KVM tabanlı VDS:
Teknik sorularınız için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz.
VDS & VPS Rehberi İlgili Hizmetlerimiz
Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin
Etiketler:


