การติดตั้ง php syslog viewer บน ubuntu |
อ้างอิง http://citec.us/forum/index.php?showtopic=23359&mode=threaded&pid=55496
จัดทำเมื่อ 1/12/2008
ทดลองบน Ubuntu 8.04
บทนำ
- ติดตั้ง syslog-ng ด้วยคำสั่ง
apt-get install syslog-ng
- ดาวน์โหลดโปรแกรม php syslog viewer ด้วยคำสั่ง
wget http://downloads.sourceforge.net/phpsyslogviewer/phpsyslogviewer-7.2.1.tar.bz2
- ติดตั้งโปรแกรม bzip2 ด้วยคำสั่ง
apt-get install bzip2
- แตกไฟล์ phpsyslogviewer ด้วยคำสั่ง
tar xjvf phpsyslogviewer-7.2.1.tar.bz2
- ดาวน์โหลดโปรแกรม speedupd ซึ่งเป็นโปรแกรมเร่งความเร็วให้เอนจิ้นป้อนข้อมูลสู่ฐานข้อมูล mysql ด้วยคำสั่ง
wget http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/speedupd-7.3.2.tar.bz2
- ในโฟลเดอร์ install ของ phpsyslogviewer จะมีสคริปที่ใช้ติดตั้งตารางต่าง ๆ ให้กับฐานข้อมูล เราจะต้องทำการสร้างฐานข้อมูลเสียก่อน มิฉะนั้นจะพบกับข้อผิดพลาดและไม่สามารถรันสคริปดังกล่าวผ่านได้ มีขั้นตอนดังนี้
- เปลี่ยนไดเร็กทอรี่ไปยังโฟลเดอร์ phpsyslogviwer-7.2.1
- เข้าสู่ mysql ด้วยคำสั่ง
mysql -u root -p แล้วป้อนรหัสผ่านของ root
- สร้างฐานข้อมูลชื่อ syslogng ด้วยคำสั่ง
mysql>create database syslogng;
- ออกจาก mysql ด้วยคำสั่ง
mysql>exit;
- สร้างตารางข้อมูลด้วยการใช้ script จากไฟล์ install/phpsyslogviewer.sql ด้วยคำสั่ง
mysql -u root -p syslogng < install/phpsyslogviewer.sql
- ป้อนค่า username และ password เข้าไปในไฟล์ intalll/newuser.sql.php ดังเช่น
$user = "myuser"; // Your Username
$pass = "mypassword"; // Your Password
- ติดตั้งโปรแกรม php5-cli เพื่อให้รันคำสั่ง php ผ่าน command line ด้วยคำสั่ง
apt-get install php5-cli
- รันภาษา php-command line เพื่อ insert ข้อมูล user และ pass เข้าสู่ตารางข้อมูล user ของฐานข้อมูล syslogng ด้วยคำสั่งดังนี้
php install/newuser.sql.php
- รันภาษา php-command line ด้วยคำสั่งต่อไปนี้
php install/newuser.sql.php | mysql -u root -p syslogng
- จัดการเว็บไดเรคทอรีเพื่อให้สามารถเรียกดูข้อมูลผ่านเวบบราวเซอร์ได้ ด้วยการสำเนาไฟล์ ด้วยคำสั่งดังนี้
cp -R htdocs /var/www/phpsyslogviewer
- แก้ไขไฟล์คอนฟิกคือ /var/www/phpsyslogviewer/config.php เพื่อกำหนดค่าที่สำคัญเกี่ยวกับฐานข้อมูลดังนี้
$db_user = "root"; // Database Username
$db_pass = "rootpass"; // Database Password
$db_host = "localhost"; // Database Hostname
$db_name = "syslogng"; // Database Name
- รันคำสั่งต่อไปนี้
chown root:www-data /var/www/phpsyslogviewer/config.php
chmod 440 /var/www/phpsyslogviewer/config.php
- เข้าดูเว็บไซต์ของ phpsyslogviewer ได้ที่ http://ipaddress/phpsyslogviewer และจะได้หน้าต่างดังรูป

- เมื่อ Login แล้วจะได้หน้าต่างดังนี้

- ติดตั้งแพ็คเกจ speedupd-7.3.2 เพื่อเร่งความเร็วให้เอนจิ้นป้อนข้อมูลสู่ฐานข้อมูล mysql ขั้นตอนนี้อาจยุ่งยากนิดหน่อย เพราะต้องทำการคอมไพล์แพ็คเกจด้วยตัวเองใหม่ ขอย้ำว่าต้องทำนะครับขั้นตอนนี้ มิฉะนั้นใครที่เคยใช้ phpsyslog-ng จะรู้ซึ้งว่าอึดอัดเป็นอย่างไร ให้ทำตามคำสั่งต่อไปนี้
tar xjvf speedupd-7.3.2.tar.bz2
cd speedupd-7.3.2
apt-get install debhelper cmake libdaemon-dev libconfuse-dev fakeroot
dpkg-buildpackage -rfakeroot
ถ้า่มีปัญหาให้อ่านดู อาจจะต้องติดตั้ง libmysqlclient15-dev เิพิ่มเติมด้วยคำสั่ง
apt-get install libmysqlclient15-dev
- ตอนนี้เราจะได้แพ็คเกจตระกูล debian ชื่อว่า speedupd_7.3.0_i386.deb (สำหรับ 64 bit OS จะชื่อ speedupd_7.3.0_amd64.deb) ให้ติดตั้งแพ็คเกจและกำหนดค่าให้กับไฟล์ speedupd.confดังนี้
cd ..
dpkg -i speedupd_7.3.0_i386.deb (สำหรับเครื่องที่เป็น 64 bit ใช้ speedupd_7.3.0_amd64.deb)
vi /etc/speedupd.conf
/etc/init.d/speedupd start
- ต่อไปเป็นการกำหนดค่าให้กับ syslog-ng ทำการส่งค่าไปเก็บยังฐานข้อมูลทำตามนี้เลยครับ ง่าย ๆ ผู้เขียนตัดวิธีการเก็บข้อมูลการจราจรคอมพิวเตอร์ส่วนอื่นออก เพื่อให้สามารถทำความเข้าใจได้ง่าย ๆ ครับ หากใครมีไฟล์คอนฟิคเก่าอยู่แล้วก็เพิ่มเติมเฉพาะส่วนที่ต้องการเก็บข้อมูลในฐานข้อมูลได้เลยครับ โดยให้แก้ไขในไฟล์ /etc/syslog-ng/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); };
- สร้างสคริปเพื่อทำไปน์สำหรับส่งค่าสตรีมจากไปน์สู่ฐานข้อมูล งานนี้เป็น bash สคริปครับ ฟังดูวุ่นวายแต่ทำจริงง่ายมากครับ ให้สร้าง script file ด้วยคำสั่งต่อไปนี้
# vim 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
- เมื่อเปิดข้อมูลผ่านเว็บดูจะไ้ด้ดังรูป ซึ่งเ็ป็นตัวอย่างที่มี Total Hosts จำนวน 1 Hosts

จบครับ
|
|