วันเสาร์ที่ 14 เมษายน พ.ศ. 2555

จับ traffic network ด้วย ntop

มาย้อนอดีตกันอีกรอบ สมัยก่อนเวลาจับ traffic เราพยายามจับเอาข้อมูลที่วิ่งผ่าน NIC แล้วเอามาวิเคราะห์และทำสถิติบนเครื่องนั้นๆ ซึ่งก็ทำให้ง่ายและดิบซึ่งเครื่องมือลักษณะนี้มีอยู่หลายตัว วันนี้มาย้อนอดีตกันกับเครื่องมือที่ชื่อว่า ntop ครับ วิธีการติดตั้งทำดังนี้



sudo apt-get install ntop



อย่าพยายาม start services ตอนนี้เพราะยังไม่มี config และยังไม่ได้ตังค่า password ให้กับ admin ให้ตั้งค่าดังนี้



sudo ntop --set-admin-password



จากนั้นสั่ง restart ntop ได้เลยดังนี้



/etc/init.d/ntop restart



เรียกดูข้อมูลโดยเปิด browser ไปที่ http://localhost:3000 ครับ


วันพฤหัสบดีที่ 12 เมษายน พ.ศ. 2555

มาเล่น Moodle ผ่าน Android Tablet กัน

หลังจากโดนคณาจารย์รุมอัดเรื่อง Moodle บน iPad มาก็เลยได้มีโอกาสค้นหาข้อมูลเรื่องเหล่านี้บน Android Tablet บ้าง ก็พบว่า มีโครงการลักษณะเดียวกันนี้บน Android Tabet เหมือนกัน คือ เป็น Mobile Client ที่เชื่อมต่อกับ Moodle ผ่าน Service APIs ทำงานได้เหมือนกับ Client ที่อยู่บน iPad แต่เจ้าตัวนี้ทำงานได้บน Android Tabet/Mobile และ Black Berry ครับ โครงการนี้มีชื่อว่า umm : Unofficial Moodle Mobile App



ตัว umm พัฒนาบน Phonegap platform โดยหวังผลในการ port ไปยัง mobile platform อื่นๆ ได้ เช่น iOS, QNX, Android, Window Mobile เป็นต้น นอกจากนี้การใช้ HTML5 ในการพัฒนา App ทำให้ข้าม Platform ทำได้ง่ายมากขึ้น โดยผ่าน Phonegap Build นั่นเอง สำหรับตัวโครงการสามารถดูข้อมูลเพิ่มเติมได้ที่ หน้าโครงการ umm: Unofficial Moodle Mobile app และแนวทางการพัฒนาต่อยอดการนำไปใช้งาน สำหรับซอร์สโค้ดของ App นี้สามารถ check out ได้ที่ GitHub ครับ


วันอังคารที่ 10 เมษายน พ.ศ. 2555

บริการจัดการชั้นเรียน Moodle ผ่าน iPad

ช่วงนี้ต้อนรับกระแส Tablet กันหน่อย แต่ไม่ใช่ Tablet เด็ก ป.1 นะ แต่เป็น Tablet สำหรับ เด็ก ม.ต้น ม.ปลาย, ป.ตรี, ป.โท, ป.เอก ผู้มีอันจะกินละกันครับ :P เนื่องจากโดนแซวจากคณาจารย์ผู้ทรงคุณวุฒิที่โคราช ซึ่งหอบเอา iPhone + iPad มาแซวว่าเดี๋ยวนี้เค้าเรียน, สอบ, ทำการบ้าน, ดูคะแนนสอบ ผ่าน iPad กันแล้ว เล่นเอาผมเหวอไปเลย เป็นจริงครับ เดี๋ยวนี้เค้าเรียนผ่าน iPad กันจริงๆ เป็นที่ทราบกันอยู่แล้วว่า Moodle เป็นเครื่องมือจัดการชั้นเรียนหรือ Learning Management System ชั้นดีและเป็นที่นิยมสูง การพัฒนา Moodle ให้รองรับกับอุปกรณ์และซอฟต์แวร์ต่างๆ ในรูปแบบของ Plugin ก็มีมากขึ้นด้วย สำหรับท่านที่ต้องการใช้งาน Mooble บน iPhone/iPad ก็สามารถดาวน์โหลด App ชื่อ My Moodle ได้ที่ App Store ครับ












