การติดตั้งและคอนฟิก PHP-Syslog-NG |
ดัดแปลงโดย อดิศร ขาวสังข์
อ้างอิง http://planetit.ws/view/printview-2.html (Install Centralized Syslog Server with Web Interface) , http://code.google.com/p/php-syslog-ng/issues/detail?id=77
จัดทำเมื่อ 14/02/2009
ทดลองบน Ubuntu 8.10
บทนำ
PHP-Syslog-NG เป็น front-end สำหรับการดู syslog-ng message ที่ถูกเก็บผ่าน MySQL แบบ real-time มีคุณลักษณะที่สามารถค้นหา Log โดยอาศัย device, time, priority, message และ date
โดย default แล้ว ทุก message จากหลายแหล่งกำเนิด จะถูกวางสู่ฐานข้อมูล MySQL แล้ว PHP-Syslog-NG ซึ่งเป็น front-end interface ก็จะมองและอ่านจาก MySQL Database เื่มื่อมีการค้นหาผ่าน Web Interface
ขั้นตอนการติดตั้ง
- ทำการ update และ upgrade ubuntu ดังนี้
# sudo apt-get update
# sudo apt-get upgrade
|
- ติดตั้ง Syslog-NG ด้วยคำสั่ง
| # sudo apt-get install syslog-ng |
- แก้ไขไฟล์คอนฟิกของ syslog-ng คือไฟล์ /etc/syslog-ng/syslog-ng.conf โดยให้มีค่าที่จำเป็นเป็นดังนี้
stats_freq(43200);
udp();
use_dns(no);
use_dns(yes);
dns_cache(yes);
|
- ในส่วนของ PHP-Syslog-NG ในลำดับแรกให้ติดตั้ง paakage ที่ำจำเป็นสำหรับ PHP-Syslog-NG ดังนี้
# sudo apt-get install mysql-server
# sudo apt-get install apache2
# sudo apt-get install php5
# sudo apt-get install php5-cli
# sudo apt-get install libapache2-mod-php5
# sudo apt-get install php5-mysql
# sudo apt-get install php5-gd
# sudo apt-get install libice6
# sudo apt-get install msttcorefonts
|
- เซ็ตรหัสผ่านของ mysql root ดังต่อไปนี้
# mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');
|
- เปลี่ยนไดเร็คทอรี่ด้วยคำสั่ง :
- ดาวน์โหลดและแตกไฟล์ PHP-Syslog-NG แล้วทำการ ลบ/สำเนา ไฟล์ที่ดาวน์โหลดมาจากไดเร็คทอรี่ดังนี้
# sudo wget http://php-syslog-ng.gdd.net/current.tgz
#
## Replace <version> with version you downloaded (mine is 2.9.3l)
# sudo tar xzvf php-syslog-ng-<version>.tgz
# sudo rm php-syslog-ng-2.9.3l.tgz
|
- กำหนดสิทธิ์ของไดเร็คทอรี่ที่ต้องการสำหรับ Apache ดังนี้
# sudo chmod 777 html/config/ html/jpcache/
|
- เปิดไฟล์คอนของ php คือไฟล์ /etc/php5/apache2/php.ini แล้วกำหนดค่าที่จำเป็นดังนนี้
max_execution_time : อย่างน้อยสุดเป็น 300
memory_limit : อย่างน้อยสุดเป็น 128M
|
- ทำการสร้าง log directory ด้วยคำสั่งดังนี้
# sudo mkdir -p /var/log/php-syslog-ng
|
- สร้าง virtual host ด้วยการสร้างไฟล์ /etc/apache2/sites-available/php-syslog-ng ดังนี้
# cd /etc/apache2/sites-available
# sudo vim php-syslog-ng
|
- ตัวอย่างในไฟล์ข้อมูลที่เป็น Virtual Host เป็นดังนี้
หมายเหตุ : ในส่วนของผู้เีขียน ซึ่งเป็นการทดลอง ได้ทำการสร้างไฟล์ดังกล่าว และทำการ disable ไฟล์ที่เป็น default webpage คือไฟล์ /etc/apache2/site-available/default ด้วยการลบไฟล์ default ในตำแหน่ง /etc/apache2/site-enabled ออก
<VirtualHost *>
ServerName syslog.planetit.ws
ServerAdmin alex@planetit.ws
DocumentRoot /usr/share/php-syslog-ng/html
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /usr/share/php-syslog-ng/html>
# pcw No directory listings
# Options Indexes FollowSymLinks MultiViews
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/php-syslog-ng-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/php-syslog-ng-access.log combined
ServerSignature On
</VirtualHost>
|
- Enable apache virtual host ด้วยคำสั่ง
# sudo a2ensite php-syslog-ng
|
- Reload apache ด้วยคำสั่ง
| # sudo invoke-rc.d apache2 reload |
- เปิด Browser ไปยัง http://<your_php-syslog-ng_url>/install แล้วจะได้ผลดังรูป

