NetHAM ดีจริง ลองดิ (ดิ..ดิ..)



NetHAM (Network Health Analysis & Monitoring)
"Network ล่ม Server ดาวน์ รู้ก่อนใคร ใช้ NetHAM"

ชัดชา ... ชัดชัดดาชาช้ด ...


MV แนะนำ Feature






NetHAM DEMO





NetHAM send Mail DEDO




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

หัวข้อที่แล้วติดตั้ง daemon บนเครื่อง remote host ที่เป็นระบบปฏิบัติการ Linux สาวกคุณ Bill ไม่ต้องน้อยใจกันไปนะครับวันนี้มีของ windows มาฝาก ตัว daemon ที่จะทำงานที่เครื่อง Remote Windows Host จะเป็น NSClient++ ครับ
ซึ่งตัว NSClient++ นั้น จากที่ได้ทดสอบ จะรองรับการทำงานบน
• Windows 2000
• Windows XP
• Windows 2003
• Windows Vista

แต่การติดตั้งวันนี้ผมจะทำบน Remote Windows Host ที่เป็น Windows XP นะครับ (ไม่คล่องใช้งาน windows เลย อิอิ…)

1. ก่อนอื่น ต้องมี NSClient++ ก่อนครับโดยดาวน์โหลดได้ที่
http://inms.in.th/netham/files/












- Copy Folder NSClient++ ที่ได้ทำการ Unzip แล้วไปไว้ที่ Local Disk (C:)
- เข้าสู่ Dos โดยไปที่ Start Menu > Runs > พิมพ์ cmd > กด OK
- เข้าสู่ folder NSClient++ โดยพิมพ์คำสั่ง
cd c:\
cd “NSClient++”






- ทำการติดตั้ง NSClient++ โดยพิมพ์
nsclient++.exe /install





2. หลังจากติดตั้ง NSClient++ เรียบร้อยแล้ว เราจะต้องตั้งค่าขั้นต้นกันครับ
- กลับสู่ folder NSClient++ ใน C:
- เปิดไฟล์คอนฟิก nsc.ini เราจะเปิดด้วย Text editor อะไรก็ได้ แล้วแต่สะดวกครับ จากนั้นให้เอา comment ออกที่ตำแหน่ง














หัวข้อ [modules] ให้เอา “ ; ” หน้าข้อความต่อไปนี้ออก







ในหัวข้อ [Settings] ให้เอา “ ; ” หน้าข้อความ allowed_hosts ออก และทำการเติมหมายเลข IP Address ของ NetHAM










ในหัวข้อ [NSClient] ให้เอา “ ; ” หน้าข้อความ port=12489 ออก







3. จากการตั้งค่าขั้นต้น ได้เปิด port 12489 ไว้เพื่อให้ NSClient ติดต่อกับ NetHam ซึ่งถ้า Windows ของคุณปิด Firewall อยู่แล้ว ก็ไม่จำเป็นต้อง Config อะไรบน Windows เพิ่มครับ แต่เพื่อความปลอดภัยแล้ว ควรเปิด Firewall และสร้าง Exception port แค่ที่เราต้องการใช้งาน เพื่อป้องกันการบุกรุกจากผู้ไม่ประสงค์ดีครับ

- สั่งให้ firewall เปิด port 12489
Control Panel > Windows Firewall > Exceptions > คลิก Add Port…































กรอกข้อมูลดังต่อไปนี้ แล้วกด OK

















4. สั่งให้ NSClient++ ทำงานเป็น daemon โดย คลิกขวาที่ My Computer และเลือก Service






















- คลิกขวาที่ Process ชื่อ NSClientpp (Nagios) 0.3.7.82 2009-07-19 w32 กด Start
















5. ทดสอบคำสั่งโดยพิมพ์คำสั่งที่ NetHAM ดังนี้
cd /usr/local/nagios/libexec/
./check_nt -H -p 12489 -v UPTIME













6. การสร้างชุดคำสั่ง Command line ใน NetHAM
- เข้าสู่ NetHAM
- สร้างคำสั่งโดยไปที่เมนู คำสั่ง > คลิกกำหนดคำสั่ง




























7. สร้างคำสั่งโดยกรอกรายละเอียดดังต่อไปนี้











