|
โดย จิรชัย ทองเทพ
เขียนวันที่ 12/7/2551

บทนำ
Nagios คือ เครื่องมือที่ใช้ในการตรวจจับสถานะการทำงานของ Host, Service หรือ Network Device ทำงานบนระบบปฏิบัติการ Unix และเป็น Open Source โดยสิ่งที่ตรวจจับนั้นต้องสามารถติดต่อผ่าน TCP/IP ได้ ซึ่งจะคอยเฝ้าระวังระบบเมื่อเกิดปัญหาโดยจะแจ้งเตือนปัญหาที่เกิดขึ้น ปัจจุบัน Version ที่ได้ใช้ในบทความนี้คือ Nagios 3.0.3 (Stable)
ความสามารถของระบบ
- สามารถตรวจสอบการทำงานของ Service ต่างๆได้ เช่น SMTP, POP3, HTTP, NNTP, PING และอื่นๆ
- สามารถตรวจสอบการใช้ทรัพยากรของ Host ได้ เช่น ตรวจจับสถานะการทำงานของ CPU , Disk , Memory usage และอื่นๆ
- สามารถออกแบบ Plugin เพื่อนำมาใช้ในการตรวจจับข้อมูลของ Service ที่ต้องการใช้ได้
- สามารถแสดงฝังของ Server หรือ ระบบเครือข่ายได้ เพื่อสามารถวิเคราะห์สิ่งที่เกิดขึ้นกับระบบได้โดยจะมีการตรวจสอบเป็นแบบ Parent
- สามารถกำหนดเหตุการณ์ควมคุมเมื่อเกิดปัญหาได้
- มีการเก็บข้อมูลเพื่อนำไปวิเคราะห์ได้
- สามารถ Integrate ใช้งานกับ โปรแกรมอื่นๆได้เช่น Snort, Syslog-NG หรืออื่นๆ
FCAPS กับ Nagios
Nagios ได้ใช้หลักการ FCAPS ในการบริหารจัดการโดยมีคุณสมบัติดังนี้
Fault
- สามารถตรวจสอบสถานะของระบบคอมพิวเตอร์และเครือข่ายได้
- สามารถตรวจสอบปัญหาและแจ้งปัญหาไปยังผู้ดูแลระบบได้
- สามารถบันทึกปัญหาและวิธีการแก้ไขได้
Configuration
- สามารถกำหนดค่า Config ต่างๆให้สามารถตรวจจับการทำงานของระบบ Server หรือระบบ Network รวมไปถึงควมคุมอุปกรณ์ต่างๆได้ที่มีพื้นฐานการทำงานบน Protocol TCP/IP ได้
- สามารถแสดงลักษณะการเชื่อมต่อและความสัมพันธ์ต่างๆของระบบ
- สามารถทราบข้อมูลต่างๆของอุปกรณ์ได้
Accounting
- สามารถตรวจสอบกิจกรรมต่างๆได้ว่าใครใช้บริการอะไร มากน้อยแค่ไหนเพื่อนำมาวิเคราห์กำหนดแผนการต่างได้
Performance
- ตรวจสอบความสามารถในการทำงานของระบบได้ เพื่อให้ระบบสามารถใช้ได้อย่างมีประสิทธิภาพ ทราบถึง Throughput, Utilization , Error และ respond Time
- ตรวจสอบกิจกรรมต่างๆที่เกิดขึ้นภายในระบบได้โดยมีระบบเตือนผู้ดูแลหากมีการใช้งานเกินกว่ามาตรฐานได้
Security
- มีการเข้ารหัสข้อมูลในการ Monitoring
- มีการกำหนดสิทธิในการใช้งาน
ขั้นตอนการตรวจสอบ Topology ของ Nagios
Nagios มีวิธีการ ตรวจสอบความสัมพันธ์ของระบบแบบ Dependency โดยจะให้ความสำคัญกับService ก่อน หาก Service ไม่สามารถติต่อได้ก็จะไปตรวจสอบที่ Host และ Parent ตามลำดับ

ซึ่งวิธีการทำงานสามารถแสดงตัวอย่างการตรวจสอบได้ดังนี้

