Netdata Kurulumu ve İlk Yapılandırma

Sunucunuzun ne yaptığını gerçek zamanlı olarak görmek istiyorsanız, Netdata bu işin en pratik araçlarından biri. Kurulumu dakikalar içinde tamamlanıyor, arayüzü sizi boğmuyor ve ücretsiz. Bu yazıda sıfırdan bir Netdata kurulumu yapacak, temel yapılandırmaları ele alacak ve gerçek dünya senaryolarında nasıl kullanacağınızı göstereceğiz.

Netdata Nedir ve Neden Kullanmalısınız?

Netdata, açık kaynaklı bir sistem izleme aracı. CPU, RAM, disk I/O, ağ trafiği, aktif süreçler, veritabanı metrikleri ve çok daha fazlasını saniye bazında topluyor ve güzel bir web arayüzünde gösteriyor. Zabbix veya Prometheus/Grafana stack’i gibi kurulum ve yapılandırma cehennemi yok. Bir komutla kuruyor, tarayıcınızı açıyorsunuz ve her şeyi görüyorsunuz.

Özellikle şu durumlarda Netdata tercih edilir:

  • Hızlı tanı gerektiren anlarda: Sunucunuz yavaşladı, ne olduğunu anlamak istiyorsunuz. Netdata bunu saniyeler içinde gösterir.
  • Küçük ve orta ölçekli altyapılarda: Her sunucuya ayrı ayrı kurarak bağımsız izleme yapabilirsiniz.
  • Geliştirici makinelerinde: Uygulamanızın kaynak tüketimini canlı takip etmek için idealdir.

Netdata’nın iki temel çalışma modu var: standalone (her sunucu kendi kendine çalışır) ve parent-child (merkezi bir parent sunucuya metrikler gönderilir). Bu yazıda önce standalone kurulumu yapacağız, sonra parent-child mimarisine değineceğiz.

Kurulum Öncesi Hazırlık

Netdata’yı kurmadan önce birkaç şeyi kontrol etmek gerekiyor. Desteklenen dağıtımlar arasında Ubuntu 18.04+, Debian 9+, CentOS 7+, RHEL 7+, Fedora, openSUSE ve Alpine Linux var.

Sistem gereksinimlerine bakarsak:

  • CPU: Tek çekirdek bile yeterli, ama 2+ çekirdek önerilir
  • RAM: Minimum 256MB, önerilen 512MB+
  • Disk: Varsayılan yapılandırmada yaklaşık 256MB disk alanı yeterli
  • Port: Varsayılan olarak 19999 portu kullanılır

Önce sisteminizi güncelleyin:

# Ubuntu/Debian için
sudo apt update && sudo apt upgrade -y

# CentOS/RHEL için
sudo yum update -y

# Fedora için
sudo dnf update -y

Ayrıca güvenlik duvarınızda 19999 portunu açmanız gerekecek. Şimdilik bunu not edin, kurulumdan sonra yapacağız.

Netdata Kurulumu

Netdata’yı kurmanın birkaç yolu var: resmi kurulum scripti, paket yöneticisi veya Docker ile. En hızlı ve önerilen yöntem resmi kurulum scripti.

Resmi Kurulum Scripti ile Kurulum

wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh
sh /tmp/netdata-kickstart.sh

Script otomatik olarak sisteminizi algılar, gerekli bağımlılıkları kurar ve Netdata’yı derler veya uygun paketi indirir. Kurulum süreci 2-5 dakika sürebilir.

Kurulum tamamlandığında Netdata otomatik olarak başlar. Servis durumunu kontrol edelim:

sudo systemctl status netdata

Çıktıda Active: active (running) görüyorsanız her şey yolunda demektir. Şimdi tarayıcınızdan http://sunucu-ip:19999 adresine gidin. Renkli ve canlı bir dashboard sizi karşılayacak.

Docker ile Kurulum

Containerized ortamlarda veya Netdata’yı izole çalıştırmak istiyorsanız Docker tercih edebilirsiniz:

docker run -d --name=netdata 
  -p 19999:19999 
  -v netdataconfig:/etc/netdata 
  -v netdatalib:/var/lib/netdata 
  -v netdatacache:/var/cache/netdata 
  -v /etc/passwd:/host/etc/passwd:ro 
  -v /etc/group:/host/etc/group:ro 
  -v /proc:/host/proc:ro 
  -v /sys:/host/sys:ro 
  -v /etc/os-release:/host/etc/os-release:ro 
  --restart unless-stopped 
  --cap-add SYS_PTRACE 
  --security-opt apparmor=unconfined 
  netdata/netdata

