วันพฤหัสบดีที่ 21 สิงหาคม พ.ศ. 2551

ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER

http://www.tpit.co.th/index.php?view=article&catid=7%3Ahowto&id=9%3A-centralized-log-php-syslogviewer&tmpl=component&print=1&page=&option=com_content&Itemid=10

ทำเองได้ centralized log แถมวิวได้ด้วย php syslogviewer Print
Written by Administrator
Thursday, 10 July 2008 02:35

ภาคแรก ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER

หลาย ๆ องค์กรเริ่มจะตื่นตัวกับพรบ.ว่าด้วยการกระทำผิดเกี่ยวกับคอมพิวเตอร์ พ.ศ. ๒๕๕๐ ตามมาตรา ๒๖ บัญญัติให้ผู้ให้บริการต้องเก็บข้อมูลจราจรคอมพิวเตอร์ไว้ไม่ต่ำกว่า ๙๐ วัน แต่ไม่เกิน ๑ ปีไปแล้ว วันนี้จะแนะนำวิธีง่าย ๆ ที่จะทำ centralized log เซิร์ฟเวอร์ด้วยตนเอง ด้วยซอฟต์แวร์ open sourceดูสิว่าจะสู้ผลิตภัณฑ์ต่างประเทศราคาหลายแสนได้หรือไม่

นับเป็นข่าวดีมากที่ผู้เขียนได้ค้นพบซอฟต์แวร์ที่ใช้ทำการวิว ค้นหาข้อมูล เพื่อจะได้ทำรายงานเบื้องต้นได้ใหม่ ชื่อว่า “php syslogviewer” แถมเพิ่งจะอัพเดทล่าสุดเมื่อปีกลาย แจ่มทีเดียว ใครหลายคนอาจเคยได้ยินชื่อ phpsyslog-ng มาก่อน ลืมไปได้เลยครับขี้เหร่มาก

ซอฟต์แวร์ที่ใช้งาน

syslog-ng-2.0.0

phpsyslogviewer-7.2.1

speedupd-7.3.2

ผู้เขียนทดสอบโดยติดตั้งบนระบบปฏิบัติการ debian etch 4.0 รันในระบบเวอร์ชอลแมชชีน โดยซอฟต์แวร์ xen opensource ใช้เคอร์เนลเวอร์ชั่น 2.6.18-4-xen-686 นับว่ามีเสถียรภาพสูงมาก ๆ ครับ

ขั้นตอนที่ 1 เริ่มกันเลยดีกว่า หลังจากติดตั้งโอเอสเรียบร้อยให้ทำการติดตั้งซอฟต์แวร์ syslog-ng-2.0.0 โดยใช้แพ็คเกจของโอเอสเองดังนี้

# apt-get install syslog-ng

ขั้นตอนที่ 2 ดาวน์โหลดซอร์สโค๊ดจาก sourceforge ตามลิงค์ข้างล่างนี้

# wget http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/phpsyslogviewer-7.2.1.tar.bz2

# wget http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/speedupd-7.3.2.tar.bz2


ขั้นตอนที่ 3 แตกแพ็คเกจออกถ้าใครยังไม่ได้ลงโปรแกรม bzip2 ให้ทำการลงซะก่อนมิฉะนั้นจะแตกไฟล์ออกไม่ได้และทำการติดตั้งชุด lamp สำหรับเครื่องแม่ข่ายซะก่อน ขั้นตอนการติดตั้ง lamp อาจจะใช้เวลาสักนิดนึง หากใครมีประสบการณ์คงหาทางแก้ปัญหาได้จากเอกสารอื่น เนื้อหาในบทความนี้ผู้เขียนขอเล็งไปที่ซอฟต์แวร์หลัก ๆ ของระบบการจัดการข้อมูลการจราจรคอมพิวเตอร์ ตามพรบ.เป็นหลัก อาจจะทำให้มือใหม่หงุดหงิดบ้าง ดังนี้

# apt-get install bzip2

# tar xjvf phpsyslogviewer-7.2.1.tar.bz2

# cd phpsyslogviewer-7.2.1

# apt-get install mysql-client mysql-server apache2 php5

# apt-get install php5-mysql php5-ldap php5-cli libapache2-mod-php5

# apt-get install phpmyadmin

ขั้นตอนที่ 4 ในโฟลเดอร์ install จะมีสคริปที่ใช้ติดตั้งตารางต่าง ๆ ให้กับฐานข้อมูล เราจะต้องทำการสร้างฐานข้อมูลเสียก่อน มิฉะนั้นจะพบกับข้อผิดพลาดและไม่สามารถรันสคริปดังกล่าวผ่านได้

# mysql -u root -p

mysql > create database syslogng;

mysql > exit;

# mysql -u root -p syslogng <>

