Netdata Cloud ile Çoklu Sunucu Yönetimi
On sunucu, beş farklı lokasyon, her biri farklı yükler altında çalışan servisler… Ve sen sabahın 3’ünde telefonun çalmasını bekliyorsun. Tanıdık geldi mi? İşte tam bu noktada Netdata Cloud devreye giriyor ve çoklu sunucu yönetimini gerçekten katlanılabilir hale getiriyor.
Netdata’yı tek bir sunucuda kullandıysanız ne kadar güçlü olduğunu zaten biliyorsunuzdur. Ama Netdata Cloud ile bu gücü onlarca, hatta yüzlerce sunucuya tek bir arayüzden yönetmek mümkün. Bu yazıda sıfırdan başlayarak production ortamınızda nasıl kullanabileceğinizi, alertleri nasıl yapılandıracağınızı ve gerçek hayatta işinize yarayacak pratik senaryoları ele alacağım.
Netdata Cloud Nedir ve Neden Kullanmalısınız?
Netdata Cloud, agent tabanlı Netdata kurulumlarınızı merkezi bir bulut platformu üzerinden yönetmenizi sağlayan bir hizmettir. Burada önemli bir noktanın altını çizmek gerekiyor: Metrikleriniz Netdata Cloud’a gönderilmez. Yani sunucularınızdaki veriler sunucularınızda kalır. Netdata Cloud sadece agent’larınızla güvenli bir tünel kurar ve siz bu tünel üzerinden verileri görüntülersiniz.
Bu yaklaşım özellikle veri gizliliği konusunda hassas olan ortamlar için büyük bir avantaj. KVKK, GDPR gibi uyumluluk gereksinimleriniz varsa ya da müşteri verisi işleyen sunucularınızı izliyorsanız bu mimari sizi rahatlatır.
Netdata Cloud’un sağladığı temel faydalar:
- Tek cam panel: Tüm sunucularınızı tek ekranda görme
- Anomali tespiti: Makine öğrenmesi destekli anormal davranış algılama
- Merkezi alert yönetimi: Tüm sunucular için uyarıları tek yerden yapılandırma
- Ücretsiz başlangıç: Temel özellikler için ücret ödemiyorsunuz
- Sıfır veri transferi: Metrikler sunucunuzda kalıyor
Ortamı Hazırlamak
Önce her sunucuya Netdata agent kurulumunu yapmanız gerekiyor. Eğer henüz kurmadıysanız, en hızlı yol şu:
wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
Kurulum tamamlandıktan sonra servisin ayakta olduğunu kontrol edin:
systemctl status netdata
curl -s http://localhost:19999/api/v1/info | python3 -m json.tool | head -20
Birden fazla sunucunuz varsa bu işlemi otomatize etmek için basit bir Ansible playbook yazabilirsiniz:
---
- name: Netdata Agent Kurulumu
hosts: all
become: yes
tasks:
- name: Netdata kickstart script indir
get_url:
url: https://my-netdata.io/kickstart.sh
dest: /tmp/netdata-kickstart.sh
mode: '0755'
- name: Netdata kur
shell: /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry --dont-wait
args:
creates: /usr/sbin/netdata
- name: Netdata servisini aktif et
systemd:
name: netdata
state: started
enabled: yes
Bu playbook’u çalıştırmak için:
ansible-playbook -i inventory.ini netdata-install.yml
Netdata Cloud’a Bağlanma
Agent kurulumları tamamlandıktan sonra sıra sunucularınızı Netdata Cloud’a bağlamaya geliyor. Önce [app.netdata.cloud](https://app.netdata.cloud) adresinde ücretsiz hesap açın.
Hesabınızı oluşturduktan sonra bir Space (çalışma alanı) ve altında War Room (izleme odası) oluşturun. War Room kavramı oldukça kullanışlı: Production, Staging, Database Servers gibi kategorilere göre sunucularınızı gruplandırabilirsiniz.
Sunucuyu Cloud’a bağlamak için Netdata Cloud arayüzünden “Connect Nodes” seçeneğine tıklayın. Size şuna benzer bir komut verecek:
netdata-claim.sh -token=XXXXXXXXXXXXXXXXXXXXX
-rooms=ROOM_ID_1,ROOM_ID_2
-url=https://app.netdata.cloud
Bu komutu root olarak ya da sudo ile çalıştırın. Bağlantı başarılıysa birkaç saniye içinde sunucunuz Cloud arayüzünde görünür.
Eğer sunucunuz proxy arkasındaysa veya doğrudan internet erişimi yoksa, bağlantı ayarlarını yapılandırmanız gerekiyor:
# /etc/netdata/netdata.conf dosyasını düzenle
[cloud]
cloud base url = https://app.netdata.cloud
[global]
# Proxy ayarları
bind socket to IP = 0.0.0.0
Kurumsal ortamlarda sıkça karşılaşılan proxy senaryosu için environment variable kullanın:
export https_proxy=http://proxy.sirket.local:3128
netdata-claim.sh -token=XXXXXXXXXXXXXXXXXXXXX -rooms=ROOM_ID -url=https://app.netdata.cloud
War Room Stratejisi: Sunucuları Mantıklı Gruplamak
Çoklu sunucu yönetiminde en çok atladığımız adım iyi bir gruplama stratejisi oluşturmak. War Room’larınızı rastgele değil, operasyonel mantığa göre oluşturun.
Önerilen War Room yapısı:
- Production Web: Web sunucuları (nginx, apache çalışanlar)
- Production DB: Veritabanı sunucuları (MySQL, PostgreSQL, MongoDB)
- Production App: Uygulama sunucuları
- Staging: Test ortamı sunucuları
- Infrastructure: DNS, NTP, monitoring sunucuları gibi altyapı bileşenleri
- Critical 24/7: Kesintisiz izlenmesi gereken, anında müdahale edilecek sunucular
Bu yapı sayesinde “sadece veritabanı sunucularım nasıl?” sorusunu saniyeler içinde yanıtlayabilirsiniz.
Merkezi Alert Yapılandırması
Netdata’nın en güçlü özelliklerinden biri alert sistemi. Cloud üzerinde merkezi alert yönetimi yapabilir ya da her agent üzerinde özelleştirilmiş alertler tanımlayabilirsiniz.
Agent tabanlı alert yapılandırması için /etc/netdata/health.d/ dizinini kullanın. Örneğin disk kullanımı için özel bir alert:
# /etc/netdata/health.d/disk_custom.conf
alarm: disk_space_critical
on: disk.space
lookup: average -1m percentage of used
units: %
every: 1m
warn: $this > 80
crit: $this > 90
delay: down 5m multiplier 1.5 max 1h
info: Disk kullanimi kritik seviyede
to: sysadmin
alarm: disk_space_warning
on: disk.space
lookup: average -5m percentage of used
units: %
every: 5m
warn: $this > 70
info: Disk kullanimi uyari seviyesinde
to: sysadmin
Alertleri Slack’e yönlendirmek production ortamında hayat kurtarır. Netdata’nın Slack entegrasyonunu yapılandırmak için:
# /etc/netdata/health_alarm_notify.conf dosyasini duzenle
# Slack ayarlari
SEND_SLACK="YES"
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/TXXXXXXXX/BXXXXXXXX/xxxxxxxxxx"
DEFAULT_RECIPIENT_SLACK="#alerts-production"
# Kritik alertler icin ayri kanal
role_recipients_slack[sysadmin]="#alerts-critical"
role_recipients_slack[webmaster]="#alerts-web"
Test etmek için:
/usr/libexec/netdata/plugins.d/alarm-notify.sh test
Çoklu Sunucu Senaryosu: E-ticaret Platformu İzleme
Gerçek bir senaryo üzerinden gidelim. Diyelim ki 3 web sunucusu, 2 veritabanı sunucusu ve 1 Redis cache sunucusundan oluşan bir e-ticaret altyapısı yönetiyorsunuz.
Senaryo: Black Friday yaklaşıyor ve sisteminizin hazır olup olmadığını sürekli izlemeniz gerekiyor.
Önce web sunucularında nginx metriklerinin aktif olduğunu kontrol edin:
# nginx stub_status aktif mi kontrol et
curl -s http://localhost/nginx_status
# Netdata nginx pluginini kontrol et
ls /etc/netdata/go.d/nginx.conf
# Yoksa olustur
cat > /etc/netdata/go.d/nginx.conf << 'EOF'
jobs:
- name: local
url: http://localhost/nginx_status
EOF
systemctl restart netdata
MySQL sunucuları için benzer şekilde:
# MySQL monitoring icin kullanici olustur
mysql -u root -p << 'EOF'
CREATE USER 'netdata'@'localhost' IDENTIFIED BY 'guclu_bir_sifre';
GRANT USAGE ON *.* TO 'netdata'@'localhost';
GRANT SELECT ON performance_schema.* TO 'netdata'@'localhost';
FLUSH PRIVILEGES;
EOF
# Netdata MySQL yapilandirma
cat > /etc/netdata/go.d/mysql.conf << 'EOF'
jobs:
- name: local
dsn: "netdata:guclu_bir_sifre@tcp(127.0.0.1:3306)/"
EOF
systemctl restart netdata
Şimdi Netdata Cloud arayüzünde tüm bu sunucuları aynı anda görebilirsiniz. War Room’unuzu açtığınızda web sunucularının nginx bağlantı sayılarını, veritabanlarının query per second değerlerini ve Redis’in memory kullanımını tek ekranda izleyebilirsiniz.
Composite Charts ile Karşılaştırmalı Analiz
Netdata Cloud’un en kullanışlı özelliklerinden biri Composite Charts. Bu özellik, birden fazla sunucudaki aynı metriği tek bir grafik üzerinde karşılaştırmanızı sağlıyor.
Örneğin 3 web sunucunuzun CPU kullanımını karşılaştırmak istiyorsunuz. War Room’unuzda “Overview” sekmesine geçin. Burada tüm sunucularınızın aggregate metriklerini göreceksiniz. Belirli bir metriği seçip “View Per Node” dediğinizde her sunucunun o metriği ayrı ayrı görüntülenir.
Bu özellik şu senaryolarda özellikle değerli:
- Load balancer arkasındaki sunucuların yük dağılımını kontrol etmek
- Database cluster’ında replikasyon gecikmesini karşılaştırmak
- Aynı uygulama kodunu çalıştıran farklı sunucuların performans farklılıklarını tespit etmek
Anomali Tespiti ve ML Alertleri
Netdata’nın son versiyonlarıyla gelen makine öğrenmesi destekli anomali tespiti çok işe yarıyor. Her node kendi ML modelini yerel olarak çalıştırıyor, bu yüzden veri dışarı çıkmıyor.
ML anomali tespitini etkinleştirmek için:
# /etc/netdata/netdata.conf
[ml]
enabled = yes
maximum num samples to train = 21600
minimum num samples to train = 900
train every = 3600
number of models per dimension = 2
dampening factor = 0.5
anomaly rate every = 60
Bu ayarlarla Netdata her metrik için kendi baseline’ını öğrenir ve normalden sapmaları tespit eder. Özellikle ani traffic artışları, olağandışı disk yazma aktivitesi veya memory leak belirtileri gibi durumları erken fark etmenizi sağlar.
Anomali skorunu API üzerinden de sorgulayabilirsiniz:
# Belirli bir node'un anomali skorunu al
curl -s "http://localhost:19999/api/v1/badge.svg?chart=system.cpu&alarm=anomaly_rate"
# Son 5 dakikadaki anomalileri listele
curl -s "http://localhost:19999/api/v1/alarms?active" | python3 -m json.tool
Netdata Agent’larını Toplu Güncelleme
Onlarca sunucuda agent güncel tutmak zahmetli olabilir. Ansible ile bu işi otomatize etmek en temiz çözüm:
# Tum node'larda Netdata versiyonunu kontrol et
ansible all -i inventory.ini -m shell -a "netdata -v" -b
# Guncelleme playbook'u
ansible all -i inventory.ini -m shell
-a "netdata-updater.sh"
-b --become-user=root
-f 10
-f 10 parametresi aynı anda en fazla 10 sunucuda güncelleme yapılmasını sağlar. Production ortamında tüm sunucuları aynı anda güncellememek için bu önemli.
Performans İyileştirme: Agent Konfigürasyonu
Çok sayıda sunucu izlediğinizde her agent’ın kaynak kullanımını optimize etmek önemli hale geliyor. Özellikle küçük VPS’lerde Netdata’nın default ayarları biraz agresif olabilir.
# /etc/netdata/netdata.conf - Kaynak optimizasyonu
[global]
# Veri saklama suresi (daha az gecmis, daha az RAM)
history = 3600
# Update araligi (default 1 saniye, 2'ye cikarmak yuku azaltir)
update every = 2
# Proses onceligi
process scheduling policy = idle
[plugins]
# Kullanmadıginiz pluginleri kapat
apps = no
charts.d = no
fping = no
Özellikle apps plugin’ini kapatmak CPU kullanımını önemli ölçüde düşürüyor. Bu plugin tüm process’leri izliyor ve küçük sunucularda yük oluşturuyor. Eğer process bazlı izlemeye ihtiyacınız yoksa kapatın.
Kapasiteleri Karşılaştırma ve Kapasite Planlaması
Netdata Cloud’un sunduğu metrik geçmişini kapasite planlaması için kullanabilirsiniz. Özellikle şu metriklere dikkat edin:
- disk.space: Hangi sunucuların diski dolmak üzere
- mem.available: Memory headroom ne kadar
- system.load: CPU saturation başlıyor mu
- net.net: Network bandwidth kullanımı
Bu verileri dışarı çıkarmak için Netdata’nın API’sini kullanabilirsiniz:
#!/bin/bash
# Tüm sunucularda disk dolulugunu kontrol eden basit script
SERVERS=("web01" "web02" "db01" "db02" "cache01")
THRESHOLD=80
for server in "${SERVERS[@]}"; do
DISK_USAGE=$(curl -s "http://${server}:19999/api/v1/data?chart=disk.space&after=-60&before=0&points=1&group=average&format=json"
| python3 -c "import sys,json; data=json.load(sys.stdin); print(data['data'][0][1])" 2>/dev/null)
if [ ! -z "$DISK_USAGE" ]; then
USAGE_INT=${DISK_USAGE%.*}
if [ "$USAGE_INT" -gt "$THRESHOLD" ]; then
echo "UYARI: ${server} disk kullanimi %${DISK_USAGE}"
else
echo "OK: ${server} disk kullanimi %${DISK_USAGE}"
fi
else
echo "HATA: ${server} erisilemedi"
fi
done
Netdata Cloud API ile Otomasyon
Netdata Cloud’un REST API’si sayesinde izleme görevlerinizi otomatize edebilirsiniz. Bir token oluşturup API’yi kullanmak için:
# API token olusturma - Cloud arayüzünden yapilir
# Profile > API Tokens > New Token
# Space'inizdeki node'lari listele
curl -s https://app.netdata.cloud/api/v2/spaces
-H "Authorization: Bearer YOUR_API_TOKEN" | python3 -m json.tool
# Belirli bir war room'daki aktif alertleri cek
curl -s "https://app.netdata.cloud/api/v2/spaces/SPACE_ID/rooms/ROOM_ID/alarms"
-H "Authorization: Bearer YOUR_API_TOKEN"
-H "Content-Type: application/json"
Bu API’yi bir monitoring dashboard’u veya incident management sistemine entegre edebilirsiniz. PagerDuty, OpsGenie gibi araçlarla Netdata Cloud alertlerini bağlamak artık standart bir uygulama haline geldi.
Güvenlik Konuları
Çoklu sunucu ortamında güvenlik ihmal edilmemesi gereken bir konu. Birkaç temel önlem:
Netdata web arayüzünü sadece localhost veya VPN IP’lerine kısıtlayın:
# /etc/netdata/netdata.conf
[web]
bind to = 127.0.0.1
allow connections from = localhost 10.0.0.*
Eğer agent’ları birbirinden veri çekecekseniz (streaming senaryosu) API key kullanın:
# /etc/netdata/stream.conf - Master node (veri toplayan)
[API_KEY_BURAYA]
enabled = yes
history = 3600
default memory mode = ram
health enabled by default = auto
Cloud bağlantısı için kullandığınız claim token’larını güvenli saklayın. Bu token’lar bir kez kullanıldıktan sonra geçersiz hale geliyor, bu yüzden tekrar kullanım için yeni token almanız gerekiyor.
Sorun Giderme: Yaygın Sorunlar
Çoklu sunucu kurulumlarında en sık karşılaşılan sorunlar ve çözümleri:
Agent Cloud’a bağlanamıyor:
# Claim durumunu kontrol et
cat /var/lib/netdata/cloud.d/claimed_id
# Netdata Cloud servisini kontrol et
journalctl -u netdata -f | grep -i cloud
# Baglanti testini manuel yap
curl -v https://app.netdata.cloud/api/v1/spaces
Metrikler görünmüyor:
# Plugin durumlarini kontrol et
curl -s http://localhost:19999/api/v1/charts | python3 -c
"import sys,json; charts=json.load(sys.stdin)['charts']; print(len(charts), 'chart aktif')"
# Log'ları incele
tail -f /var/log/netdata/error.log
Yüksek CPU kullanımı:
# Hangi plugin en cok kaynak tuketiyor
ps aux | grep netdata | sort -k3 -rn | head -10
# Plugin detaylarini goster
curl -s http://localhost:19999/api/v1/allmetrics?format=prometheus | grep netdata_
Sonuç
Netdata Cloud ile çoklu sunucu yönetimi artık “katlanılabilir” değil, gerçekten keyifli hale geliyor. Ücretsiz tier ile bile onlarca sunucuyu tek bir arayüzden izleyebilir, anomali tespiti yapabilir ve merkezi alert yönetimi kurabilirsiniz.
Bu yazıda öğrendiklerimizi özetlemek gerekirse: Agent kurulumunu Ansible ile otomatize edin, War Room’larınızı operasyonel mantıkla oluşturun, özelleştirilmiş alertlerinizi Slack veya e-posta ile entegre edin ve makine öğrenmesi destekli anomali tespitini mutlaka aktif edin.
En önemli tavsiyem şu: Netdata Cloud’u kurun ve bir hafta boyunca aktif olarak kullanın. Hangi sunucularınızın ne zaman yük aldığını, hangi metriklerin birbirleriyle korelasyon gösterdiğini ve sisteminizdeki hangi kalıpların normal olduğunu bu sürede öğreneceksiniz. Bu bilgi, bir sonraki gece 3’teki telefon çalışında sizi gerçekten kurtaracak.