สมมติว่าหาก Switch 2 มีปัญหา Nagios ก็เริ่มทำการตรวจสอบ Service ที่อยู่ใน Parent นั้นก่อน คือ DNS และแจ้งว่า DNS ไม่สามารถติดต่อได้ (UNREACHABLE) จากนั้นก็จะตรวจสอบ Host ของ Service DNS นั้นว่าสามารถเข้าถึงหรือไม่ ซึ่งก็ไม่สามารถติดต่อได้เช่นกัน Nagios ก็จะตรวจสอบ Parent ของ Host นั้นก็คือ Switch2 และก็ไม่สามารถติดต่อได้เช่นกัน จึงไปตรวจสอบ Parent ของ Switch2 นั่นคือ Switch1 ซึ่งสามารถติดต่อได้ ทำให้ปัญหาที่ทำให้ Service DNS ไม่สามารถใช้งานได้คือ Switch2 โดยจะแจ้งสถานะว่า Switch1 = UP , Switch2 = Down และ Proxy = UNREACHABLE เป็นต้น
สถานะที่ใช้ในการแจ้งเตือนของHost และ Service จะไม่เหมือนกันโดยแสดงดังนี้
สำหรับสถานะของ Service จะแบ่งเป็น OK, WARNING,CRITICAL, UNKNOWN
สำหรับสถานะของ Host นั้นจะเป็น UP, DOWN , UNREACHABLE
ขั้นตอนการตรวจสอบระบบ
ในการทำงานของ Nagios Server เพื่อตรวจสอบ Service ต่างๆในระบบนั้นจำเป็นต้องใช้ External Program ด้วยหรือเรียกว่า Plugin เนื่องจากในระบบต่างๆมีโครงสร้างการทำงานไม่เหมือนกันทำให้บางครั้งไม่สามารถตรวจสอบระบบได้ จึงทำให้ Nagios แบ่งรูปแบบ Plugin หรือ Agent ที่ใช้ในการติดต่อกับ Nagios Server ไว้หลายวิธีดังนี้