ขั้นตอนที่ 5 ปรบมือให้กับตัวเองเราผ่านพ้นขั้นตอนที่ต้องระวังไปขั้นหนึ่ง จากนั้นกำหนดค่าเพื่อสร้างบัญชีรายชื่อผู้ใช้และรหัสผ่านง่าย ๆ ก็ใส่ค่าข้อมูลของผู้ใช้ รหัสผ่าน ชื่อโฮสต์ และ ฐานข้อมูล คิดว่าไม่น่ายาก ดังนี้

# vi install/newuser.sql.php

# php install/newuser.sql.php

# php install/newuser.sql.php | mysql -u root -p syslogng

ขั้นตอนที่ 6 จัดการเวบไดเรคทอรีเพื่อให้สามารถเรียกดูข้อมูลผ่านเวบบราวเซอร์ ใครที่มีประสบการณ์สร้างเวบไซต์มาก่อน งานนี้กินเรียบครับ ทำตามขั้นตอนได้เลย

# cp -R htdocs /var/www/phpsyslogviewer

# vi /var/www/phpsyslogviewer/config.php

# chown root:www-data /var/www/phpsyslogviewer/config.php

# chmod 440 /var/www/phpsyslogviewer/config.php

ขั้นตอนที่ 7 ทดลองเปิดหน้าเวบไซต์ดูหน่อยว่าหน้าตาเป็นอย่างไร ไปที่ http://xxx.xxx.xxx.xxx/phpsyslogviewer

php syslogviewer

จะเห็นว่าหน้าตาดูดีทีเดียว

ขั้นตอนที่ 8 ติดตั้งแพ็คเกจ speedupd-7.3.2 เพื่อเร่งความเร็วให้เอนจิ้นป้อนข้อมูลสู่ฐานข้อมูล mysql ขั้นตอนนี้อาจยุ่งยากนิดหน่อย เพราะต้องทำการคอมไพล์แพ็คเกจด้วยตัวเองใหม่ แต่ไม่เกินความสามารถของเราหรอกครับ ขอย้ำว่าต้องทำนะครับขั้นตอนนี้ มิฉะนั้นใครที่เคยใช้ phpsyslog-ng จะรู้ซึ้งว่าอึดอัดเป็นอย่างไร

# tar xjvf speedupd-7.3.2.tar.bz2

# cd speedup-7.3.2

# apt-get install debhelper cmake libdaemon-dev libconfuse-dev fakeroot

# apt-get install build-essential libmysqlclient15-dev

# dpkg-buildpackage -rfakeroot

ขั้นตอนที่ 9 หลังจากผ่านขั้นตอนที่ 8 เราจะได้แพ็คเกจตระกูล debian ชื่อว่า speedupd_7.3.0_i386.debให้ติดตั้งแพ็คเกจและกำหนดค่าให้กับไฟล์ speedupd.confดังนี้

# cd ..

# dpkg -i speedupd_7.3.0_i386.deb

# vi /etc/speedupd.conf

# /etc/init.d/speedupd start

ขั้นตอนที่ 10 สบายใจไปอีกขั้นหนึ่งครับ ต่อไปเป็นการกำหนดค่าให้กับ syslog-ng ทำการส่งค่าไปเก็บยังฐานข้อมูลทำตามนี้เลยครับ ง่าย ๆ ผู้เขียนตัดวิธีการเก็บข้อมูลการจราจรคอมพิวเตอร์ส่วนอื่นออก เพื่อให้สามารถทำความเข้าใจได้ง่าย ๆ ครับ หากใครมีไฟล์คอนฟิคเก่าอยู่แล้วก็เพิ่มเติมเฉพาะส่วนที่ต้องการเก็บข้อมูลใน ฐานข้อมูลได้เลยครับ

# cd /etc/syslog-ng

# cp syslog-ng.conf syslog-ng.conf.org

# vi syslog-ng.conf

options {

recv_time_zone (+07:00);

send_time_zone (+07:00);

sync (0);

time_reopen (100);

log_fifo_size (1000);

long_hostnames (off);

use_dns (no);

use_fqdn (no);

create_dirs (yes);

chain_hostnames(yes);

keep_hostname (yes);

};

source s_sys {

file ("/proc/kmsg" log_prefix("kernel: "));

unix-stream ("/dev/log");

internal();

udp(ip(0.0.0.0) port(514));

tcp(ip(0.0.0.0) port(514) keep-alive(yes));

};

