SIP Serverların Nagios ile Monitör Edilmesi

Filed in Genel | Gezegen | Linux | Network Leave a comment

Uzun bir aradan sonra herkese selamlar,

Bu makalede sizlere networkunuzde kurulu durumda bulunan sip servislerini monitör etme ve oluşabilecek durumlara göre gerektiğinde mail veya sms ile bilgilendirme işleminin nagios ile nasıl kolaylıkla yapılabildiğini anlatacağım. Anlatım genel olarak 4 aşamadan oluşacaktır. Aşamaları sıralamak gerekirse;

  1. Nagios3 kurulumu

  2. Nconf ile nagios konfigurasyonunun kolaylıkla yapılabilmesi için nconf kurulumu

  3. check_sip plugin inin aktif hale getirilmesi

  4. mail ile bilgilendirmenin aktif hale getirilmesi

Bir sunucunun veya servisin ayakta olup olmadığının öğrenilmesi için çeşitli yöntemler vardır. Ping atıp cevabını beklemek bunlardan en bilinen ve basit olan yoldur. Fakat monitör edilen sunucuda çalışan servis olduğu sürece sadece bu yöntem yeterli değildir. Bu yöntemin de bir adım ilerisine geçip servisin ayakta olup olmadığını servisin çalıştığı porta UDP veya TCP istekler göndererek te monitör işlemini gerçekleştirebiliriz. Fakat servisin açık ama isteklere cevap vermediği durumlarda da bu yöntem geçerliliğini yitirmektedir. Bu yönteminde bir adım ilerisine gidip servis ile servisin anlayacağı dilden konuşmak en mantıklı yoldur. Bu nedenle SIP servisinin ayakta olup olmadığını kontrol etmek için SIP dilini kullanacağız. Benim gibi VoIP, SIP ve NGN işleri ile ilgilenenlerin de bildiği gibi SIP uygulamalarının ayakta olup olmadığını genellikle OPTIONS mesajı ile kontrol ederiz. Kontrol edilecek servise OPTIONS mesajı gönderilip karşılığında 200 OK veya arzu edilen başka bir yanıt beklenir. Yanıt geldiği sürece servisin ayakta olduğunu bilirsiniz. Fakat yanıt gelmediği zamanda da servisinizin çalışmadığı sonucuna vararak bir an önce servisi çalışır hale getirmelisiniz. Bu uygulamaların insanların telefon görüşmesi yapmasını sağladığı gerçeğini de işin içine katarsanız servislerin her zaman ayakta ve çalışır durumda olması çok büyük önem taşımaktadır. Daha fazla edebiyat yapmadan OPTIONS mesajlaşması ile daha ayrıntılı bilgi isteyenlere http://tools.ietf.org/html/rfc3261#section-11.1 linkini incelemelerini tavsiye ederek kurulumumuza başlıyorum.

1. Nagios kurulumu

Öncelikle kurulumu hiçbir zaman vazgeçemediğim linux dağıtımı olan debian üzerine yaptığımı bildirmek isterim. Diğer linux dağıtımları için de benzer şekilde kurulum yapılabilir fakat birebir aynı şekilde olmayacağını zaten sizler benden daha iyi bilirsiniz. Neyse debian 6.0.3 ü kurduk ardından nagios3 ü kuracağız. Debian kurulumda bir mükemmel bir kolaylık sağlıyor. kurulumu sadece bir komut ile yapabiliyorsunuz. Bu tek komut sonrasında genel olarak nagios3 bileşenleri, bağımlı kütüphane bileşenleri, nagios pluginleri, apache2 web serverı, php ve mysql veritabanı makinenize yükleniyor. Kurulum bu safhada bende gösterdiği kadarıyla yaklaşık 450 MB lık paket indirip kuracağından bu kısım biraz uzun sürebilir.

Kurulum için çalıştırılacak komut;

apt-get install nagios*

Kurulum sırasında altta karşılaşılan ekrana nagios arayüzünün atamak istediğiniz parolayı girmelisiniz. Kullanıcı adınız “nagiosadmin”

Parolayı tekrar girmelisiniz.

Bu seçeneği “No” deyip geçebilirsiniz.

İşte bu kadaaar. Nagios kurulumu tamamlandı. Şimdi browserınızı açıp http://nagios_server_ip/nagios3 yazdığınızda karşınıza aşağıdaki kullanıcı ekranı gelecektir.

Kullanıcı adı = nagiosadmin

Parola = *****

kullanıcı bilgilerini girdikten sonra Nagios karşınızda….

