ติดตั้ง nagios บน ubuntu

ทดสอบกับ ubuntu 10.04  และ nagios 3.x
ต้นฉบับ nagios จาก http://www.nagios.org
คำแนะนำเกี่ยวกับการพัฒนา plugin อยู่ที่ http://nagios.sourceforge.net/docs/3_0/pluginapi.html

ติดตั้งด้วยคำสั่ง sudo apt-get install nagios3
ระหว่างติดตั้งที่หน้าต่างถาม Nagios web administration password:  ไม่ต้องป้อนอะไร ให้เคาะแป้น Enter
ได้หน้าต่างใหม่ถาม Password confirmation: ไม่ต้องป้อนอะไร ให้กดแป้น Enter
ระบบจะติดตั้งต่อจนเสร็จ

ตั้งค่ารหัสผ่านของ Nagios web cgi ให้เป็น 123456 ด้วยคำสั่ง
sudo htpasswd -c /etc/nagios3/htpasswd.users nagiosadmin
ได้ข้อความว่า New password:  ให้ป้อนว่า 123456 แล้วกดแป้น Enter
ได้ข้อความว่า Re-type new password: ให้ป้อนว่า 123456 เหมือนเดม แล้วกดแป้น Enter
ได้ข้อความตอบกลับมาว่า Adding password for user nagiosadmin  เป็นอันเสร็จ

ทดสอบดูผลงานได้ที่เวบ http://localhost/nagios3
ได้หน้าต่าง Authentication Required
ที่ช่อง User Name: ให้ป้อนว่า nagiosadmin
ที่ช่อง Password: ให้ป้อนว่า 123456
แล้วคลิกปุ่ม OK  ก็จะเข้าหน้าเวบของ Nagios ได้

ตัวอย่างการสร้าง user ชื่อ guest รหัส 123456 ที่อนุญาติให้ read ได้อย่างเดียว ใช้คำสั่ง
sudo htpasswd -c /etc/nagios3/htpasswd.users guest
ได้ข้อความว่า New password:  ให้ป้อนว่า 123456 แล้วกดแป้น Enter
ได้ข้อความว่า Re-type new password: ให้ป้อนว่า 123456 เหมือนเดม แล้วกดแป้น Enter
ได้ข้อความตอบกลับมาว่า Adding password for user guese

แก้ไขแฟ้ม /etc/nagios3/cgi.cfg  ปรับปรุงบรรทัดตัวแปรให้เป็นดังนี้
authorized_for_all_services=nagiosadmin,guest
authorized_for_all_hosts=nagiosadmin,guest

ตัวอย่างการสร้าง plugin เพื่อตรวจสอบ ntp server ด้วย shell script
สร้างแฟ้มชื่อ /usr/lib/nagios/plugins/check_ntpdate มีข้อความประมาณว่า
#! /bin/bash
STATE_OK=0
STATE_CRITICAL=2
NTPDATE="sudo /usr/sbin/ntpdate"
MYOUT=$(${NTPDATE} $1 2>/dev/null)
VALID=$(echo ${MYOUT}|grep "offset")
if [ -n "${VALID}" ] ; then
  STATUS=${STATE_OK}
  echo ${MYOUT}
else
  STATUS=${STATE_CRITICAL}
fi
exit ${STATUS}

ตั้งแฟ้มให้เป็นแบบ execute ได้ด้วยคำสั่ง
sudo chmod +x /usr/lib/nagios/plugins/check_ntpdate

เพิ่มสิทธิ์ของ nagios ให้สามารถใช้คำสั่ง ntpdate ด้วยสิทธิ์เท่า root
โดยแก้ไขแฟ้ม /etc/sudoers  เพิ่มต่อท้ายด้วยบรรทัดข้อความว่า
nagios ALL=NOPASSWD: /usr/sbin/ntpdate

ทดสอบการทำงานของ script ด้วยคำสั่งประมาณว่า
sudo -u nagios /usr/lib/nagios/plugins/check_ntpdate pool.ntp.org ; echo $?
หาก ntpserver พร้อมทำงาน ก็จะได้ข้อความตัวอย่างตอบกลับมาประมาณว่า
... ntpdate[...]: adjust time server 158.108.212.149 offset -0.006495 sec
0
หาก ntpserver ไม่พร้อมทำงาน ก็จะได้ข้อความตัวอย่างตอบกลับมาว่า
2

ตัวอย่างการเพิ่มวิธีการตรวจสอบ NTP server ด้วยแฟ้ม shell script  /usr/lib/nagios/plugins/check_ntpdate ที่พัฒนาเอง
สมมติ NTP server ชื่อ pool.ntp.org เข้าไปในระบบ nagios ทำดังนี้

สร้างแฟ้ม /etc/nagios3/conf.d/ntp-server.cfg มีข้อมูลประมาณว่า
define host {
        host_name   NTP-server
        address     pool.ntp.org
        use         generic-host
        }

แก้ไขแฟ้ม /etc/nagios3/conf.d/hostgroups_nagios2.cfg เพิ่มข้อมูลต่อท้ายประมาณว่า
define hostgroup {
        hostgroup_name  ntp-servers
        members         NTP-server
        }

แก้ไขแฟ้ม /etc/nagios3/conf.d/services_nagios2.cfg เพิ่มข้อมูลต่อท้ายประมาณว่า
define service {
        hostgroup_name                  ntp-servers
        service_description             NTP
        check_command                   check_ntpdate
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

แก้ไขแฟ้ม /etc/nagios-plugins/config/ntp.cfg  เพิ่มข้อมูลต่อท้ายประมาณว่า
define command{
        command_name    check_ntpdate
        command_line    /usr/lib/nagios/plugins/check_ntpdate $HOSTADDRESS$
}

เสร็จแล้วทำการ reload nagios ด้วยคำสั่ง
sudo /etc/init.d/nagios3 reload

ทำแค่นี้ ทดสอบผลงานได้เลย
หากถูกต้อง จะต้องมี Host ชื่อ NTP-server และ Servie ชื่อ NTP แสดงออกมา