Bu komuttaki volume mount’lar önemli. Netdata host sistemin /proc ve /sys dosya sistemlerine erişmeden doğru metrikler toplayamaz. Bu yüzden ro (read-only) olarak mount ediyoruz.

Paket Yöneticisi ile Kurulum (Ubuntu/Debian)

Eğer resmi repoyu tercih ederseniz:

sudo apt install -y apt-transport-https software-properties-common
curl -s https://packagecloud.io/install/repositories/netdata/netdata/script.deb.sh | sudo bash
sudo apt install netdata

Temel Yapılandırma

Netdata’nın ana yapılandırma dosyası /etc/netdata/netdata.conf konumunda bulunur. Bu dosyayı doğrudan düzenleyebilirsiniz ama Netdata’nın kendi editörünü kullanmak daha güvenli. Geçerli yapılandırmayı görmek için:

sudo /etc/netdata/edit-config netdata.conf

Bu komut mevcut yapılandırmayı açar. Eğer dosya boşsa, varsayılan değerler kullanılıyor demektir. Yapılandırmanın tamamını görmek için:

sudo netdata -W dump-config > /tmp/netdata-full-config.conf
cat /tmp/netdata-full-config.conf

Web Arayüzü Erişim Kontrolü

Varsayılan kurulumda Netdata herkese açık. Üretim sunucularında bunu değiştirmeniz şart. En basit yöntem IP bazlı erişim kısıtlaması:

sudo nano /etc/netdata/netdata.conf

[web] bölümüne şunları ekleyin:

[web]
    bind to = 127.0.0.1
    allow connections from = localhost 192.168.1.*
    allow dashboard from = localhost 192.168.1.*

Bu yapılandırma Netdata’yı sadece localhost ve yerel ağdan erişilebilir yapar. Değişikliği uygulamak için:

sudo systemctl restart netdata

Uzaktan erişim gerekiyorsa Nginx veya Apache ile reverse proxy kullanmak en iyi pratik. Bunu birkaç adım sonra ele alacağız.

Veri Saklama Süresi Ayarı

Netdata varsayılan olarak metrikleri RAM’de tutar ve disk’e tier’lı şekilde yazar. Varsayılan saklama süresi oldukça kısadır. Daha uzun geçmiş verisi istiyorsanız:

sudo nano /etc/netdata/netdata.conf
[db]
    mode = dbengine
    storage tiers = 3
    
[db:tier0]
    dbengine multihost disk space MB = 1024

[db:tier1]
    dbengine multihost disk space MB = 512

[db:tier2]
    dbengine multihost disk space MB = 256

Bu yapılandırmayla tier0’da yüksek çözünürlüklü (saniye bazında), tier1’de düşürülmüş çözünürlükte ve tier2’de daha da sıkıştırılmış uzun vadeli veri saklarsınız. Toplam disk kullanımı yaklaşık 1.8GB olacak ama aylarca geriye dönük veri görebileceksiniz.

Alarm ve Uyarı Yapılandırması

Netdata yüzlerce hazır alarm kuralıyla geliyor. Bunları /etc/netdata/health.d/ dizininde bulabilirsiniz. Kendi alarmlarınızı da buraya ekleyebilirsiniz.

Önce mevcut alarmları listeleyelim:

ls /etc/netdata/health.d/

Çıktıda CPU, disk, RAM, ağ gibi kategoriler için hazır dosyalar göreceksiniz. Özelleştirilmiş bir alarm ekleyelim. Örneğin, CPU kullanımı %85’i aştığında uyarı alsın:

sudo nano /etc/netdata/health.d/custom_cpu.conf
alarm: high_cpu_usage
    on: system.cpu
    lookup: average -3m unaligned of user,system,softirq,irq,iowait
    units: %
    every: 1m
    warn: $this > 85
    crit: $this > 95
    info: CPU kullanimi yuksek seviyede
    to: sysadmin

Bu alarm her dakika ortalama CPU kullanımını kontrol eder. %85 üzerinde warning, %95 üzerinde critical uyarı gönderir.

E-posta ile Bildirim

Alarmların işe yaraması için bildirim kanalı ayarlamanız gerekiyor. E-posta bildirimi için:

sudo /etc/netdata/edit-config health_alarm_notify.conf

Dosyada şu alanları doldurun:

# E-posta bildirimi aktif etmek için
SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="[email protected]"

# Gönderen adresi (opsiyonel)
EMAIL_SENDER="[email protected]"

# Kritik alarm alıcıları
role_recipients_email[sysadmin]="[email protected]"

Mail sunucunuz yoksa, sendmail veya msmtp gibi araçlarla Gmail üzerinden de gönderebilirsiniz. Ayarları kaydedip alarm bildirimini test edelim:

