29 Eylül 2014 Pazartesi

Nagios ile Host Monitoring - SMTP Üzerinden Mail Gönderme

    Nagios gelişmiş monitoring özelliklerinin yanı sıra servisler için tanımlamış olduğumuz Warning
veya Critical durumlarında SMS ve mail atabilme özelliğine sahiptir.

Bu yazıda postfix olmadan SMTP üzerinden mail gönderimi anlatılacaktır.
Önceki yazılarda Nagios kurulumu ve konfigürasyon dosyalarının ayarlamaları anlatılmıştı
onların yapıldığı varsayılıp aşağıdaki adımlar anlatılacaktır.

Öncelikle mail gönderimi için kullanacağımız Perl diliyle yazılmış sendEmail'i indiriyoruz.


tar.gz'den çıkardığımız sendEmail'i bin klasörünün altına kopyalıyoruz.


  • cp /root/sendEmail-v1.56/sendEmail /usr/local/bin/

sendEmail adında bir log dosyası oluşturup gerekli yetkilendirmeleri veriyoruz.

  • touch /var/log/sendEmail
  • chmod 666 /var/log/sendEmail

Sırada adım Nagios'un resource.cfg dosyasındaki SMTP konfigürasyonlarını düzenlemek.

  • vim /usr/local/nagios/etc/resource.cfg
#  From olarak gozuken adres 
$USER5$=nagios@yunustech.com
#  SMTP server
$USER7$=owa.smtpAdres.com

satırlarını dosyaya ekleyip kaydediyoruz.
Nagios'un contacts.cfg konfigürasyon dosyasındaki alıcı/admin email adresini düzeltelim.

  • vim /usr/local/nagios/etc/objects/contacts.cfg

Şimdiyse Nagios'a command olarak sendEmail'i kullanarak Warning ve Critical durumlarında mail
atma olayını ekleyeceğiz.

  • vim /usr/local/nagios/etc/objects/commands.cfg

dosyasındaki notify-host-by-email ve notify-service-by-email olarak tanımlanmış command'ları
aşağıdaki gibi değiştirmemiz gerekmektedir.


# 'notify-host-by-email' command definition
define command{
    command_name notify-host-by-email
    command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type:
    $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress:                           $HOSTADDRESS$\nInfo:
    $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/local/bin/sendEmail -s $USER7$ -t
    $CONTACTEMAIL$ -f $USER5$ -l /var/log/sendEmail -u "** $NOTIFICATIONTYPE$ Host Alert:
    $HOSTNAME$ is $HOSTSTATE$ **" -m "***** Nagios *****\n\nNotification Type:
    $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress:                           $HOSTADDRESS$\nInfo:
    $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n"
}
# 'notify-service-by-email' command definition
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$" | /usr/local/bin/sendEmail -s $USER7$ -t $CONTACTEMAIL$ -f
    $USER5$ -l /var/log/sendEmail -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/
    $SERVICEDESC$ is $SERVICESTATE$ **" -m "***** Nagios *****\n\nNotification Type:
    $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress:
    $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional
    Info:\n\n$SERVICEOUTPUT$"
}

Gönderilen mailler için alıcılar ve alıcı grupları contacts.cfg dosyasında düzenleniyor. Nagios'taki durum mailleri default olarak admin alıcısına kayıtlıdır. Buradaki adresi;
  • vim /usr/local/nagios/etc/objects/commands.cfg
Dosyasında define contact kısmındaki email'den düzenleyebilirsiniz. Alıcı adresini email kısmının olduğu yere yazmanız gerekiyor.

Yapacağımız konfigürasyonlar bu kadar şimdi hata var mı diye kontrol edelim.
  • /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Gibi bir sonuç aldıysanız SMTP üzerinden mail gönderme işlemi sorunsuz hallolmuş demektir. Nagios servisini yeniden başlatıp işlemleri sonlandırabilirsiniz.
  • service nagios restart

Hiç yorum yok:

Yorum Gönder