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.

Benzer Konular

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir