Cấu hình Nagios để gửi thông báo qua email với SendEmail


Bài này sẽ thực hiện cấu hình Nagios để gửi email thông báo về tình trạng, hoạt động của các thành phần, dịch vụ được giám sát trong hệ thống mạng. Việc gửi email tới SMTP outgoing server này sẽ yêu cầu thiết lập tài khoản email tại máy Nagios để xác thực. Ở đây, mình sử dụng một Perl script là SendEmail. Các bước làm ở máy Nagios (cài trên CentOS 6.2 minimal) như sau:

0. Cài thêm các gói phụ thuộc để hỗ trợ mã hóa và xác thực bằng SSL/TLS cho các email được gửi đi

# yum install perl
# yum install perl-IO-Socket-SSL

1.   Tải về SendMail tại:
http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

2.   Giải nén gói trên và chép tập tin SendMail tới thư mục /usr/local/bin

3.   Cấp thêm quyền excute và đổi owner thành user nagios cho tập tin trên

# chmod +x /usr/local/bin/SendMail
# chown nagios.nagios /usr/local/bin/SendEmail

4.   Mở tập tin cấu hình /usr/local/nagios/etc/resource.cfg rồi thêm vào 3 dòng mới sau:

$USER5$=your_email_address                   //email của người gửi
$USER6$=your_email_password               //password của email trên
$USER7$=your_SMTP_mail_server          //IP hoặc domain của SMTP server

5.  Mở tập tin cấu hình /usr/local/nagios/etc/objects/commands.cfg rồi sửa lại phần dành cho email notification như mẫu sau:

define command{
command_name notify-host-by-email
command_line /usr/local/bin/sendEmail -o tls=yes -s $USER7$ -xu $USER5$ -xp $USER6$ -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”
}

define command{
command_name notify-service-by-email
command_line /usr/local/bin/sendEmail -o tls=yes -s $USER7$ -xu $USER5$ -xp $USER6$ -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$”
}

6.   Tạo log file cho SendMail và thay đổi owner cho nó

# touch  /var/log/SendEmail
# chown nagios.nagios /var/log/SendEmail

7.   Khởi động lại service nagios

# service nagios restart

8.    Kiểm tra bằng cách thử tắt một host nào đó rồi mở file log của SendMail để thấy nội dung như “Email was sent successfully”. Mọi thứ khi này đã OK.

–manthang

9 comments

  1. mình làm theo nhưng không được bạn ơi , bạn cho mình xin yahoo để hỏi thêm được không ? như mình khai báo lệnh notify-host-by-mail rồi gọi lệnh đó ra ở đâu ???

  2. hi a e đang làm về nội dung này a có tài liệu nào liên quan có thể share cho em biết thêm dc không ak

  3. em làm như hướng dẫn vào file log sendMail mà không có gì hết dù đã tắt mở các host.
    Mong anh giải đáp…
    Cảm ơn anh nhiều

  4. Bạn cho mình hỏi là làm cách nào để khi nó thay đổi trạng thái mới gửi mail, chứ mình làm nó cứ 30p là spam mail liên tục
    Tks!

  5. cho mình hỏi ở bước thứ 4: mình ghi email là tài khoản gmail của mình và SMTP server là smtp.gmail.com
    mà nó không gửi mail cảnh báo về cho mình ai biết chỉ với.
    Thanks

  6. mình làm theo y chan mà ko được, địa chỉ mail mình sử dụng là mail nội bộ chung đường mạng với con nagios luôn
    ai biết làm chỉ em với

Leave a reply to sdasdsdasd Cancel reply