2. Nconf ile nagios konfigurasyonunun kolaylıkla yapılabilmesi için nconf kurulumu

Daha önceden de nagios kurulumu yapıp yaklaşık 30 adet serverda belirli servisleri kontrol etmiştim. nagios un konfigürasyonları text tabanlı birçok dosya üzerinden yapılmaktadır. Bunların ayrıntılarına girmek istemiyorum açıkçası çünkü konumuz tam olarak bu değil. Fakat ilerleyen kısımlarda bazılarına değineceğiz. Bu konfigürasyon dosyalarına değinmek istemememin bir nedeni de kafanızı fazla karıştırmamaktır. Bende kendi kafamın fazla karışmasını istemediğim için web te bir araştırma yaptım. aradığım şey şuydu “Nagios konfigürasyonunu nasıl daha kolay ve görsel bir şekilde yapabilirim?” . Bu sorumun cevabını nconf uygulamasını bulunca fazlasıyla almış oldum. Bu uygulamayı kurup konfigürasyon yapmaya başladığınızda hakikaten ben neden yıllardır bu kadar nagios konfigürasyonlarıyla amelece uğraşmışım diyeceksiniz. Uygulama ile ayrıntılı bilgilere verdiğim linkten ve aşağıdaki bilgiden ulaşabilirsiniz.

“NConf is a PHP based web-tool for configuring the Nagios monitoring software. It differs from similar tools by offering enterprise-class features like templates, dependencies and the ability to configure a large-scale, distributed Nagios server topology”

Hemen kuruluma geçelim,

kuruluma başlamadan önce gerekli olanlar aşağıda listelenmiştir. Biz öncesinde nagios3 kurulumu yaptığımızdan bunların hepsini farkında olmadan yapmış olduk zaten :)

NConf system requirements:

  • Apache webserver
  • PHP 5 or higher, php-mysql, php-ldap (only if using LDAP auth)
  • MySQL 5.0.2 or higher (with InnoDB!)
  • Perl 5.6 or higher, perl-DBI, perl-DBD-MySQL
  • Nagios 3.x or Icinga 0.8x (binary necessary for testing generated config)

php.ini settings:

  • short_open_tag = On
  • register_globals = Off
  • magic_quotes_gpc = Off
#wget https://nodeload.github.com/Tontonitch/nconf-1.2.6-1/tarball/master
#tar xfvz master
#mv Tontonitch-nconf-1.2.6-1-c4c59e5 nconf
  • nconf klasörü içerisinde bulunan aşağıdaki klasörlere web kullanıcısının yazma yetkisine sahip olup olmadığını kontrol edelim.
./config
./output
./static_cfg
./temp
  • nconf database kullandığından phpmyadmin kullanarak kolaylıkla nconf için bir adet database ve kullanıcı oluşturmalısınız. oluşturacağınız kullanıcı nconf database için SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP haklarına sahip olmalıdır.
  • browserınıza http://nagios_server_ip/nconf/INSTALL.php yazarak nconf kurulum arayüzüne girelim.
  • ilk karşılaştığımız ekranda öncelikli yüklenmesi gereken uygulamaların hepsininin OK durumunda olması gereklidir. OK ise diğer adım için Next diyelim.

  • nconf için oluşturduğumuz database in bilgilerini bu ekranda doğru şekilde girip Next diyelim. bilgiler doğru ise db de tablolar oluşturulup sonraki aşamaya geçilir. Hata durumlarında Failed uyarısı alınıp hata kontrol edilmelidir.

  • NAGIOS_BIN dışındaki diğer parametreler default şekilde bırakılır. NAGIOS_BIN değeri için nagios binary sinin yüklü olduğu path yazılır. doğru pathı yazabilmek için “whereis nagios3″ komutunu kullanabilirsiniz. doğru pathı yazdıktan sonra Next diyelim.
  • bu kısmı geçebiliriz. isterseniz doldurabilirsiniz.

  • Tüm ayarları doğru girdiğimiz sürece kurulum aşağıdaki şekilde tamamlanmaktadır. Finish deyip kurulumu bitirelim. Sonrasında browserdan nconf arayüzüne düzgün girebilmemiz için nconf klasörü içerisindeki INSTALL, INSTALL.php, UPDATE, UPDATE.php dosya ve klasörlerini silmeliyiz.

  • benim gibi görselliğe önem verenlerdenseniz nagios ta işletim sistemlerini resimli olarak görmek istiyorsanız buradan resimleri indirerek nconf klasörü içerisindeki /img/logos/base/ altına kopyalayın.