** Command line ต้องทำการใส่คำสั่งตาม Pattern ดังนี้
$USER1$/check_nt -H $HOSTADDRESS$ -p 12489
แล้วตามด้วย Command line ที่จะส่งไปตรวจสอบเครื่องบริการ

-- การเพิ่มเซอร์วิสเพื่อใช้ในหน้าจอมอนิเตอร์ --

1. เข้าสู่ เมนู คอนฟิก และ คลิก เซอร์วิส














2. คลิกที่ เพิ่ม เพื่อทำการสร้างเซอร์วิส













3. กรอกข้อมูลของเซอร์วิสในหน้าจอกำหนดเซอร์วิส

หมายเลขที่ 1 เป็นชื่อของเซอ
ร์วิส ซึ่งเราจะตั้งอย่างไรก็ได้ แต่ต้องไม่ซ้ำกับเซอร์วิสอื่นๆ เนื่องจาก ชื่อเซอร์วิสตรงนี้จะไปปรากฏในหน้าจอมอนิเตอร์ครับ
หมายเลขที่ 2 เป็นรายละเอียด หรือ Description อย่างง่าย
หมายเลขที่ 3 เป็นการกำหนดให้เซอร์วิสนี้พร้อมใช้งาน
หมายเลขที่ 4 เป็นการ mapping กับ command ที่สร้างไว้ในขั้นตอนแรก

หมายเลขที่ 5 เป็นการบันทึกการตั้งค่าทั้งหมด
4. กลับเข้าสู่หน้า Monitor เมื่อคลิกที่เครื่องบริการจะพบเซอร์วิสที่ได้จากการตรวจสอบโดย NSClient++
ซึ่งเราสามารถตรวจสอบได้ทั้ง CPU Load, Disk Usage, Uptime, Process state ของโปรแกรมที่รันบน client ได้ครับ




สรุป
การเข้าถึงข้อมูลที่เป็น Local Status เช่น ข้อมูล CPU Load, Memory Usage ซึ่งเป็นข้อมูลที่โดยปกติไม่สามารถเข้าถึงได้จากภายนอก จำเป็นต้องติดตั้ง agent ไว้ที่ server ก่อน จากตัวอย่างคือ NSClient++ โดย agent จะส่งข้อมูลที่ต้องการผ่าน port ที่ตั้งค่าไว้ เมื่อ NetHAM รับค่าได้ ก็จะนำมาประมวลผล และแสดงในผลลัพท์ที่ผู้ใช้ต้องการครับ


แหล่งที่มา
เอกสารในงานอบรมการใช้โปรแกรมตรวจสอบสถานะของเครือข่ายและบริการ NetHAM (Network Health Analysis and Monitoring) โดย ชาวีร์ อิสริยภัทร์ , ธนชัย คงพูล
เว็บไซต์ http://nsclient.org/nscp/

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) โดย ชาวีร์ อิสริยภัทร์ , ธนชัย คงพูล

NetHAM ... เตือนฉาน

สวัสดีครับแฟนๆรายการ อิอิ เริ่มต้นแบบหลงตัวเองครับวันนี้ เอาล่ะวันนี้เราจะมาปรับแต่งพระเอกของเรากัน หลังจากรู้หลักการทำงาน การเพิ่ม host และเพิ่มบริการการตรวจสอบ ตลอดจน start NetHAM ให้ขึ้นมาทำการ monitor host ที่เราต้องการแล้ว ก็ต้องมารู้จักการปรับแต่งค่าเกี่ยวกับการแจ้งเตือนกันครับ โดยสิ่งที่เราจะมาพูดกันวันนี้จะแยกเป็น 2 ส่วนครับ
• มาทำความรู้จักวิธีการเพิ่มผู้ดูแล
• มาเรียนรู้วิธีการตั้งค่าช่วงเวลาเตือน






















เมื่อเราทำการ start NetHAM ขึ้นมาทำงาน โอเคว่า NetHAM ทำการ monitor ได้แล้ว(ทำการระบุ host และ service แล้ว) แต่หากเกิดความผิดปกติขึ้น NetHAM ก็ยังไม่สามารถแจ้งเตือนไปยังผู้ดูแลที่ถูกต้องได้ เนื่องจากเรายังไม่ได้ให้ข้อมูลเกี่ยวกับวิธีการแจ้งเตือน


การเพิ่มผู้ดูแลระบบเข้าสู่ NetHAM เพื่อให้แจ้งเตือนมีขั้นตอนดังนี้