สร้าง Distributed Storage + HA ด้วย GlusterFS

อาทิตย์นี้ยังอยู่ในช่วงย้อนอดีตครับ ผมได้เล่น Gluster Platform ตั้งแต่ผลิตภัณฑ์นี้ยังไม่ได้โดนซื้อจาก RedHat ซึ่ง Gluster Platform ทำ Distributed Storage ได้ง่ายมาก และไม่ได้มีความซับซ้อนมากมายนัก เครื่องมือที่ใช้ก็แสนจะธรรมดา แต่ได้ผลลัพท์ที่ดีเยี่ยม ประกอบกับการประยุกต์ใช้งานได้หลากหลาย ทำให้ Gluster Platform เป็นเครื่องมือสร้าง Distributed Storage ที่เพิ่มจำนวนและขนาดได้ตามที่เราต้องการได้ง่ายและผมก็ชอบมากๆ ตอนนี้ Gluster Platform รวมอยู่ในผลิตภัณฑ์ของ RedHat เรียบร้อยแล้วในชื่อ RedHat Storage สำหรับชุมชนโอเพนซอร์สอาจไม่ได้จับ Gluster Platform ตรงๆ นัก เพราะเป็น Commercial แต่จะได้จับ GlusterFS แทน ซึ่งมีความยุ่งยากมากกว่ากันพอสมควร ซึ่งในปัจจุบันก็ไม่ได้ยุ่งยากมากเท่าไรนัก อ้อเกือบลืมไปในประเทศไทยมีคนใช้ GlusterFS เพิ่มขึ้นด้วย (Tarad.com และ AIT) ดูได้จากแผนที่ผู้ใช้งานครับ (http://www.gluster.org/gluster-users/#formHtml)



สำหรับการใช้งาน GlusterFS ก็เหมือนเดิมคือจะต้องมี Node ทำหน้าที่เป็นชุด Storage หากต้องการเพิ่มพื้นที่เก็บข้อมูลก็เพิ่ม Node ให้มากขึ้น และจะต้องมีส่วน Gluster Client เพื่อเป็นจุดเชื่อมต่อกับ Node ต่างๆ ที่มีอยู่ในระบบ ขอไม่เขียนแผนภาพนะครับ :P วิธีการติดตั้งก็ง่ายมาก เราต้องเริ่มต้นที่ Node ก่อน Node จะต้องมีอย่างต่ำ 2 ตัว และ Gluster Client อีก 1 ตัว ดังนั้นเราจะมีเครื่องดังนี้



gluster1.redlinesoft.net มี IP Address เป็น 192.168.10.13
gluster2.redlinesoft.net มี IP Address เป็น 192.168.10.14
client.redlinesoft.net มี IP Address เป็น 192.168.10.15



สำหรับเครื่องทุกเครื่องติดตั้ง Ubuntu Server มีแค่ openssh-server ก็พอครับ อย่าลืมแบ่งพื้นที่ /data ให้มีขนาดเท่าๆ กัน ทั้ง 2 เครื่อง เพื่อเอาไว้เก็บข้อมูล หากในระบบเครือข่ายมี Local DNS อยู่แล้วก็ง่ายครับ แต่ถ้าไม่มีเราก็ไปใส่ไว้ในไฟล์ /etc/hosts ดังนี้



192.168.10.13 gluster1.redlinesoft.net gluster1
192.168.10.14 gluster2.redlinesoft.net gluster2
192.168.10.15 client.redlinesoft.net client



เครื่อง Gluster 1 แลพ Gluster 2 ติดตั้ง glusterfs-server โดยใช้คำสั่ง



sudo apt-get install glusterfs-server



จากนั้นเราต้องบอกให้ Gluster 1 รู้ว่า Gluster 2 เป็น trusted storage ดังนี้



gluster peer probe gluster1.redlinesoft.net



จากนั้นดูสถานะของ trusted storage ด้วยคำสั่ง



gluster peer status



เราจะพบว่ามี trusted storage เพิ่มเข้ามาแล้ว ทีนี้มาสร้าง Volumn กันครับ ใช้คำสั่ง



gluster volume create testvol replica 2 transport tcp gluster1.redlinesoft.net:/data gluster2.redlinesoft.net:/data



คำสั่งข้างต้นจะสร้าง volume ชื่อ testvol เป็นแบบ replicate เลข 2 คือจำนวนเครื่องที่เป็น Node เมื่อสร้าง volume ได้แล้วให้เริ่มการทำงานของ volume นี้โดยใช้คำสั่ง



gluster volume start testvol



ให้ตรวจสอบการทำงาน daemon ของ glusterfs ด้วยคำสั่ง netstat ของทั้ง 2 Node ว่า glusterfsd ทำงานอยู่ หากไม่พบ glusterfsd ทำงานให้ restart glsterfs daemon ใหม่ที่ /etc/init.d/glusterfs-server



กลับมาที่เครื่อง Gluster 1 ให้ดูสถานะของ volume ของเราด้วยคำสั่ง



gluster volume info



จะพบว่าเรามี testvol เป็น volume หลักและมี brick 2 node คือ gluster1.redlinesoft.net:/data และ gluster2.redlinesoft.net:/data ถือว่าเป็นอันเสร็จเรียบร้อย



จากนั้นกำหนดสิทธิ์ให้เครื่อง client (192.168.10.15) เชื่อมต่อกับ volume ของเรากันครับ ใช้คำสั่ง



gluster volume set testvol auth.allow 192.168.10.15



ใช้คำสั่ง gluster volume info อีกรอบเราจะพบว่า เครื่อง client (192.168.10.15) ได้รับอนุญาติให้ใช้ volume ที่ชื่อ testvol นี้ได้แล้ว



กลับไปที่เครื่อง client ติดตั้ง glusterfs-client ดังนี้



sudo apt-get install glusterfs-client



สร้าง directory สำหรับเป็นจุด mount ที่ /mnt/glusterfs ให้ทดสอบ mount ดเวยคำสั่ง



mount -t glusterfs gluster1.redlinesoft.net:/testvol /mnt/glusterfs



ให้ใช้คำสั่ง mount เพื่อตรวจสอบว่าเครื่อง client ได้เชื่อมต่อไปยัง Gluster 1 เรียบร้อยแล้วหรือยัง และใช้คำสั่ง df เพื่อดูพื้นที่ที่สามารถใช้งานได้ สำหรับการ mount ไปที่ distributed storage ทุกครั้งที่ boot เครื่อง ให้แก้ไชไฟล์ /etc/fstab โดยเพิ่มข้อมูลลงไปดังนี้



gluster1.redlinesoft.net:/testvol /mnt/glusterfs glusterfs defaults,_netdev 0 0



เท่านี้เราก็ได้ Distributed Storage + HA เอาไว้ใช้งานแล้วครับ :)


มาเล่น Zenoss กัน

อาทิตย์นี้ยังอยู่ในช่วงรื้อฟื้นความหลังกันอยู่ครับ เรื่องของ Zenoss เจ้า Zenoss เป็นระบบ Network Monitoring และ System Management ที่ถึกมาก สมัยก่อน Zenoss มักโฆษณาว่าไม่ต้องติดตั้งโปรแกรม Agent ก็สามารถทำงานได้ สามารถใช้ข้อมูลจาก Ping, Traceroute, DNS Resolve ได้ ซึ่งดูไร้สาระดีแต่ผมก็ชอบครับ :P สำหรับการติดตั้งก็ง่ายมากครับ ดาวน์โหลด Zenoss Ubuntu/Debian Native Stack ดังนี้



wget http://downloads.sourceforge.net/project/zenoss/zenoss-3.2/zenoss-3.2.1/zenoss-stack_3.2.1_i386.deb



จะได้ไฟล์ zenoss-stack3.2.1i386.deb มาให้ติดตั้งโดยใช้ dpkg ดังนี้



sudo dpkg -i zenoss-stack_3.2.1_i386.deb



ทีนี้ก็นั่งรอครับ เมื่อติดตั้งเสร็จเรียบร้อยก็สั่ง start service ได้เลย โดยใช้คำสั่ง



sudo /etc/init.d/zenoss-stack start



