Nagios Nedir?
Nagios, sistemlerin, servislerin, uygulamaların ve iş süreçlerinin sürekli olarak izlenmesini sağlayan, açık kaynak kodlu bir sistem ve ağ izleme uygulamasıdır. Temel amacı, olası sorunları tespit etmek ve yöneticilere bildirimde bulunarak, sorunların büyümeden çözülmesine yardımcı olmaktır. Nagios, performansı izleyebilir, kaynak kullanımını takip edebilir ve sistemlerin genel sağlığını değerlendirebilir. Ayrıca, özelleştirilebilir yapısı sayesinde farklı sistemlere ve ihtiyaçlara uyarlanabilir.
Nagios'un Temel Özellikleri Nelerdir?
- Kapsamlı İzleme: Ağ servislerini (SMTP, POP3, HTTP, NNTP, ICMP, DNS) ve sistem kaynaklarını (işlemci yükü, disk kullanımı, bellek kullanımı, log dosyaları) izleyebilir.
- Esnek Uyarı Mekanizmaları: Sorun tespit edildiğinde e-posta, SMS veya özel komut dosyaları aracılığıyla uyarı gönderebilir.
- Genişletilebilirlik: Eklentiler (plugins) aracılığıyla izleme yetenekleri genişletilebilir.
- Web Arayüzü: Sistem durumu, uyarılar ve performans verileri web arayüzünden takip edilebilir.
- Raporlama: İzleme verileri üzerinden raporlar oluşturulabilir.
- Dağıtık İzleme: Birden fazla sunucuyu ve ağı tek bir noktadan izleme imkanı sunar.
- Otomatik Yeniden Başlatma: Sorunlu servisleri otomatik olarak yeniden başlatma yeteneğine sahiptir.
Nagios'u Neden Kullanmalıyız?
Nagios, birçok avantaj sunarak sistem yöneticilerinin işini kolaylaştırır:
- Proaktif İzleme: Sorunlar ortaya çıkmadan önce tespit edilerek kesintilerin önlenmesine yardımcı olur.
- Hızlı Sorun Giderme: Sorunlar hakkında hızlı bildirimler alarak, sorunların hızlı bir şekilde çözülmesini sağlar.
- Performans Optimizasyonu: Sistem performansını izleyerek, iyileştirme alanlarını belirlemeye yardımcı olur.
- Kaynak Yönetimi: Kaynak kullanımını takip ederek, kaynakların verimli kullanılmasını sağlar.
- Uptime Artışı: Sistemlerin ve servislerin sürekli olarak izlenmesi, uptime'ı artırır.
- Uyumluluk: Çeşitli işletim sistemleri ve platformlarla uyumludur.
- Maliyet Etkinliği: Açık kaynak kodlu olması sayesinde, lisans maliyeti yoktur.
Nagios Kurulumu Nasıl Yapılır? (Adım Adım)
Bu bölümde, Debian/Ubuntu sistemleri üzerinde Nagios'un nasıl kurulacağını adım adım anlatacağız. Diğer işletim sistemleri için de benzer adımlar izlenebilir, ancak paket yöneticisi komutları farklılık gösterebilir.
- Gerekli Paketlerin Kurulumu:
İlk olarak, Nagios'un çalışması için gerekli olan paketleri kurmamız gerekiyor.
sudo apt update sudo apt install -y apache2 php libapache2-mod-php nagios4 nagios-plugins nagios-plugins-standard nagios-plugins-basic snmp libnet-snmp-perl
Bu komut, Apache web sunucusunu, PHP'yi, Nagios 4'ü, gerekli eklentileri ve SNMP desteğini kuracaktır.
- Nagios Kullanıcı ve Grup Ayarları:
Nagios'un web arayüzüne erişim için bir kullanıcı oluşturmamız gerekiyor. Bu kullanıcıyı `nagiosadmin` olarak adlandıracağız.
sudo htpasswd -c /etc/nagios4/htpasswd.users nagiosadmin
Bu komut, `nagiosadmin` kullanıcısı için bir şifre belirlemenizi isteyecektir. Şifreyi unutmamaya özen gösterin.
Apache'yi yeniden başlatarak değişikliklerin etkinleşmesini sağlayın.
sudo systemctl restart apache2
- Nagios Web Arayüzüne Erişim:
Web tarayıcınızda, sunucunuzun IP adresini veya alan adını kullanarak Nagios web arayüzüne erişebilirsiniz. URL şu şekilde olmalıdır:
http://<sunucu_ip_adresi>/nagios4/
Karşınıza bir kimlik doğrulama ekranı gelecektir. Burada, oluşturduğunuz `nagiosadmin` kullanıcısı ve şifresiyle giriş yapabilirsiniz.
- Nagios Konfigürasyon Dosyalarının Ayarlanması:
Nagios'un izleyeceği hostları ve servisleri yapılandırmak için konfigürasyon dosyalarını düzenlememiz gerekiyor. Temel konfigürasyon dosyaları genellikle `/etc/nagios4/` dizininde bulunur.
Örneğin, yeni bir host eklemek için `/etc/nagios4/conf.d/hosts/` dizininde yeni bir dosya oluşturabilirsiniz. Dosya içeriği şu şekilde olabilir:
define host { use generic-host host_name example.com alias Example Server address 192.168.1.100 }
Bu yapılandırma, `example.com` adlı bir hostu (192.168.1.100 IP adresine sahip) izleyecektir.
- Servislerin Yapılandırılması:
Hostlara ek olarak, servisleri de yapılandırmanız gerekiyor. Servisler, hostlar üzerinde çalışan uygulamaları veya süreçleri temsil eder. Örneğin, HTTP servisini izlemek için `/etc/nagios4/conf.d/services/` dizininde yeni bir dosya oluşturabilirsiniz. Dosya içeriği şu şekilde olabilir:
define service { use generic-service host_name example.com service_description HTTP check_command check_http }
Bu yapılandırma, `example.com` hostu üzerindeki HTTP servisini izleyecektir.
- Nagios'u Yeniden Başlatma:
Yapılandırma dosyalarında değişiklik yaptıktan sonra, Nagios'u yeniden başlatarak değişikliklerin etkinleşmesini sağlamanız gerekiyor.
sudo systemctl restart nagios4
- Yapılandırmayı Doğrulama:
Nagios'u yeniden başlattıktan sonra, web arayüzünden hostların ve servislerin durumunu kontrol ederek yapılandırmanın doğru olup olmadığını doğrulayabilirsiniz.
Nagios Eklentileri (Plugins) Nelerdir ve Nasıl Kullanılır?
Nagios eklentileri (plugins), Nagios'un izleme yeteneklerini genişleten küçük programlardır. Eklentiler, belirli servislerin, uygulamaların veya sistem kaynaklarının durumunu kontrol etmek için kullanılır. Nagios, birçok standart eklentiyle birlikte gelir, ancak ihtiyacınıza göre özel eklentiler de geliştirebilir veya indirebilirsiniz.
- Standart Eklentiler: Nagios, temel izleme görevleri için birçok standart eklentiyle birlikte gelir. Bu eklentiler, disk kullanımı, işlemci yükü, bellek kullanımı, HTTP, SMTP, POP3 gibi yaygın servislerin durumunu kontrol etmek için kullanılabilir.
- Özel Eklentiler: İhtiyacınıza göre özel eklentiler geliştirebilirsiniz. Örneğin, belirli bir uygulamanın durumunu kontrol etmek veya özel bir metrik izlemek için özel bir eklenti yazabilirsiniz.
- Eklenti Kullanımı: Eklentiler, komut satırından veya Nagios yapılandırma dosyalarından çağrılabilir. Eklentiler genellikle belirli parametrelerle çalıştırılır ve bir durum kodu (OK, WARNING, CRITICAL, UNKNOWN) döndürür.
Örnek: Disk Kullanımı Eklentisi Kullanımı
Disk kullanımını kontrol etmek için `check_disk` eklentisini kullanabiliriz. Bu eklenti, belirli bir disk bölümünün kullanım oranını kontrol eder ve belirli bir eşiği aşması durumunda uyarı verir.
/usr/lib/nagios/plugins/check_disk -w 80% -c 90% -p /
Bu komut, kök dizinin (`/`) disk kullanımını kontrol eder. Eğer disk kullanımı %80'i aşarsa bir uyarı (`WARNING`) verir, %90'ı aşarsa kritik bir hata (`CRITICAL`) verir.
Nagios'da Uyarı (Notification) Ayarları Nasıl Yapılır?
Nagios'un en önemli özelliklerinden biri, sorun tespit edildiğinde uyarı gönderebilmesidir. Uyarılar, e-posta, SMS veya özel komut dosyaları aracılığıyla gönderilebilir. Uyarı ayarları, kullanıcılar, kontak grupları ve servisler için ayrı ayrı yapılandırılabilir.
- Kullanıcı Tanımlama: İlk olarak, uyarıları alacak kullanıcıları tanımlamanız gerekiyor. Kullanıcılar, `/etc/nagios4/conf.d/contacts.cfg` dosyasında tanımlanır.
- Kontak Grupları Tanımlama: Kullanıcıları gruplar halinde organize etmek için kontak gruplarını kullanabilirsiniz. Kontak grupları, aynı uyarıları alacak kullanıcıları bir araya getirmenizi sağlar.
- Servisler için Uyarı Ayarları: Servisler için uyarı ayarlarını, servis tanımlarında belirleyebilirsiniz. Uyarı ayarları, hangi durumlarda uyarı gönderileceğini, hangi kontak gruplarına uyarı gönderileceğini ve uyarıların nasıl gönderileceğini belirler.
Örnek: E-posta Uyarı Ayarları
E-posta uyarılarını yapılandırmak için, aşağıdaki adımları izleyebilirsiniz:
- `contacts.cfg` Dosyasını Düzenleyin:
`/etc/nagios4/conf.d/contacts.cfg` dosyasını açın ve kullanıcı tanımlarını ekleyin veya düzenleyin.
define contact { contact_name nagiosadmin alias Nagios Admin email [email protected] service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-service-by-email host_notification_commands notify-host-by-email }
Bu yapılandırma, `nagiosadmin` kullanıcısı için e-posta adresini (`[email protected]`) ve uyarı ayarlarını tanımlar.
- `commands.cfg` Dosyasını Düzenleyin:
`/etc/nagios4/conf.d/commands.cfg` dosyasını açın ve e-posta gönderme komutlarını tanımlayın.
define command { command_name notify-service-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ } define command { command_name notify-host-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $HOSTSTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$HOSTOUTPUT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTALIAS$ is $HOSTSTATE$ **" $CONTACTEMAIL$ }
Bu yapılandırma, e-posta gönderme komutlarını (`notify-service-by-email` ve `notify-host-by-email`) tanımlar.
- Servis Tanımlarında Uyarıları Etkinleştirin:
Servis tanımlarında, hangi kontak gruplarına uyarı gönderileceğini belirtin.
define service { use generic-service host_name example.com service_description HTTP check_command check_http contacts nagiosadmin }
Bu yapılandırma, `example.com` hostu üzerindeki HTTP servisi için `nagiosadmin` kullanıcısına uyarı gönderilmesini sağlar.
- Nagios'u Yeniden Başlatın:
Yapılandırma dosyalarında değişiklik yaptıktan sonra, Nagios'u yeniden başlatarak değişikliklerin etkinleşmesini sağlayın.
sudo systemctl restart nagios4
Nagios'da Host Grupları ve Servis Grupları Nasıl Kullanılır?
Nagios'da host grupları ve servis grupları, hostları ve servisleri mantıksal olarak gruplandırmak için kullanılır. Bu gruplar, yapılandırmayı basitleştirmeye ve uyarı ayarlarını kolaylaştırmaya yardımcı olur.
- Host Grupları: Host grupları, benzer özelliklere sahip hostları bir araya getirir. Örneğin, web sunucularını, veritabanı sunucularını veya belirli bir lokasyondaki sunucuları gruplandırabilirsiniz.
- Servis Grupları: Servis grupları, benzer servisleri bir araya getirir. Örneğin, HTTP servislerini, SMTP servislerini veya belirli bir uygulamanın servislerini gruplandırabilirsiniz.
Örnek: Host Grubu Tanımlama
`/etc/nagios4/conf.d/hostgroups.cfg` dosyasında bir host grubu tanımlayabilirsiniz.
define hostgroup {
hostgroup_name web-servers
alias Web Servers
members webserver1,webserver2,webserver3
}
Bu yapılandırma, `web-servers` adlı bir host grubu oluşturur ve `webserver1`, `webserver2` ve `webserver3` hostlarını bu gruba dahil eder.
Örnek: Servis Grubu Tanımlama
`/etc/nagios4/conf.d/servicegroups.cfg` dosyasında bir servis grubu tanımlayabilirsiniz.
define servicegroup {
servicegroup_name http-services
alias HTTP Services
members HTTP
}
Bu yapılandırma, `http-services` adlı bir servis grubu oluşturur ve `HTTP` servisini bu gruba dahil eder.
Nagios Performansını Nasıl İzler?
Nagios, sistem ve ağ performansını çeşitli metrikler aracılığıyla izler. Bu metrikler, işlemci yükü, disk kullanımı, bellek kullanımı, ağ trafiği ve uygulama yanıt süreleri gibi çeşitli performans göstergelerini içerir. Performans verileri, grafikler ve raporlar aracılığıyla görselleştirilebilir.
- NRPE (Nagios Remote Plugin Executor): NRPE, uzak sunucularda eklentileri çalıştırmak ve sonuçları Nagios sunucusuna göndermek için kullanılan bir ajandır. NRPE, özellikle özel metrikleri izlemek veya yerel komutları çalıştırmak için kullanışlıdır.
- SNMP (Simple Network Management Protocol): SNMP, ağ cihazlarını (router, switch, yazıcı vb.) izlemek için kullanılan bir protokoldür. Nagios, SNMP aracılığıyla ağ cihazlarının durumunu ve performansını izleyebilir.
- NSClient++: Windows sistemlerini izlemek için kullanılan bir ajandır. NSClient++, disk kullanımı, işlemci yükü, bellek kullanımı ve servis durumları gibi çeşitli metrikleri izleyebilir.
Örnek: CPU Yükünü İzleme
CPU yükünü izlemek için, `check_load` eklentisini kullanabilirsiniz. Bu eklenti, 1 dakikalık, 5 dakikalık ve 15 dakikalık ortalama CPU yükünü kontrol eder ve belirli bir eşiği aşması durumunda uyarı verir.
/usr/lib/nagios/plugins/check_load -w 1.5,1,0.5 -c 2,1.5,1
Bu komut, CPU yükünü kontrol eder. Eğer 1 dakikalık ortalama yük 1.5'i, 5 dakikalık ortalama yük 1'i ve 15 dakikalık ortalama yük 0.5'i aşarsa bir uyarı (`WARNING`) verir. Eğer 1 dakikalık ortalama yük 2'yi, 5 dakikalık ortalama yük 1.5'i ve 15 dakikalık ortalama yük 1'i aşarsa kritik bir hata (`CRITICAL`) verir.
Nagios ile İzlenebilecek Bazı Temel Metrikler
Metrik | Açıklama | Eklenti |
---|---|---|
CPU Yükü | Sunucunun işlemci kullanım oranı | check_load |
Disk Kullanımı | Disk bölümlerinin doluluk oranı | check_disk |
Bellek Kullanımı | Sunucunun bellek kullanım oranı | check_mem |
Ağ Trafiği | Sunucunun ağ üzerinden gönderdiği ve aldığı veri miktarı | check_iftraffic |
HTTP Yanıt Süresi | Web sunucusunun isteklere yanıt verme süresi | check_http |
Nagios'da Log Dosyası İzleme Nasıl Yapılır?
Nagios, log dosyalarını izleyerek, belirli olayları veya hataları tespit edebilir. Log dosyası izleme, özellikle uygulama hatalarını, güvenlik ihlallerini veya sistem sorunlarını tespit etmek için kullanışlıdır.
- `check_log` Eklentisi: `check_log` eklentisi, log dosyalarını izlemek için kullanılan bir standart eklentidir. Bu eklenti, belirli bir deseni (pattern) içeren satırları arar ve belirli bir sayıda eşleşme bulunursa uyarı verir.
Örnek: Log Dosyası İzleme
Bir log dosyasında belirli bir hata mesajını izlemek için, aşağıdaki komutu kullanabilirsiniz:
/usr/lib/nagios/plugins/check_log -F /var/log/syslog -O /tmp/syslog.old -q -k "ERROR" -w 1 -c 5
Bu komut, `/var/log/syslog` dosyasında "ERROR" kelimesini arar. Eğer 1 veya daha fazla eşleşme bulunursa bir uyarı (`WARNING`) verir, 5 veya daha fazla eşleşme bulunursa kritik bir hata (`CRITICAL`) verir. `-O /tmp/syslog.old` parametresi, log dosyasının bir önceki durumunu saklamak için kullanılır.
Nagios'un Avantajları ve Dezavantajları Nelerdir?
Avantajları | Dezavantajları |
---|---|
Açık kaynak kodlu ve ücretsiz | Yapılandırması karmaşık olabilir |
Genişletilebilir ve özelleştirilebilir | Web arayüzü modern olmayabilir |
Kapsamlı izleme yetenekleri | Öğrenme eğrisi yüksek olabilir |
Aktif bir topluluğa sahip | Eklenti uyumluluk sorunları yaşanabilir |
Çok sayıda eklenti mevcut | Yüksek kaynak tüketimi (büyük ölçekli ortamlarda) |
Nagios Alternatifleri Nelerdir?
Nagios, popüler bir izleme çözümü olmasına rağmen, farklı ihtiyaçlara ve tercihlere uygun birçok alternatifi bulunmaktadır. İşte bazı popüler Nagios alternatifleri:
- Zabbix: Zabbix, kapsamlı izleme yetenekleri, kullanıcı dostu web arayüzü ve otomatik keşif özelliği ile öne çıkan bir diğer açık kaynak kodlu izleme çözümüdür.
- Prometheus: Prometheus, özellikle container'lar ve mikroservisler gibi dinamik ortamlarda popüler olan bir açık kaynak kodlu izleme çözümüdür. Zaman serisi verilerini toplama ve sorgulama konusunda uzmanlaşmıştır.
- Icinga: Icinga, Nagios'un bir çatallanmasıdır ve Nagios ile uyumlu olacak şekilde tasarlanmıştır. Icinga, daha modern bir web arayüzü, daha iyi performans ve daha kolay yapılandırma sunar.
- Datadog: Datadog, bulut tabanlı bir izleme ve analiz platformudur. Altyapı, uygulama ve log verilerini tek bir platformda birleştirir.
- New Relic: New Relic, uygulama performansını izlemek için tasarlanmış bir SaaS platformudur. Uygulama kodunun derinlemesine analizini yaparak, performans sorunlarını tespit etmeye yardımcı olur.
Gerçek Hayattan Örnekler ve Vaka Çalışmaları
Örnek 1: E-ticaret Sitesi İzleme
Büyük bir e-ticaret sitesi, Nagios kullanarak web sunucularının, veritabanı sunucularının ve ödeme sistemlerinin durumunu izlemektedir. Nagios, web sunucularının yanıt sürelerini, veritabanı sunucularının performansını ve ödeme sistemlerinin kullanılabilirliğini sürekli olarak kontrol etmektedir. Herhangi bir sorun tespit edildiğinde, Nagios otomatik olarak sistem yöneticilerine uyarı göndermekte ve sorunların hızlı bir şekilde çözülmesini sağlamaktadır. Bu sayede, e-ticaret sitesi kesintisiz hizmet verebilmekte ve müşteri memnuniyetini artırabilmektedir.
Örnek 2: Finans Kuruluşu Ağ İzleme
Bir finans kuruluşu, Nagios kullanarak ağ cihazlarının (router, switch, firewall) durumunu ve performansını izlemektedir. Nagios, ağ cihazlarının CPU kullanımını, bellek kullanımını, bant genişliğini ve bağlantı durumunu sürekli olarak kontrol etmektedir. Herhangi bir ağ sorunu tespit edildiğinde, Nagios otomatik olarak ağ yöneticilerine uyarı göndermekte ve sorunların hızlı bir şekilde çözülmesini sağlamaktadır. Bu sayede, finans kuruluşu ağının güvenliğini ve performansını koruyabilmekte ve finansal işlemlerin kesintisiz olarak gerçekleştirilmesini sağlayabilmektedir.
Örnek 3: Üniversite BT Altyapısı İzleme
Bir üniversite, Nagios kullanarak BT altyapısının (sunucular, ağ cihazları, uygulamalar) durumunu ve performansını izlemektedir. Nagios, sunucuların CPU kullanımını, disk kullanımını, bellek kullanımını, ağ cihazlarının bant genişliğini ve uygulamaların yanıt sürelerini sürekli olarak kontrol etmektedir. Herhangi bir sorun tespit edildiğinde, Nagios otomatik olarak BT yöneticilerine uyarı göndermekte ve sorunların hızlı bir şekilde çözülmesini sağlamaktadır. Bu sayede, üniversite BT altyapısının güvenliğini ve performansını koruyabilmekte ve öğrencilerin ve personelin BT hizmetlerine kesintisiz olarak erişmesini sağlayabilmektedir.