- Monitor ผ่าน Plugin ของ Nagios เอง หรือ Plugin อื่นๆที่เขียนขึ้นมาโดยเฉพาะ
- Monitor ผ่าน Plugin SSH เป็น Plugin เพื่อใช้สำหรับ Run คำสั่งต่างๆผ่าน Secure Shell โดยตรง
- Monitor ผ่าน Plugin NRPEเป็น Plugin เพื่อใช้สำหรับ Run คำสั่งต่างๆผ่าน nrpe โดย nrpe จะเปรียบเสมือนท่อในการส่งข้อมูลมีการเข้ารหัสด้วย SSL/TSL ผ่าน TCP Port 5556
- Monitor ผ่าน Plugin SNMP เป็น Plugin ใช้สำหรับ Server หรืออุปกรณ์ Network ต่างๆ
- Monitor ผ่าน Plugin NCSA ซึ่งเป็น Plugin ไว้สำหรับทำ Distributed Nagios คือทำให้สามารถกระจายการ Load ของ Nagios Server ได้
ขั้นตอนการติดตั้ง
ก่อนการติดตั้ง Nagios นั้นจำเป็นต้องมีการติดตั้ง Package ดังต่อไปนี้ก่อน
- Apache
- GCC Compiler
- GD development libraries
- Perl Net SNMP
หากยังไม่มีการติดตั้ง สามารถติดตั้งผ่านทาง Yum ดังนี้
[root@fc8 ~]# yum install httpd gcc glibc glibc-common gd gd-devel perl-Net-SNMP
สร้าง User และ Group สำหรับ Nagios
[root@fc8 ~]# groupadd nagios
[root@fc8 ~]# useradd -g nagios -m nagios
สร้าง Command Group สำหรับ Nagios เพื่อให้สามารถมี Authorize ในการสั่งงานผ่าน Web ได้
[root@fc8 ~]# groupadd ncmd
[root@fc8 ~]# usermod -G ncmd nagios
[root@fc8 ~]# usermod -G ncmd apache
Download Nagios จาก www.nagios.org หรือผ่านทาง wget
[root@fc8 ~]# wget http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.3.tar.gz
ทำการแตก File และเข้าไปใน Directory เพื่อติดตั้ง
[root@fc8 ~]# tar zxvf nagios-3.0.3.tar.gz
[root@fc8 ~]# cd nagios-3.0.3
ทำการ Compile Config
[root@fc8 ~]# ./configure --prefix=/usr/local/nagios --with-htmlurl=/nagios/➥
--with-cgiurl=/nagios/cgi-bin --with-nagios-user=nagios --with-nagios-group=nagios➥
--with-command-group=ncmd
ทำการ Compile โปรแกรม Nagios Server และติดตั้งลงในระบบ
[root@fc8 nagios-3.0.3]# make all
[root@fc8 nagios-3.0.3]# make install
[root@fc8 nagios-3.0.3]# make install-init
[root@fc8 nagios-3.0.3]# make install-commandmode
[root@fc8 nagios-3.0.3]# make install-config
[root@fc8 nagios-3.0.3]# make web-config
สร้างUser เพื่อใช้เพื่อใช้ในการ Login เข้า Web Interface
[root@fc8 nagios-3.0.3]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
หลังจากที่ทำการติดตั้ง Nagios Server แล้วให้ติดตั้ง Nagios Plugin ซึ่งเป็นโปรแกรมที่ใช้ร่วม Nagios Server ประกอบไปด้วยข้อมูลที่ออกแบบไว้เพื่อ Monitor ระบบต่างๆ
[root@fc8 ~]# wget http://jaist.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.12.tar.gz
[root@fc8 ~]# tar -zxf nagios-plugins-1.4.12.tar.gz
ทำการ Compile Config ต่างๆ
[root@fc8 nagios-plugins-1.4.12]# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios ➥
--with-nagios-group=nagios --with-cgiurl=/nagios/cgi-bin --enable-perl-modules
หลังจากที่ Compile เสร็จแล้วให้ทำการ make และ make install เพื่อติดตั้งลงในระบบ [root@fc8 nagios-plugins-1.4.12]# make
[root@fc8 nagios-plugins-1.4.12]# make install
ทำการ Start Service ของ Nagios Server
[root@fc8 nagios-3.0.3]# service nagios start
ท่านสามารถทดสอบการใช้งาน Nagios โดยเข้า Web ไปที่ http://localhost/nagios
โครงสร้างของ Nagios
โครงสร้าง Directory ของ Nagios Server ประกอบไปด้วย 7 Directories ดังนี้

/usr/local/nagios/
|-- bin ประกอบด้วย File โปรแกรม Nagios
|-- etc ประกอบด้วย File Config ของระบบ Server หรือ ระบบเครือข่าย
|-- libexec ประกอบด้วย File คำสั่งที่ใช้ในการตรวจจับต่างๆซึ่งนำไปใช้ใน File Config

|-- perl ประกอบด้วยข้อมูลของ Nagios ที่เขียนเป็น Moduleใช้สำหรับภาษา Perl
|-- sbin ประกอบด้วย File CGI ที่ใช้เรียกข้อมูลแสดงบน Web
|-- share ประกอบด้วยข้อมูลที่ใช้เข้า Web ของ Nagios
`-- var ประกอบด้วยข้อมูลล็อคของ Nagios Server
เนื่องจาก File Config ตั้งอยู่ที่ /usr/loca/nagios/etc และรายละเอียดการ Config ค่อนข้างเยอะท่านสามารถอ่านเพิ่มเติมได้ที่ http://www.nagios.org
โดยแผนผังความสัมพันธ์ของ File Config มีดังนี้
ตัวอย่างการทำงานผ่าน Web Interface
หน้าหลัก

Tactical Overview
Service Detail

Host Detail
Status Map
Service Problems
Scheduling Queue
Availability
Alert Histogram
Alert History
Notification
Event Log
เอกสารอ้างอิง
- http://www.nagios.org/docs/
- Nagios 3 Enterprise Network Monitoring: Including Plug-Ins and Hardware Devices
- Nagios: System and Network Monitoring
- Pro Nagios 2.0 (Expert's Voice in Open Source)
|