เปิดเบราเซอร์ไปที่ http://localhost:8080 ตั้งค่า password และเพิ่ม user แล้ว config device ที่ต้องการ monitor ได้เลย ง่ายมั๊ย :)


มาเล่น MRTG กัน

วันนี้มารื้อพื้น MRTG ผมยังจำได้ว่าใช้ MRTG ในการ Monitor Switch 3com 36 ports เมื่อนานมาแล้ว ประมาณ 5 ปีได้ วันนี้เลยมารื้อฟื้นความจำกันนิดหน่อย มาเริ่มกันเลย ก่อนอื่นเราต้องมี Apache, MRTG และ Host ที่เราต้องการดูข้อมูล ยกตัวอย่างเป็นเครื่องเซิร์ฟเวอร์ ชื่อ www ipaddress 192.168.10.12 ละกันครับ มี community ชื่อ public :) พอทราบข้อมูลเบื้องต้นแล้วก็ลงมือกันได้ครับ ติดตั้งแบบรวดเดียวจบ



sudo apt-get install mrtg apache2



จากนั้นสร้างไดเรคทอรีชื่อ mrtg ไว้ที่ /var/www ดังนี้



mkdir /var/www/mrtg



สร้าง config ของ mrtg โดยการอ่านจาก SNMP ของ Host ปลายทาง ดังนี้



sudo cfgmaker --output /etc/mrtg.cfg public@192.168.10.12



เราจะได้ไฟล์ config อยู่ที่ /etc/mrtg.cfg ครับ จากนั้นสร้าง index ไฟล์จากไฟล์ config ด้วย indexmaker



sudo indexmaker /etc/mrtg.conf > /var/www/mrtg/index.html



จากนั้นใช้คำสั่ง mrtg เพื่อสร้างข้อมูลและกราฟ (ใช้คำสั่งนี้สัก 4 รอบจะได้ข้อมูลครบ)



sudo env LANG=C /usr/bin/mrtg /etc/mrtg.cfg



จากนั้นสร้าง cron job เพื่อให้อัพเดททุกๆ 5 นาที ใช้คำสั่ง



sudo crontab -e



ใส่ข้อมูลลงไปดังนี้



*/5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg.cfg



ดูผลลัพท์ที่ http://localhost/mrtg ง่ายๆ สบายๆ


มาเล่น snmpd กัน

ผมไม่ได้จับงานระบบเครือข่ายมานานมาก นานจนลืมไปเลยล่ะ วันนี้เลยได้มารือฟื้นความจำกันนิดหน่อย เริ่มจาก snmpd กันก่อน หากใครนึกไม่ออกให้ไปอ่านที่ Wikipedia นะครับ :P เมื่อก่อนใช้ RedHat จำได้ลางๆ กับ SNMP V1 กันเลยทีเดียว แต่เดี๋ยวนี้ใช้ Debian/Ubuntu เจอ SNMP V2 แล้วแปลกตาไป แต่ก็ง่ายต่อการเข้าใจมากขึ้นครับ วิธีการติดตั้ง snmpd อย่างลวกๆ



sudo apt-get install snmp snmpd



แก้ไข default config ที่ /etc/default/snmpd ตรงบรรทัด TRAPDRUN=no แก้เป็น TRAPDRUN=yes และตรวจดูว่า SNMPDRUN=yes แล้วหรือยัง จากนั้นแก้ไข /etc/snmp/snmpd.conf ให้เรียกข้อมูลจากเครื่องอื่นๆ ได้แก้ดังนี้



# Listen for connections from the local system only
#agentAddress udp:127.0.0.1:161
# Listen for connections on all interfaces (both IPv4 *and* IPv6)
agentAddress udp:161,udp6:[::1]:161



แก้ read only community จาก



rocommunity public localhost



เป็น



rocommunity public



จากนั้นก็ลองทดสอบด้วยคำสั่ง snmpwalk ดังนี้ ทดสอบด้วย localhost



snmpwalk -O s -v 1 -c public localhost



และทดสอบด้วย IP Address ดังนี้



snmpwalk -O s -v 1 -c public 192.168.10.1



ถ้าถูกต้องจะได้ข้อมูลยาวหลายหน้าถือว่าใช้ได้ครับ ส่วนเรื่อง Authen เดี๋ยวมาต่อตอนหน้าครับ :P