Kurulumu tamamladık. Fakat nconf ile nagiosu haberleştirmedik. Bunun için ek olarak birkaç adım daha ilerlememiz gerekiyor. 

Artık Nconf un arayüzüne browser ınıza http://nagios_server_ip/nconf/ yazarak erişebilirsiniz.

Nconf arayüzüne girdiğinizde ve servisler için gerekli düzenlemeler yaptığınızda ayarlar yapıldıktan sonra sol taraftaki menüde bulunan “Generate Nagios Config” kısmına tıkladığınızda yaptığınız ayarlarla birlikte yeni nagios konfigürasyon dosyaları oluşturulup nconf klasörü altındaki /output klasörü altına NagiosConfig.tgz şeklinde kopyalanır.

Bu dosyayı /etc/nagios3 altında kopyalayıp tar xfvz NagiosConfig.tgz komutu ile açarsanız içerisinde aşağıdaki dosyaların olduğunu göreceksiniz. Daha önce nagios ile uğraşmış olanlara bu dosyalar tanıdık gelecektir.

dosyayı açtığınızda içeriği aşağıdaki şekildedir;

Folder 'Default_collector':
  extended_host_info.cfg
  extended_service_info.cfg
  hostgroups.cfg
  hosts.cfg
  servicegroups.cfg
  services.cfg
Folder 'global':
  checkcommands.cfg
  contactgroups.cfg
  contacts.cfg
  host_templates.cfg
  misccommands.cfg
  service_templates.cfg
  timeperiods.cfg

Bu işlemi de yaptıktan sonra nagios.cfg dosyası içerisinde bulunan tüm cfg_dir ve cfg_file tanımlarının başına # ekleyip comment out ederek aşağıdaki parametreleri ekleyelim. Böylelikle nagios sadece nconf un oluşturduğu konfigürasyon dosyalarını okuyacaktır.

cfg_dir=/etc/nagios3/global
cfg_dir=/etc/nagios3/Default_collector

Sonrasında nagios u restart ettikten sonra Service Detail bölümünde aşağıdaki şekilde görmeniz gerekmektedir.

Tebrikler nconf kurulum aşamasını da tamamlamış olduk.

Fakat nconf ta her değişiklik yapıldıktan sonra .tgz uzantılı dosyayı /etc/nagios3 altına kopyalayıp açmak sıkıntılı olabilir. Eğer nagios ile nconfu aynı makineye kurarak nconf ta yapacağınız işlemlerin kısa zamanda nagiosta kendiliğinden aktif olmasını istiyorsanız bu işlemi nconf ta hazırlanmış bir scripti kendimize göre düzenleyerek cron job olarak her dakika çalıştırmamız yeterli olacaktır.

/var/www/nconf/ADD-ONS/deploy_local.sh

yukarıdaki path ta bulunan scripti açarak aşağıdaki değişkenleri gösterilen şekliyle düzenleyelim;

OUTPUT_DIR="/var/www/nconf/output/"
NAGIOS_DIR="/etc/nagios3"

NOT: aynı scriptte nagios3 ü kuranlar için /etc/init.d/nagios3 reload kısmınında düzeltilmesi gerekir.

/etc/crontab dosyasının ilgili kısmına aşağıdaki ifadeyi ekleyerek scriptin her dakika çalışmasını sağlayalım.

*  *    * * *   root    bash /var/www/nconf/ADD-ONS/deploy_local.sh

3. check_sip plugin inin aktif hale getirilmesi

  • Buradan OPTIONS mesajı ile serverları kontrol edecek nagios pluginini indirip check_sip dosyasını /usr/lib/nagios/plugins/ altına kopyalayalım.
  • check_sip dosyasının içerisindeki ifadeyi aşağıdaki şekilde değiştirelim;

eski ifade;

use lib "/usr/lib64/nagios/plugins";

yeni ifade;

use lib "/usr/lib/nagios/plugins";
  • nconf arayüzüne gelerek aşağıda belirtilen kısımdan check_sip komutunun kullanılış şeklini tanımlıyoruz.

doldurulması gerekli alanlara yazılması gerekenler;

check command name = check_sip
check command line  = /usr/bin/perl /usr/lib/nagios/plugins/check_sip -u $ARG1$ -w 5

Submit deyip  komutu ekleyelim.

  • Bu aşamada monitör etmek istediğimiz host ları tanımlamamız gerekmektedir. Host ları tanımamak için aşağıdaki şekilde işlem yaparak gerekli alanları doldurup Submit deyiniz.