sudo -u netdata /usr/libexec/netdata/plugins.d/alarm-notify.sh test

Bu komut test maili gönderir. Gelen kutunuzu kontrol edin.

Nginx ile Reverse Proxy Kurulumu

Netdata’ya HTTPS üzerinden güvenli erişim için Nginx reverse proxy kuralım. Önce Nginx’i kurun:

sudo apt install nginx -y

Yeni bir site yapılandırması oluşturun:

sudo nano /etc/nginx/sites-available/netdata
upstream netdata {
    server 127.0.0.1:19999;
    keepalive 64;
}

server {
    listen 80;
    server_name netdata.sirketiniz.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name netdata.sirketiniz.com;

    ssl_certificate /etc/ssl/certs/netdata.crt;
    ssl_certificate_key /etc/ssl/private/netdata.key;

    # Temel auth ekleyelim (opsiyonel ama önerilir)
    auth_basic "Netdata Monitoring";
    auth_basic_user_file /etc/nginx/.netdata_htpasswd;

    location / {
        proxy_pass http://netdata;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Şimdi .htpasswd dosyası oluşturalım:

sudo apt install apache2-utils -y
sudo htpasswd -c /etc/nginx/.netdata_htpasswd netdata_admin

Yapılandırmayı etkinleştirip Nginx’i yeniden başlatın:

sudo ln -s /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Plugin’ler ve Uygulama İzleme

Netdata’nın asıl gücü çok sayıda uygulamayı otomatik algılamasından geliyor. MySQL, PostgreSQL, Nginx, Apache, Redis, MongoDB ve onlarca uygulama için hazır plugin var.

MySQL İzleme

MySQL’i izlemek için önce monitoring kullanıcısı oluşturun:

mysql -u root -p
CREATE USER 'netdata'@'localhost' IDENTIFIED BY 'guclu_sifre_burada';
GRANT USAGE ON *.* TO 'netdata'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Sonra Netdata MySQL plugin yapılandırmasını düzenleyin:

sudo /etc/netdata/edit-config go.d/mysql.conf
jobs:
  - name: local_mysql
    dsn: netdata:guclu_sifre_burada@tcp(127.0.0.1:3306)/

Değişiklikleri uygulamak için:

sudo systemctl restart netdata

Birkaç dakika sonra Netdata dashboard’unda MySQL başlığı altında sorgu sayısı, bağlantı sayısı, InnoDB buffer durumu gibi onlarca metrik görünmeye başlayacak.

Nginx İzleme

Nginx’in stub_status modülü etkinleştirilmişse Netdata bunu otomatik algılar. Eğer etkinleştirilmemişse nginx yapılandırmanıza ekleyin:

server {
    location /nginx_status {
        stub_status on;
        allow 127.0.0.1;
        deny all;
    }
}

Netdata bu endpoint’i otomatik keşfeder ve nginx aktif bağlantı, istek/saniye gibi metrikleri göstermeye başlar.

Parent-Child Mimarisi ile Merkezi İzleme

Birden fazla sunucunuz varsa her birinde Netdata kurup tek bir dashboard’dan hepsini izleyebilirsiniz. Bunun için parent-child yapısını kullanacağız.

Parent sunucu (metrikler burada toplanır) /etc/netdata/netdata.conf dosyasında:

[db]
    mode = dbengine

[stream]
    enable by default from = *
    default memory mode = dbengine

Child sunucu (metriklerini parent’a gönderir) /etc/netdata/stream.conf dosyasında:

[stream]
    enabled = yes
    destination = parent-sunucu-ip:19999
    api key = BURAYA-RASTGELE-UUID-YAZIN

API key üretmek için:

uuidgen

Çıktıdaki UUID’yi hem child’ın api key alanına hem de parent’ın stream.conf dosyasındaki ilgili bölüme yazın. Parent’ın stream.conf dosyası:

[BURAYA-AYNI-UUID]
    enabled = yes
    allow from = *
    history = 3600
    default memory mode = dbengine

Bu yapılandırmanın ardından child sunucular parent’a bağlandığında, parent’ın dashboard’unda tüm sunucuların metriklerini tek ekrandan görebilirsiniz.

Gerçek Dünya Senaryosu: Yavaş Sunucu Tanısı

Bir müşteri “sunucu çok yavaş” diye aradığında Netdata’yı nasıl kullanırsınız? İşte adım adım:

Önce CPU bölümüne bakın. CPU grafikleri user, system, iowait, steal olarak ayrılmış. Eğer iowait yüksekse sorun disk I/O’dur, CPU’dan kaynaklanmıyordur.

Disk bölümüne geçin. Her disk için okuma/yazma hızı ve IOPS görünüyor. Olağandışı yüksek değerler hangi diske ait?

Şimdi süreçlere bakın. Netdata’nın “Applications” bölümü her süreci gruplar halinde gösterir. Hangi uygulama en çok disk I/O yapıyor?

RAM bölümünde swap kullanımına bakın. Yüksek swap kullanımı yetersiz RAM işaretçisidir ve aynı zamanda diskin çok yazılmasına yol açar.

Bu 4 adımla büyük ihtimalle sorunun kaynağını 2-3 dakikada bulursunuz. Netdata olmadan aynı tespiti yapmak için birden fazla komut çalıştırmanız, logları karıştırmanız gerekecekti.

Performans Optimizasyonu

Netdata kendi başına az kaynak tüketen bir araç olsa da çok sayıda plugin aktifken birikebilir. Kullanmadığınız plugin’leri devre dışı bırakmak kaynak tasarrufu sağlar:

sudo nano /etc/netdata/netdata.conf
[plugins]
    # Kullanmadıklarınızı devre dışı bırakın
    ioping = no
    fping = no
    nfacct = no
    cgroups = yes
    tc = yes

Ayrıca veri toplama sıklığını değiştirebilirsiniz. Varsayılan 1 saniyedir. 2 saniyeye çıkarmak CPU kullanımını neredeyse yarıya indirir:

[global]
    update every = 2

Dashboard’da bu değişikliği hissedersiniz ama çoğu durumda 2 saniyeyi fark etmezsiniz bile.

Log Takibi ve Sorun Giderme

Netdata’nın logları /var/log/netdata/ dizininde bulunur. Temel loglar:

  • error.log: Hatalar ve uyarılar
  • access.log: Dashboard’a gelen HTTP istekleri
  • debug.log: Detaylı debug bilgisi (normalde kapalı)

Canlı log takibi için:

sudo tail -f /var/log/netdata/error.log

Belirli bir plugin neden veri toplamıyor? Debug modda çalıştırarak görebilirsiniz:

sudo -u netdata bash
/usr/libexec/netdata/plugins.d/python.d.plugin mysql debug trace

Çıktıda plugin’in nerede takıldığını, hangi bağlantı denemesinin başarısız olduğunu görebilirsiniz.

Güvenlik Kontrol Listesi

Kurulumu tamamlamadan önce şu güvenlik adımlarını geçin:

  • Harici erişimi kapatın veya kısıtlayın: bind to = 127.0.0.1 ayarını yapın
  • Reverse proxy ve authentication kullanın: Nginx + htpasswd kombinasyonu minimum
  • SSL/TLS kullanın: Let’s Encrypt ile ücretsiz sertifika alabilirsiniz
  • Güvenlik duvarı kuralı ekleyin: 19999 portunu dışarıya açık bırakmayın
  • Netdata servisini root dışı kullanıcıyla çalıştırın: Varsayılan kurulum bunu zaten yapıyor, teyit edin
# Güvenlik duvarında portu kısıtlayın
sudo ufw deny 19999
sudo ufw allow from 192.168.1.0/24 to any port 19999

Sonuç

Netdata’yı 10 dakikada kurabilir, 30 dakikada temel yapılandırmayı tamamlayabilirsiniz. Reverse proxy, alarm bildirimleri ve uygulama izleme eklendiğinde elinizde gerçek anlamda işlevsel bir izleme sistemi oluyor.

Özellikle belirtmek istediğim bir nokta: Netdata’yı kurup unutmayın. Dashboard’u düzenli kontrol edin, alarm eşiklerini gerçek trafiğinize göre ayarlayın ve false positive alarmları temizleyin. İyi ayarlanmış bir alarm sistemi, müşteri sizi aramadan önce sorunu fark etmenizi sağlar. Bu da hem size hem müşteriye zaman kazandırır.

Parent-child mimarisini kurduktan sonra tüm altyapınızı tek ekrandan görmek oldukça tatmin edici. Özellikle gece yarısı beklenmedik bir yük artışı yaşandığında, Netdata’nın geçmişe dönük verilerini inceleyerek “bu saat 02:14’te başladı, o sırada şu süreç bu kadar CPU kullanıyordu” gibi çok spesifik bilgilere ulaşabilmek paha biçilmez.

Bir sonraki adım olarak Netdata Cloud’a göz atabilirsiniz. Ücretsiz katmanında birden fazla node’u merkezi olarak yönetebilir, alarmları bir yerden takip edebilirsiniz. Ancak verilerinizin buluta gönderilmesini istemiyorsanız tamamen self-hosted parent-child yapısı da yeterli.

Similar Posts

Bir yanıt yazın

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