Monit ile Sistem Monitoring – Kurulum ve Yapılandırma
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYFLsAhM' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
Normalde ağdaki sunucu ve cihazları monitör etmek için nagios kullanıyorum. Hatta Nagios kurulumu ve yapılandırması ile ilgili buradan erişebileceğiniz bir de döküman yayınlamıştım. Şimdi ise monit isimli bir başka kullanışlı sistem monitoring yazılımından bahsetmek istiyorum. Zira kendisi de epey yetenekli. |
Özellikle bir ya da bir kaç sunucudan oluşan, nispeten küçük ağların monitor edilmesi için iyi bir tercih olabilecek olan monit, *nix sistemlerde cpu, memory, swap, disk kullanımlarının takibi gibi klasik monitoring ihtiyaçlarının yanı sıra, süreçlerin takip edilmesi, monitor edilen sürecin durması durumunda yeniden başlatabilme (ya da herhangi bir komutu/scripti çalıştırabilme) gibi yeteneklere sahiptir. Ayrıca, dosya ve dizinleri (size, timestamp, checksum vs. gibi) değişikliklere karşı takip edip, değişimleri raporlayabilmektedir. Uzak sistemler için de ping ya da TCP/IP port bağlantı testleri ile nispi monitoring imkanı sunabilmektedir. Yönetim işlemleri için güzel bir web arayüzü sunan monit, kurulum ve yapılandırma açısından da son derece basittir.
İlerleyen bölümlerde, kurulum ve yapılandırma örnekleri ile ilgili bilgiler bulabilirsiniz.
Genel Özellikler
Aslında monit'in, ücretli ve ücretsiz olmak üzere iki sürümü bulunuyor. M/Monit ismi ile geçen ücretli sürümde merkezi yönetim imkanı bulunurken, Monit isimli ücretsiz sürüm sadece standalone olarak çalışmakta ve merkezi yönetim sunmamamktadır. Dolayısı ile birden fazla sunucunun takip edilmesi istenen durumlarda, monit her sisteme ayrı ayrı kurulmak durumundadır ve her sunucu kendisine ait olan web arayüzünden yönetilmelidir.
Ancak kolay kurulum ve yapılandırması nedeni ile monit'in ücretsiz sürümü, çok fazla sayıda sunucu bulunmayan ortamlar için oldukça idealdir. (Aksi bir durum için yazının başında da belirttiğim gibi Nagios kullanmak daha mantıklı olabilir.)
Yazının başında kısaca değindiğim özellikleri listelemek gerekirse, monit'in temel özellikleri şu şekildedir:
- Daemon Mode. Servis olarak çalışma
- Üç farklı çalışma modu – Aktif, Pasif ve Manual
- Süreç ve servisleri belirli koşullara göre start, stop ve ya restart edebilme.
- Servis ya da süreçler için bağımlılık (dependencies) tanımları yapabilme.
- Error ya da Recovery durumlarında email ile raporlama.
- Düzenlenebilir alarm raporları.
- CPU, Memory, Swap, Disk Usage ve Load kontrolü
- Dosya ve Dizin kontrolü
- File Size
- Timestamp
- Permission
- Lokal ya da uzak sistemler üzerinde MD5 ya da SHA1 doğrulama.
- Uzak sistemleri, ping ya da TCP/IP bağlantı testleri ile monitor edebilme.
Monit' hemen her *nix dağıtımının paket depolarında bulunduğu için, ilgili sistemin paket yöneticisi üzerinden kolayca kurulabilmektedir. Gayet anlaşılır bir söz dizimi yapısına sahip olduğu için de konfigurasyon işlemleri de çok kolaydır.
Kurulum ve Yapılandırma
Kurulum bölümünde, monit'in FreeBSD, CentOS ve Debian sistemlerde, ilgili sistemlere ait paket yöneticisi üzerinden kurulumunu anlatacağım. Bir sonraki “Yapılandırma” isimli bölümde ise, çeşitli monitoring şekilleri için gerekli konfigurasyon işlemlerinden bahsedeceğim.
FreeBSD
Monit, FreeBSD 8.x sistemlerin port ağacında bulunmaktadır. Ancak monit'in (şu anki 5.2.3 numaralı) son sürümünü yükleyebilmek için port ağacınızın güncel olması gerekir. (Yazının ilerleyen bölümlerinde bahsedilen yapılandırma işlemleri son sürüm baz alınarak hazırlanmıştır.)
Bu nedenle, kuruluma geçmeden önce port agacınızı güncelleyiniz. Bu işlem için aşağıdaki likten yararlanabilirsiniz:
http://www.syslogs.org/using-portsnap/
Kurulum
Port ağacınız güncelse ya da güncellendiyse, kurulumu klasik olarak şu şekilde yapabilirsiniz:
# cd /usr/ports/sysutils/monit # make install clean
Herhangi sorun çıkmadan kurulum tamamlandıysa, sıradaki adım temel konfigurasyon işlemlerinin yapılmasıdır.
Kurulum sırasında, /usr/local/etc/ dizini altında monitrc.sample ismi bir örnek yapılandırma dosyası oluşturulur. Bu dosyayı monitrc ismi ile aynı dizine kopyalayalım.
# cp -pr /usr/local/etc/monitrc.sample /usr/local/etc/monitrc
İlgili dosya içerisinde her türlü yapılandırma işlemi tanımlanmış ancak comment out edilerek devre dışı bırakılmış durumdadır. İsterseniz comment out edilmiş satırları ihtiyacınıza göre düzenledikten sonra uncomment edip devreye alabilirsiniz.
Ancak ben daha derli toplu olması açısından, yapılandırma dosyasının en sonunda bulunan include satırını uncomment ediyorum. Bu şekilde /etc/monit.d/ dizini içerisinde oluşturabileceğiniz özel yapılandırma dosyaları monit tarafından okunarak devreye alınıyorlar.
Size de aynısını tavsiye ederim. Bu işlem için /usr/local/etc/monitrc dosyasını en son satırını gösterecek editleyin:
# vi + /usr/local/etc/monitrc
Başına diez (#) konularak comment out edilmiş include /etc/monit.d/*
satırını aşağıda görüldüğü gibi olacak şekilde uncomment out edin ve dosyayı kaydedin.
include /etc/monit.d/*
Son olarak, monit.d isimli dizini oluşturuyoruz.
# mkdir /etc/monit.d
Artık, monit.d dizini içerisinde oluşturulacak her yapılandırma dosyası monit tarafından devreye alınacaktır.
Sıradaki adım, temel monitoring işlemleri için bir yapılandırma dosyası oluşturmaktan ibaret.
Yapılandırma
Şimdi, /etc/monit.d isimli dizin altında, localhost isimli genel bir yapılandırma dosyası dosyası açalım:
# vi /etc/monit.d/localhost
Dosya içerisine aşağıda bulunan satırları (kırmızı ile belirtilenleri kendimize gore düzenleyerek) ekleyelim. (Satırların açıklamaları yanlarında yazmaktadır.)
set daemon 60 #60 saniyede bir kontrol yap. set logfile syslog facility log_daemon #Loglamayi syslog uzerinden yap. set mailserver localhost #Alarmlar icin smtp sunucu localhost. 192.168.12.25 #Localhost'a baglanilamazsa alternatif smtp. set alert [email protected] #Mailleri [email protected] adresine gonder. mail-format { #Asagidaki mail formatini kullan. from: [email protected] subject: $SERVICE $EVENT message: Tarih: $DATE Olay: $SERVICE $EVENT Durum: $DESCRIPTION. Aksiyon: $ACTION } set httpd port 2812 and #Web interface icin 2812 no'lu portu kullan. use address 192.168.12.233 #Interface'i bu ip'ye bind et. allow localhost #Web arayuzune localhost'tan erisim izni. allow 192.168.12.0/24 #Arayuze 192.168.12.0/24'den erisim izni. allow admin:monit #Web arayuzu icin kullanici admin sifre monit
Açıklama satırlarında da görüldüğü üzere yukarıdaki tanımlamalar, monit web arayüzü, raporlama için smtp server tanımları, mesaj şablonu ve arayüze erişim kontrolü gibi işlemleri belirliyor.
Genel yapılandırma tanımlamalarından sonra lokal sistemin temel olarak monitor edilmesi için aşağıdaki satırları da aynı dosyaya ekliyoruz:
check system localhost #Localhost check ve şu durumlarda alarm uret: if loadavg (1min) > 2 then alert #Load 1 dakika boyunca 2'den buyukse if loadavg (5min) > 1 then alert #Load 5 dakika boyunca 2'den buyukse if memory usage > 75% then alert #Memory kullanimi %75'in uzerindeyse if swap usage > 25% then alert #Swap kullanimi %25'in uzerindeyse if cpu usage (user) > 70% then alert #User kaynakli CPU usage %70'den buyukse if cpu usage (system) > 30% then alert #Sistem kaynakli CPU usage %30'dan buyukse if cpu usage (wait) > 20% then alert #CPU kullanimi wait state icin %20'den buyukse
son olarak dosyayı kaydedip çıkıyoruz.
Böylece, genel ayarlar ile sistem kaynaklarının monitor edilmesi ile ilgili temel tanımlamalar sisteme girilmiş oluyor.
Yapılandırma dosyasında herhangi bir yazım hatası olup olmadığını anlamak için monit'i debug modda çalıştırabilirsiniz:
# monit -vI
Eğer herhangi bir terslik varsa, ekrana basılan debug bilgilerinden sorunu saptayabilirsiniz. Yapılandırmanız düzgünse, monit sorunsuz olarak (ön planda) calismaya baslayacaktir. Bu durumda ctrl-c ile süreci sonlandırabilirsiniz.
Buraya kadar herhangi bir problemle karşılaşmadıysanız, monit'in sistem açılışlarından otomatik olarak başlaması için rc.conf'a gerekli enable satırını ekleyebiliriz:
# echo 'monit_enable="YES"' >> /etc/rc.conf
Son olarak da monit servisini start ediyoruz.
# /usr/local/etc/rc.d/monit start
Normal olarak monit aşağıda görüldüğü şekilde başlamalıdır.
Starting monit. Starting monit daemon with http interface at [192.168.12.233:2812]
Herşey yolundaysa web arayüzüne erişebiliyor olmanız gerekir.
Web tarayıcınıza http://monit.ipsi:2812 yazarsanız , kullanıcı adı password soran bir ekran gelmesi gerekir. Bilgilerinizi (default kullanici: admin sifre: monit) girdikten sonra aşağıdaki gibi bir ekran ile karşılaşmanız gerekir.
Monitor edilen sistem kaynakları ile ilgili bilgi almak (ya da monitoring işlemini durdurmak için) localhost linkine tıklarsanız, aşağıdaki gibi bir ekran ile karşılaşırsınız.
Resimde de görüldüğü gibi web arayüzü üzerinde, lokal kaynakların monitorlenmesi ile ilgili detaylı bilgi verilmektedir. Ekrandaki, “Disable monitoring” butonundan localhost için yapılan kaynak takibini durdurabilirsiniz. Devre dışı bıraktıktan sonra “Enable monitoring”‘e dönen ilgili butona tıklayarak da monitoringi yeniden aktifleştirebilirsiniz.
FreeBSD ile ilgili genel yapılandırma ve monitoring işlemleri bu kadar. Dosyaların,dizinlerin değişikliklere göre monitor edilmesi ile ilgili bilgileri yaznın “Çeşitli Yapılandırma Örnekleri” bölümünde bulabilirsiniz.
CentOS
CentOS 5.x sistemlerde, monit paketi rpmforge paket deposunda bulunmaktadır. Dolayısı ile bu depoyu sisteminize eklerseniz kurulumu yum üzerinden yapabilirsiniz.
Kurulum
Rpmforge repo'su CentOS 5.5 (i386) sistemlerde yum'a aşağıdaki şekilde eklenebilmektedir.
# rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
.
NOT: Farklı bir CentOS sürümü yada işlemci mimarisi kullanıyorsanız, kurulumu http://dag.wieers.com/rpm/FAQ.php#B2 adresinden yapabilirsiniz. |
Depo sisteme eklendikten sonra, yum üzerinden aşağıdaki şekilde monit kurulumu yapıyoruz.
# yum -y install monit
Hepsi bu kadar.
Yapılandırma
Monit kurulumunda, ana yapılandırma dosyası /etc/monit.conf ismi ile oluşturuluyor. Ayrıca ek yapılandırma dosyaları için /etc/monit.d/ isimli bir dizin oluşturuluyor. Ben özel yapılandırma dosyalarımı monit.d isimli bu include dizininde tutuyorum.
Dolayısı ile genel yapılandırma ve temel monitoring işlemleri için /etc/monit.d/ dizininde localhost isimli bir dosya açıyoruz:
# vi /etc/monit.d/localhost
İlgili dosya içerisine aşağıdaki ibareleri (kırmızı ile belirtilen bölümleri kendinize göre düzenlemeyi unutmayın) ekliyoruz.
set daemon 60 #60 saniyede bir kontrol yap. set logfile syslog facility log_daemon #Loglamayi syslog uzerinden yap. set mailserver localhost #Alarmlar icin smtp sunucu localhost. 192.168.12.25 #Localhost'a baglanilamazsa alternatif smtp. set alert [email protected] #Mailleri [email protected] adresine gonder. mail-format { #Asagidaki mail formatini kullan. from: [email protected] subject: $SERVICE $EVENT message: Tarih: $DATE Olay: $SERVICE $EVENT Durum: $DESCRIPTION. Aksiyon: $ACTION } set httpd port 2812 and #Web interface icin 2812 no'lu portu kullan. use address 192.168.12.234 #Interface'i bu ip'ye bind et. allow localhost #Web arayuzune localhost'tan erisim izni. allow 192.168.12.0/24 #Arayuze 192.168.12.0/24'den erisim izni. allow admin:monit #Web arayuzu icin kullanici admin sifre monit
Ayrıca, localhost'a ait sistem kaynaklarını monitorlemek için aşağıdaki ibareleri de dosyaya ekliyoruz:
check system localhost #Localhost check ve şu durumlarda alarm uret: if loadavg (1min) > 2 then alert #Load 1 dakika boyunca 2'den buyukse if loadavg (5min) > 1 then alert #Load 5 dakika boyunca 2'den buyukse if memory usage > 75% then alert #Memory kullanimi %75'in uzerindeyse if swap usage > 25% then alert #Swap kullanimi %25'in uzerindeyse if cpu usage (user) > 70% then alert #User kaynakli CPU usage %70'den buyukse if cpu usage (system) > 30% then alert #Sistem kaynakli CPU usage %30'dan buyukse if cpu usage (wait) > 20% then alert #CPU kullanimi wait state icin %20'den buyukse
Dosyayı kaydedip çıktıktan sonra, monit'in çalışabilmesi için gerekli olan state dosyalarının tutulacağı dizini oluşturuyoruz (nedense kurulum sırasında oluşturulmuyor):
# mkdir /var/monit
Herşey yolunda gittiyse monit çalışmaya hazır demektir. Ancak yapılandırma dosyalarında herhangi bir hata olup olmadığını anlamak için aşağıdaki komutu vererek moniti önplanda ve debug modunda çalıştıralım.
# monit -vI
Yapılandırmanızda bir sorun varsa ekrana basılan debug bilgilerinde bu hatayı görebilirsiniz. Herşey düzgün ise monit hata vermeden önplanda çalışmaya başlayacaktır bu durumda ctrl-c yaparak süreci durdurun.
Şimdi monit'i servis olarak başlatıyoruz.
# service monit start
Böylece monit aşğıdaki çıktıyı vererek arka planda çalışmaya başlayacaktır.
Starting monit: Starting monit daemon with http interface at [192.168.12.234:2812]
Artık web tarayıcınıza http://monit.ipsi:2812 yazarak arayüzü çağırabilirsiniz. Gelen kimlik doğrulama ekranına da kullanıcı adı ve şifrenizi (default admin/monit) yazarak login olabilirsiniz. Ekran görüntüleri aynı FreeBSD başlığındaki gibi olacaktır.
CentOS sistemler için monit kurulumı ve yapılandırması bu kadar. Dosya ve dizinlerin değişikliklere karşı takip edilmesi gibi konulara yazının “Çeşitli Yapılandırma Örnekleri” başlığında değineceğim.
Debian (Lenny)
Debian Lenny sistemlerde, monit'i apt-get üzerinden kurabiliyorsunuz, ancak Debian Lenny paket deposunda bulunan monit sürümü 4 gibi eski bir sürüm olduğundan bu yazıda anlatılan bazı yapılandırma özelliklerini desteklememektedir. (En azından benim denemelerimde durum bu şekilde oldu.)
Bu sorunu aşmak için ben, monit'in son sürümüne ait deb paketini indirerek kuruyorum. Bu şekildeki kurulum libssl paketinin son sürümünü istediğinden (zira lenny üzerinde 0.9.8g-15+lenny9 yüklü) dependency hatası veriyor, bunun için de kurulumu force anahtarı ile yapıyorum.
Kurulum
Kurulum işlemi için /usr/local/src dizinine geçtikten sonra monit'in 5.2.3 numaralı son sürümüne ait paketi http://ftp.debian.org/debian/pool/main/m/monit/ adresinen indiriyoruz.
# cd /usr/local/src/ # wget http://ftp.debian.org/debian/pool/main/m/monit/monit_5.2.3-1_i386.deb
.
NOT: Farklı bir Debian sürümü ya da işlemci mimarisi kullanıyorsanız http://ftp.debian.org/debian/pool/main/m/monit/ adresinden sisteminize uygun deb paketini indirmeniz gerekir. |
Paketi download ettikten sonra aşağıdaki şekilde kuruyoruz:
# dpkg -i --force-all monit_5.2.3-1_i386.deb
Kurulum sorunsuz bittiyse temel yapılandırma işlemlerine geçebiliriz.
Yapılandırma
Öncelikle, monit'in başlatılabilmesi için /etc/default/monit dosyasındaki startup=0 ibaresi 1 olacak şekilde düzenlenmelidir:
# vi /etc/default/monit
startup=0'ı 1 olarak değiştiriyoruz.
# You must set this variable to for monit to start
startup=1
Debian sistemlerde, monit'e ait özel yapılandırma dosyaları için kullanılan include dizini /etc/monit/conf.d/ ‘dir. Şimdi bu dizin altında, genel yapılandırma ve temel monitoring tanımlamaları için localhost isimli bir dosya oluşturalım.
# vi /etc/monit/conf.d/localhost
Bu dosyanın içerisine aşağıdaki yapılandırma ibarelerini (kırmızı ile belirtilenleri kendinize göre düzenledikten sonra) ekleyin.
set daemon 60 #60 saniyede bir kontrol yap. set logfile syslog facility log_daemon #Loglamayi syslog uzerinden yap. set mailserver localhost #Alarmlar icin smtp sunucu localhost. 192.168.12.25 #Localhost'a baglanilamazsa alternatif smtp. set alert [email protected] #Mailleri [email protected] adresine gonder. mail-format { #Asagidaki mail formatini kullan. from: [email protected] subject: $SERVICE $EVENT message: Tarih: $DATE Olay: $SERVICE $EVENT Durum: $DESCRIPTION. Aksiyon: $ACTION } set httpd port 2812 and #Web interface icin 2812 no'lu portu kullan. use address 192.168.12.235 #Interface'i bu ip'ye bind et. allow localhost #Web arayuzune localhost'tan erisim izni. allow 192.168.12.0/24 #Arayuze 192.168.12.0/24'den erisim izni. allow admin:monit #Web arayuzu icin kullanici admin sifre monit
Ayrıca, sistem kaynaklarının monitorlenmesi için aşağıdaki satırları da dosyaya ekliyoruz:
check system localhost #Localhost check ve şu durumlarda alarm uret: if loadavg (1min) > 2 then alert #Load 1 dakika boyunca 2'den buyukse if loadavg (5min) > 1 then alert #Load 5 dakika boyunca 2'den buyukse if memory usage > 75% then alert #Memory kullanimi %75'in uzerindeyse if swap usage > 25% then alert #Swap kullanimi %25'in uzerindeyse if cpu usage (user) > 70% then alert #User kaynakli CPU usage %70'den buyukse if cpu usage (system) > 30% then alert #Sistem kaynakli CPU usage %30'dan buyukse if cpu usage (wait) > 20% then alert #CPU kullanimi wait state icin %20'den buyukse
Böylece temel yapılandırma tamamlanmış oluyor. Conf dosyasında herhangi bir hata olup olmadığını anlamak için monit'i debug modda (ve önplanda) çalıştırabiliriz:
# monit -Iv
Herhangi bir yazım hatası vs. durumunda monit çalışmayacak ve ekrana hata ile ilgili bilgileri basacaktır. Ancak herşey yolundaysa conf bilgilerini ekrana bastıktan sonra önplanda çalışmaya başlayacaktır. Bu durumda ctrl-c yaparak süreci sonlandırın.
Son adım olarak da monit servisini start ediyoruz.
# /etc/init.d/monit start
Şimdi monit, aşağıdaki gibi bir çıktı vererek çalışmaya başlamış olmalıdır.
Starting daemon monitor: monit.
Bundan sonra, http://monit.ipsi:2812 şeklinde arayüze bağlanabilir, admin/monit kullanıcı adı ve şifre ikilisi ile login olabilirsiniz. Sistemin ekran görüntüsü, FreeBSD başlığında verilenler ile aynı olacaktır.
Debian sistemler için kurulum ve yapılandırma işlemleri bundan ibaret. Şimdi spesifik monitoring ihtiyaçları için bir kaç örneğe değinebiliriz.
Çeşitli Yapılandırma Örnekleri
Yazının başında da bahsettiğim gibi monit'i yerel kaynakları takip etmek dışında bir çok amaç için kullanmak üzere yapılandırmak mümkün. Bu bölümde çeşitli monitoring ihtiyaçları için yapılandırma işlemlerinin nasıl yapılabileceğinden bahsedeceğim. Burada değinmediğim tüm diğer seçenekler için yazının sonundaki kaynak linklerinden yararlanabilirsiniz.
Disk Kullanımının Takip Edilmesi
Monit'in disk kullanım oranlarını takip ederek, belirlediğiniz bir eşiğin üzerine çıkılması durumunda email ile raporlama yapması için yapılandırma dosyasına (bu yazıya göre /etc/monit.d/localhost , debian sistemler için /etc/monit/conf.d/localhost) aşağıdaki şekilde bir giriş yapılabilir.
check device RootDiskSize with path / if space usage > 90% then alert
Bu ibare kök dizinine (/) mount edilmiş diskin ya da disk bölümünün %90 üzeri doluluk oranına sahip olması durumunda alarm üret anlamına gelmektedir.
Sistemde başka bir disk ya da disk bölümünüz varsa, örneğin “/data” dizinine mount edilmiş ikinci diski monitor ermek için ibare şu şekilde olacaktır.
check device DataDiskSize with path /data if space usage > 90% then alert
Ya da data diskinizin dolması durumunda, sadece alarm üretmek yerine monit'e diskte temizlik yapacak herhangi bir scripti de çalıştırtabilirsiniz.
Örnek olarak web sunucu loglarını boşaltarak diskte yer açılmasını sağlayan /betikler/disktemizlik.sh isimli bir scriptim olduğunu düşünürsek, data diskinin %90'in üzerinde bir doluluk oranına erişmesi durumunda bu scriptin çalıştırılması için yapılandırmayı şu şekilde ayarlayabilirim.
check device DataDiskSize with path /data if space usage > 90% then exec "/betikler/disktemizlik.sh"
Not: Scriptin root kullanicisi tarafindan çalıştırılabilir olması gerekir.
Süreç Kontrolü ve Servis Start/Stop
Monit, sistemdeki süreç ve servisleri kontrol ederek durmaları halinde çeşitli aksiyonlar alabilmektedir. Örnek olarak web sunucunuza ait süreci kontrol edebilir, sürecin durması halinde servisi yeniden başlatabilirsiniz:
Apache`nin Monitor Edilmesi
Mesela apache web sunucusunu takip ederek çeşitli koşullar için çeşitli aksiyonlar alınmasını sağlayabiliriz.
Aşağıdaki yapılandırma satırları, apache servisi durursa yeniden başlatma, belirli bir çocuk sunucu adedinin üzerine çıkılması durumunda apache'nin durdurulması ve load değerinin belirli bir eşiği aşması durumunda apache'nin yeniden başlatılmasını söyleyen bir örnektir.
Not: Yapılandırma, CentOS üzerinde çalışmakta olan bir apache sunucusu için düzenlenmiştir. pid dosyası ya da statup scriptlerinizin yerlerini kendi sisteminize göre düzenleyebilirsiniz.
check process apache2 with pidfile /var/run/httpd.pid group www start program = "/etc/init.d/httpd start" stop program = "/etc/init.d/httpd stop" if children > 100 then stop if loadavg(5min) greater than 10 for 2 cycles then restart if 3 restarts within 5 cycles then timeout
Gördüğünüz gibi, monit'e apache'nin pid dosyasının yerini belirtiyorsunuz. Ayrıca, start/stop komutlarını söylüyorsunuz. Örnekte 100 adet çocuk sunucuya ulaşılması durumunda servisin durdurulması, 2 kez (check inteval x 2) 5 dakikalik periyodda load'in 10'un üzerinde olması durumunda apachenin restart edilmesi söyleniyor.
Son satırda ise 5 interval içerisinde 3 kez servis restartı yapılması durumunda monitoring işleminin durdurulması söyleniyor. Bu şekilde herhangi bir loop'un önüne geçiliyor.
Spesifik servisler için de benzer düzenlemeler de yapabilirsiniz.
Dosya ve Dizin Kontrolleri
Sistemdeki dosya ve dizinleri, varolup olmamalarına, ebat, timestamp ya da permission değişimlerine göre takip ederek aksiyonlar alabiliyorsunuz.
Mevcudiyet Kontrolü
Sisteminizde bir dosyanın olup olmadığını kontrol etmek için şu şekilde bir yapılandırmaya gidilebilir:
check file test.txt path /test.txt if does not exist for 1 cycles then alert
Bu düzenlemeye göre sistemde /test.txt isimli dosya mevcut değilse monit alarm üretecektir.
Ebat Değişim Kontrolü
Sistemdeki herhangi bir dosyayı ebat değişimine karşı aşağıdaki şekilde monitor edebilirsiniz.
check file ebatdegisimi with path /test1.txt if changed size then alert
Bu örnekte /test1.txt isimli dosyanın ebatı değişirse alarm üretilecek.
Aynı özelliği güvenlik amaçlı da kullanılabilir.
Örnek olarak aşağıda su binary'sinin değişmesi durumunda ethernetin kapatılmasını söyleyen extreme bir örnek var :)
check file su with path /bin/su if changed size then exec "/sbin/ifconfig eth0 down"
Bu örneğe göre, sistemde root olmaya izin veren su programcığının ebatının değişmesi durumunda ethernet shutdown ediliyor ve böylece sistemi kurcalıyor olabilecek muhtemel birisinin daha fazla ileri gitmesi engelleniyor.
Timestamp Kontrolü
Bu özellik ise dosyaların erişim zamanlarındaki değişiklikleri takip etmeye yarıyor. Örnek olarak herhangi bir dosyanın erişim zamanı değişmesi durumunda ya da belirli bir zamandan büyük yada küçük bir değere sahip olması durumunda alarm üretilmesini ya da herhangi bir aksiyon alınmasını sağlayabiliyorsunuz.
Aşağıdaki örnekte, belirli bir dosyanın zaman değeri 10 dakikadan küçük ise alarm üretilmesi söyleniyor.
Bu şekilde dosyaya son 10 dakika içinde erişim yapıldığını ya da değiştirilmiş olduğunu takip edebiliyorsunuz.
Aşağıdaki bir diğer (ve eğlenceli) örnekte, apache yapılandırma dosyası olan httpd.conf'un zaman değerinin değişmesi durumunda, apachectl graceful komutunın çalıştırılarak httpd.conf içerisinde yapılan değişikliklerin devreye alınması sağlanıyor.
check file httpd.conf with path /etc/httpd/conf/httpd.conf if changed timestamp then exec "/usr/sbin/apachectl graceful"
Böylece, httpd.conf dosyanızda bir değişiklik yapar da değişiklikleri devreye almayı unutursanız, monit bu işi sizin için otomatik olarak yapıyor.
Permission Takibi
Dosya ya da dizinlerin permission değerlerindeki değişimleri kontrol etmek için aşağıdaki gibi bir düzenleme yapılabilir.
check file izinkontrolu with path "/test4.txt" if failed permission 0644 then alert
Bu örneğe göre test4.txt isimli dosyanın izin değeri 644 değilse alarm üretilmesi söylenmektedir.
Örnekleri çoğaltmak mümkün, ancak temel işleyiş, ihtiyaçlar ve yapılandırma hakkında fikir edinmek için bu kadar örneğin yeterli olduğunu düşünüyorum. Daha fazla bilgi isterseniz aşağıda verilen linklere göz atabilirsiniz.
Kaynak
http://mmonit.com/monit/
http://mmonit.com/monit/documentation/
http://mmonit.com/monit/documentation/monit.html
Bu yazılar da ilginizi çekebilir:
- Nagios – ICMP Erişimi Kapalı Hostlar için Check İşlemi
- CentOS üzerine Rsyslog Kurulumu ve Yapılandırması
- Ossec Merkezi Agent Yapılandırması
- Nagios Kurulumu ve Yapılandırması
- FreeBSD üzerine Rsyslog Kurulumu ve Yapılandırması
Merhaba.
Monitin systemd destegi hakkinda bilginiz var mi? systemd servisleri icin start/stop komutlarini isletemedik. Gordugumuz orneklerde hep init vardi.
Tesekkurler, iyi calismalar.
[Cevapla]