NetHAM กับข้อมูลที่ไม่สามารถเข้าถึงได้โดยวิธีปกติ (Remote Linux Host)

ที่ผ่านมานะครับ หากสังเกตุดูก็เป็นที่น่าสงสัยอยู่ไม่น้อย เพราะ บาง service หรือข้อมูลบางอย่างมันไม่สามารถไปตรวจสอบเอามาได้ ครั้งนี้ผมจะมาไขปัญหาและแนะวิธีที่จะเข้าไปเอาข้อมูลจาก Host มาแนะนำให้ครับ

โดยทั่วไปนั้นการตรวจสอบสถานะของ service หากเป็นสถานะที่สามารถเข้าถึงได้จากภายนอก เช่น เวลาที่ใช้ในการโหลดหน้าเพจ , ระยะเวลาที่ใช้สำหรับการส่ง packet ไปกลับ 1 รอบ (round trip time) NetHAM จะสามารถตรวจสอบโดยการ probe เองโดยตรงได้ เช่น การใช้ command check_ping แต่ก็มีข้อมูลจำเพาะของ server บางอย่างที่ไม่สามารถเข้าถึงได้จากภายนอก เช่น cpu load , memory , disk space , จำนวนผู้ใช้ที่ login ในขณะนั้น ฯลฯ
หากต้องการทราบข้อมูลเหล่านี้ เราจำเป็นต้องติดตั้ง daemon ไว้บน server เพื่อทำการส่งข้อมูลเหล่านี้กลับไปยัง NetHAM ตัว daemon ที่กล่าวมานี้คือ NRPE ครับ หรือ Nagios Remote Plug-Ins Executor เป็นเครื่องมือช่วย execute plugin เพื่อหาค่าที่ต้องการ (เช่น cpu load) และส่งกลับไปยังผู้ร้องขอ ซึ่งอาจจะเป็นคนละเครื่องกันก็ได้ครับ ตามหลักการแล้ว NRPE ต้องติดตั้งทั้ง 2 ฝั่ง คือ NRPE daemon ติดตั้งอยู่บน server เป็นผู้ให้บริการ และ plugin check_nrpe ติดตั้งอยู่บน NetHAM ผู้ร้องขอข้อมูล









จากรูปเมื่อผู้ร้องขอข้อมูลต้องการ monitor ข้อมูลของ Remote Linux Host จะมีขั้นตอนการทำงานดังนี้

1. Nagios จะทำการ execute check_nrpe plugin และจะบอก service ที่ต้องการ monitor

2. check_nrpe plugin จำทำการติดต่อกับ NRPE daemon ที่ฝั่นของ Remote Linux Host บน SSL-protected connection

3. NRPE daemon จะรันคำสั่งที่ Nagios plugin ที่จัดสรรไว้เพื่อที่จะไปตรวจสอบเอาข้อมูลที่ Nagios ต้องการออกมา

4. ผลลัพธ์จากการตรวจสอบจะถูก NRPE daemon ส่งกลับไปยัง check_nrpe plugin และ return ผลการตรวจสอบให้แก่ Nagios

รู้และเข้าใจหลักการแล้วต่อมาจะมาทำการ setup NRPE ให้แก่ NetHAM กันดีกว่าครับ จากหลักการ NRPE จะต้องทำการติดตั้งทั้งสองฝั่งแต่ใน NetHAM ได้ทำการติดตั้งให้แล้วเหลือแต่ให้เราไปสร้างคำสั่งขึ้นมาเท่านั้นเอง การสั่งคำสั่งก็ทำตามดังนี้ครับ

1. เข้าสู่ เมนูคำสั่ง > กำหนดคำสั่ง ให้ทำการคลิกที่ปุ่ม เพิ่ม














2. Command line ที่ต้องทำการใส่คำสั่งตาม Pattern ดังนี้

$USER1$/check_nrpe -H $HOSTADDRESS$ -c









จากนั้นให้ทำการบันทึก
เพิ่มเติมนิดครับ ต่อไปนี้เป็นตัวอย่างคำสั่งครับที่จะให้ตรวจสอบค่าต่างๆ
check_load
$USER1$/check_nrpe -H $HOSTADDRESS$ -c check_load
check_total_procs
$USER1$/check_nrpe -H $HOSTADDRESS$ -c check_total_procs
check_hda1
$USER1$/check_nrpe -H $HOSTADDRESS$ -c check_hda1

3. ต่อมาจะเป็นขั้นตอนการสร้าง service นะครับ ให้เข้า เมนูคอนฟิก > เซอร์วิส คลิกที่ปุ่ม เพิ่ม










4. ทำการเพิ่มชื่อให้กับ service นี้และคลิกเลือกคำสั่งทีทำการสร้างขึ้นมา
















จากนั้นให้ทำการบันทึก และสั่งเริ่มการทำงานใหม่

5. เมื่อเข้ามาเมนูคอนฟิก > เซอร์วิส จะพบ service ที่พร้อมใช้งาน