1. การเพิ่มรายละเอียดของผู้ดูแลคนใม่ ทำได้โดยการเข้าไปที่ เตือน > ข้อมูลผู้ติดต่อ แล้วกด เพิ่ม








2. กรอกชื่อผู้ติดต่อ และ อีเมลของท่าน















3. เราสามารถบอก NetHAM ให้แจ้งเตือนผู้ดูแลคนใหม่ หากตรวจพบความผิดปกติขึ้น
ตัวอย่างเช่น หากเราต้องการให้ระบบแจ้งเตือนเมื่อ Chillchill_SERVER ผิดปกติให้แจ้งผู้ดูแล John Connor ให้เราเข้าไปเพิ่มผู้ดูแลคนใหม่ให้กับ Chillchill_SERVER โดยเข้าไปที่หน้าการตั้งค่าของ Chillchill_SERVER และคลิกที่แท็ป คอนฟิกระดับสูง











4. คลิกที่แท็ปย่อย คอนฟิกการเตือน > กดแก้ไขผู้ติดต่อ และเลือกผู้ดูแลคนใหม่แทนที่คนเก่า แล้วบันทึก













5. คลิก เขียนคอนฟิกไฟล์ ที่หน้ากำหนดผู้ติดต่อ จากนั้นให้ NetHAM เริ่มการทำงานใหม่








6. กลับไปที่หน้า monitor ครับ สังเกตว่าผู้ดูแลกลายเป็นคนใหม่แล้ว หากอุปกรณ์ชิ้นนี้มีความผิดปกติ ระบบจะทำการแจ้งเตือนไปยังผู้ดูแลคนนี้












เพียง 6 ขั้นตอนเราจะได้ผู้รับผิดชอบ Chillchill_SERVER แล้ว เย้ๆ (- -“) ต่อกันเลยครับ

ต่อไปเรามากำหนดช่วงเวลาเตือน (time periods) กันดีกว่า ….


1. คลิกที่เมนู เตือน > เวลาเตือน ให้เราลองคลิกเข้าไปดูรายละเอียดของ 24x7





2. 24x7 คือ อะไรเอ่ย…. ก็คือ 24 วันคูณ 7 ชั่วโมง เย้ย… ไม่ใช่นะครับ มันคือ ให้แจ้งเตือนได้ตลอด 24 ชั่วโมงใน 7 วัน เท่านี้เราก็จะมีชีวิตที่ต้องคอยระแวงตลอดแล้ว ฮ่าๆ เย้ย… อย่าไประแวงครับ ประโยชน์ของการเตือนมันก็มีข้อดีครับ เราจะได้รับรู้ปัญหาได้อย่างทันท่วงที ลดความเสียหายต่อองค์กรของเราครับ (หากดูแลดีๆ อาจจะได้โบนัทก้อนโต หรือเลือนตำแหน่งครับ (คิดในส่วนข้อดีให้เยอะๆครับ))



















3. ต่อไปเราจะมาลองตั้งเวลาใหม่สำหรับการแจ้งเตือนกันครับ ให้เราทดลองสร้างช่วงเวลาใหม่ ชื่อ Work Hours (เวลาทำงาน) โดยมีช่วงเวลาที่ให้แจ้งเตือนดังนี้
monday 8:00-17:00
tuesday 8:00-17:00
wednesday 8:00-17:00
thursday 8:00-17:00
friday 8:00-17:00


















4. กด เขียนคอนฟิกไฟล์








5. ขั้นตอนนี้เราก็จะไปตั้งช่วงเวลานี้ให้กับ host ที่เราต้องการให้แจ้งเตือนในช่วงเวลาดังกล่าวครับ











6. เข้าไปที่แท็ปย่อย คอนฟิกการเตือน














7. ให้เลือกที่เวลาเตือน เป็น Work Hours










จากนั้นบันทึก และสั่งเริ่มการทำงานใหม่
NetHAM จะตรวจสอบสถานะ Chillchill_SERVER เฉพาะช่วงเวลาทำงานเท่านั้น
กรณีนี้มีประโยชน์กับ server ที่ไม่ได้เปิดการทำงานตลอด 24 ชั่วโมงนะคร๊าบ

Clips ! ให้ดูว่า เค้าส่ง mail จริงนะเทอ