ทดสอบกับ 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 แสดงออกมา