- คลิ๊กปุ่ม Next แล้วจะได้ดังรูป

- ให้ยอมรับ License ด้วยการคลิ๊กที่ช่อง I understand that this software released under the GNU/GPL License แล้วคลิ๊กปุ่ม Next ก็จะได้ผลดังรูป

- ให้ทำการป้อนค่าของ MySQL ดังตัวอย่างในรูป และก่อนที่จะทำการคลิ๊กปุ่ม Next ให้ทำการแ้้ก้ไขไฟล์
usr/share/php-syslog-ng/html/install/sql/sample_data.sql ให้เป็นค่าใหม่ดังนี้ (ถ้าไม่แก้จะมีปัญหาไม่สามารถ insert ข้อมูลเข้าสู่ MySQL ได้)
INSERT INTO `logs` (host, facility, priority, level, tag, datetime, program, msg, counter) VALUES ('srv-www-001','daemon','warning','alert','Tag','2006-06-15 22:25:32','Test Script','%AAA-3-IPILLEGALMSG: Fan 1 had a rotation error reported.',1),('as-3550-2','kern','info','alert','Tag','2006-06-15 22:25:34','Test Script','Duplicate address 10.10.2.2 on Vlan20',2),('as-3550- 2','mail','warning','crit','Tag','2006-06-15 22:25:36','Test Script','Line protocol on Interface FastEthernet0/7, changed state to up',3);
|
- เมื่อคลิ๊กปุ่ม Next จะได้ผลดังรูป

- ให้ทำการป้อนชื่อ Site name แล้ิวคลิ๊กปุ่ม Next แล้วจะได้ผลดังรูป

- จากรูปข้างบน ก็ไม่ต้องทำอะไรเพราะถูกต้องหมดแล้ว จากนั้นให้คลิ๊กปุ่ม Next ก็จะได้ดังรูป

- จากรูปข้างบนมีคำแนะนำให้ทำการลบไดเร็คทอรี่ที่ชื่อว่า Installation ออก ก็ต้องทำตามนะครับ อาจจะเปลี่ยนชื่อเสียก่ีอนก็ได้ หลังจากนั้นเมื่อเรียกใช้งานก็จะได้ผลดังรูปล่าง ซึ่งให้ป้อนชื่อ Username ที่ได้กำหนดไว้ ซึ่งก็คือ admin และรหัสผ่านตามที่ได้กำหนดไ้ว้ก่อน

- จากนั้นก็ได้จะได้ผลลัพท์ดังรูปถัดไป

- เมื่อทำการค้นหา้ข้อมูลก็จะได้ข้อมูลตัวอย่างดังรูป

- กลับไปยัง terminal console และเปลี่ยนไปยังไดเร็คทอรี่ /usr/share/php-syslog-ng/script ด้วยคำสั่ง
# cd /usr/share/php-syslog-ng/scripts
|
- อัพเดตไฟล์ด้วย path ที่ถูกต้องโดยใช้ perl ดังนี้
# sudo perl -i -pe 's/\/www\/php-syslog-ng/\/usr\/share\/php-syslog-ng/g' *
|
- เปิด crontab ด้วย root ดังนี้
# sudo crontab -e -u root
|
- ก็อปปี้บรรทัดต่อไปนี้ลงใน crontab
@daily php /usr/share/php-syslog-ng/scripts/logrotate.php >> /var/log/php-syslog-ng/logrotate.log
@daily find /usr/share/php-syslog-ng/html/jpcache/ -atime 1 -exec rm -f '{}' ';'
0,5,10,15,20,25,30,35,40,45,50,55 * * * * php /usr/share/php-syslog-ng/scripts/reloadcache.php >> /var/log/php-syslog-ng/reloadcache.log
|
- ก็อปปี้ logrotate.d file ดังนี้
# sudo cp /usr/share/php-syslog-ng/scripts/logrotate.d /etc/logrotate.d/php-syslog-ng
|
- แก้ไขคอนฟิกของ PHP-Syslog-NG คือไฟล์ /etc/syslog-ng/syslog-ng.conf ด้วยการก็อปปีบรรทัดต่อไปนี้ไปวางในส่วนท้ายของไฟล์
destination d_mysql {
program("/usr/bin/mysql -usyslogadmin -psyslogadmin syslog"
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));
};
log {
source(s_all);
destination(d_mysql);
};
|
- ทำการ Reload sylog-ng deamon ด้วยคำสั่ง
# sudo invoke-rc.d syslog-ng reload
|
- ตัวอย่างการคอนฟิกเครื่อง Client ให้แก้ไขไฟล์ /etc/syslog.conf โดยให้วางข้อความบรรทัดต่อไปนี้ไว้ส่วนบนสุดของไฟล์
*.* @<your_syslog-ng_server>
|
ให้แทนที่ <your_syslog-ng_server> ด้วย remote syslog-ng server IP หรือ hostname
- ทำการ reload syslog ด้วยคำสั่ง
# /etc/init.d/syslog reload
|
จบครับ
|
|