ต่อมาก็เป็นขั้นตอนของฝั่ง Remote Linux Host แต่ก็มีขั้นตอนที่ซับซ้อนพอสมควรนะครับ หากผู้ใดไม่มีพื้นฐานในการใช้ระบบปฏิบัติการ linux ต้องใช้ความพยายามนีสนิงนะครับ อ่อ อีกเรื่องครับที่เครื่อง Remote Linux Host จะต้องติดตั้ง Nagios-plugin เอาไว้เป็นที่เก็บคำสั่งด้วยครับข้อนี้สำคัญมากโดยขั้นตอนก็เหมือนกับขั้นตอนการติดตั้ง Nagios เลยครับสามารถหาศึกษาได้จากในเวปครับ


ขั้นตอนการ setup ที่ฝั่ง Remote Linux Host

1. ต้องทำการติดตั้งโปรแกรม xinetd เพื่อใช้ควบคุม service การให้บริการผ่านโพรโตคอล TCP,UDP และกำหนดการเชื่อมต่อของแต่ละ service โดยใช้การติดตั้งดังนี้
# yum install xinetd
























2. ทำการ download ไฟล์โดยเข้า website ของ sourceforge
http://sourceforge.net/projects/nagios/files/
เลือก download nrpe-2.12.tar.gz









3. ทำการแตกไฟล์ nrpe-2.12.tar.gz ที่ได้จากการ download














4. ทำการ compile NRPE addon
# ./configure
# make all

5. ติดตั้ง NRPE plugin (ใช้สำหรับทดสอบ), daemon และ ไฟล์ตัวอย่าง daemon config
# make install-plugin
# make install-daemon
# make install-daemon-config
ขั้นตอนติดตั้ง NRPE plugin, daemon และ ไฟล์ตัวอย่าง daemon config









หมายเหตุ : ขั้นตอนการติดตั้งจะอยู่ใน /usr/local/nagios/libexec/nrpe-2.12/)

6. ติดตั้ง service NRPE daemon ภายใต้ xinetd
# make install-xinetd




7. แก้ไขไฟล์ nrpe ที่ path /etc/xinetd.d/nrpe
โดยการเพิ่มหมายเลข IP Addres ของ NetHAM
# gedit /etc/xinetd.d/nrpe &


















8. เพิ่มคำสั่งต่อไปนี้ลงในไฟล์ NRPE daemon
# gedit /etc/services &














9. Restart xinetd service โดยคำสั่ง
# service xinetd restart





10. ทดสอบ NRPE daemon บน localhost

ตรวจสอบว่ามี nrpe daemon ทำงานอยู่หรือไม่
# netstat –at grep nrpe




หากไม่มี NRPE daemon running
ตรวจสอบ
- ใน path /etc/services/ มีการเพิ่ม NRPE ?
- ใน path /etc/xinetd.d/nrpe มีการเพิ่มไอพีของ localhost ?
- มีการติดตั้ง xinetd และ เริ่มการทำงาน ?
- ตรวจสอบไฟล์ system log สำหรับข้อผิดพลาดของ NRPE และ xinetd.d

11. ตรวจสอบการทำงานของ NRPE
# /usr/local/nagios/libexec/check_nrpe –H localhost

ผลที่แสดงออกมาควรเป็นชื่อ NRPE v2.12

12. เพิ่มคำสั่งให้ firewall อนุญาติให้ NRPE daemon สามารถเข้ามา
access remote server
เพิ่มคำสั่ง
# iptables -A INPUT -p tcp -m tcp --dport 5666 -j ACCEPT
# service iptables save


13. ปรับแต่งค่าต่างๆของ plugin ที่ path /usr/local/nagios/etc/nrpe.cfg















ตัวอย่าง การปรับค่าของ check_hda1
เดิม /usr/local/nagios/libexec/check_disk –w 20% -c 10% -p /dev/hda1
แก้ไข /usr/local/nagios/libexec/check_disk –w 20% -c 10% -p /


14. ตรวจสอบการทำงานผ่าน NRPE daemon อีกครั้ง








หว้า…จบแล้วครับ จากนี้ก็ลองให้ NetHAM ไป monitor host โดยใช้ NRPE ดูนะครับ ได้ผลอย่างไรมาเล่าให้ฟังกันบ้างนะครับ (- -“)




แหล่งที่มา :

- James Turnbull, Pro Nagios 2.0 สำนักพิมพ์ Apress the expert’s voice
- Wolfgang Barth, Nagios System and Network Monitoring สำนักพิมพ์ opensource PRESS
- Nagios, NRPE Documentation Copyright (c) 1999-2007 by Ethan Galstad
- เอกสารในงานอบรมการใช้โปรแกรมตรวจสอบสถานะของเครือข่ายและบริการ NetHAM (Network Health Analysis and Monitoring) โดย ชาวีร์ อิสริยภัทร์ , ธนชัย คงพูล

ไม่มีความคิดเห็น:

แสดงความคิดเห็น