destination d_mysql { \

pipe("/var/log/mysql.pipe" \

template("INSERT INTO logs \

(host, facility, priority, level, tag, datetime, program, msg) \

VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', \

'$PROGRAM', '$MSG' );\n") template-escape(yes));

};

filter f_kernel { facility (kern); };

filter f_messages { level(info..emerg) and not (facility(mail) or \

facility(authpriv) or facility(cron)); };

log {source(s_sys); filter(f_messages); destination(d_mysql); };

log {source(s_sys); filter(f_kernel); destination(d_mysql); };

ขั้นตอนที่ 11 สร้างสคริปเพื่อทำไปน์สำหรับส่งค่าสตรีมจากไปน์สู่ฐานข้อมูล งานนี้เป็น bash สคริปครับทำเสร็จต้องเปลี่ยนสิทธิให้รันได้ด้วยอย่าลืม ฟังดูวุ่นวายแต่ทำจริงง่ายมากครับ

#vi syslog2mysql.sh

#!/bin/bash

if [ ! -e /var/log/mysql.pipe ]

then

mkfifo /var/log/mysql.pipe

fi

while [ -e /var/log/mysql.pipe ]

do

mysql -u root --password=radius syslogng < /var/log/mysql.pipe >/dev/null

done

# chmod +x syslog2mysql.sh

# ./syslog2mysql.sh &

# /etc/init.d/syslog-ng start

ทำครบแล้วก็ปรบมือให้ตัวเองครับ ลองมาดูผลงานสิว่าเป็นไงบ้าง เข้าไปหน้าล็อกอินครับ

php syslogviewer

จากนั้นป้อนรหัสผู้ใช้พร้อมรหัสผ่านที่ทำไว้ในขั้นตอนที่ 5 ครับ ถ้าหากลืม จากนั้นจะได้หน้าจอต่อไปครับ

php syslogviewer

ดูต่อ อยากเห็นเรียลไทม์วิวเวอร์ครับ

php syslogviewer

ลองค้นหาดูสิ

ได้คำตอบตามนี้ครับ

php syslogviewer

ดูดีทีเดียวครับ เป็นไงครับ php syslogviewerสู้ซอฟต์แวร์แพง ๆ จากต่างประเทศได้ไหมอันนี้ต้องพิสูจน์ด้วยตนเองแหละครับ ในส่วนตัวของผู้เขียนทะเลาะได้กับ kiwi syslog service manager ของวินโดร์ได้เชียวครับ หรือจะใช้สำหรับมอนิเตอร์โปรแกรมจัดส่งข้อมูลการจราจรคอมพิวเตอร์จากอุปกรณ์ อื่น ๆ เช่น สวิตช์ เร้าเตอร์ หรือ อุปกรณ์แอคเซสพอยท์ในระบบก็ทำได้ดีครับ ใช้จริงก็ได้ครับ ผู้เขียนว่าคนไทยเก่งครับ สามารถสร้างเครื่องแม่ข่ายเก็บข้อมูลการจราจรคอมพิวเตอร์ ตาม พรบ.ว่าด้วยการกระทำผิดเกียวกับคอมพิวเตอร์ พ.ศ.2550 ได้ด้วยตนเองครับ ก็มันกฎหมายบ้านเรา ก็ทำมันซะเองสิครับ แค่นี้ก็รอดตัวจากมาตรา 26 ตามพรบ.คอมพิวเตอร์ปรับตั้งห้าแสนบาทแล้วครับ ที่สำคัญช่วยลดปัญหาการนำเข้าฮาร์ดแวร์ราคาแพงจากต่างประเทศได้ครับ สงสารพี่น้องเกษตรกรไทยครับไม่รู้จะขายข้าวสารกี่เกวียนจะพอจ่ายเงินภาษี ให้คนรัฐบาลซื้อ centralized log จากต่างประเทศสักตัว

ภาคสอง ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER

หมายเหตุ เฉพาะเครื่องแม่ข่าย centralized log ตัวเดียวยังไม่เพียงพอต่อการคอมไพล์พรบ.ว่าด้วยการกระทำความผิดเกี่ยวกับ คอมพิวเตอร์ พ.ศ. ๒๕๕๐ หน่วยงานต้องทำอินเทอร์เน็ตเกตเวย์เพื่อทำการตรวจสอบสิทธิการเข้าใช้ งานระบบ (authentication gateway) และต้องตั้งฐานเวลาเทียบกับเวลามาตรฐานของประเทศไทย (stratum 0)ผิดพลาดไม่เกิน 10 ms ด้วย และหากหน่วยงานใดให้บริการเวป หรือ เมลล์เซิร์ฟเวอร์ต้องจัดเก็บข้อมูลการให้บริการดังกล่าวด้วย แต่ยังไงก็ตามเราก็ประหยัดเงินไปได้หนึ่งกล่องล่ะครับ

ผู้เขียนขอจบบทความทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER เพียงแค่นี้ครับ หากติดขัดในขั้นตอนใด ถามมาได้ครับที่

supakitd at yahoo dot com

บริษัท ไทยพรอสเพอรัสไอที จำกัด

42/1 ถ.พิทักษ์ชาติ ต.ประจวบคีรีขันธ์

อ.เมืองประจวบคีรีขันธ์ จ.ประจวบคีรีขันธ์ 77000

Last Updated ( Friday, 15 August 2008 03:48 )

คลังบทความของบล็อก