เช่น การเก็บ Log จาก SERVER ต่าง ๆ ใน SCI เพื่อไปรวมที่ SERVER ตัวเดียวคือ LogSERVER (192.168.0.251)
1. ติดตั้งโปรแกรม พื้นฐานที่จำเป็นต้องใช้ในเครื่อง ตัวเอง
- apt-get install apache2 ติดตั้ง Apache
- apt-get install Mysql-server ติดตั้ง Mysql-server
- apt-get install phpmyadmin ติดตั้ง phpmyadmin
2. ติดตั้ง syslog
โดยทำตาม ขั้นตอนนี้
http://porpramarn.blogspot.com/2012/04/ubuntu-centralized-log-with-logzilla.html
*** สำคัญมาก คือ 3.ติดตั้ง Package อื่น ๆ ที่จำเป็น ต้อง ติดตั้งทีละ แถว ให้ครบทุกตัวไม่งั้นจะไม่เก็บ Log
3. แก้ไขไฟล์ Config เพิ่มเติมที่เครื่องเราเอง
- nano /etc/syslog-ng/syslog-ng.conf
- destination d_logserver { tcp("192.168.0.9" port(514)); };
ไว้ล่าง ### Destinations ###
และเพิ่ม
- #get s_apache locolhost
- log {
- source(s_apache_access);
- destination(d_logzilla);
- };
- log {
- source(s_apache_access);
- destination(d_logserver);
- };
ไว้ล่าง ### Logs ###
ตัวอย่าง จาก Sources ที่แก้เพิ่มเติม จาก http://porpramarn.blogspot.com/2012/04/ubuntu-install-serverextranet.html
- ### Sources ###
- source s_local {
- internal();
- # standard Linux log source (this is the default place for the syslog()
- # function to send logs to)
- unix-stream("/dev/log");
- # messages from the kernel
- file("/proc/kmsg" program_override("kernel: "));
- };
- source s_apache_access {
- file("/var/log/apache2/access.log");
- };
- ### Destinations ###
- destination d_logzilla {
- program("/var/www/logzilla/scripts/db_insert.pl"
- template("$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n")
- );
- };
- destination d_logserver { tcp("192.168.0.9" port(514)); };
- ### Logs ###
- #get s_local
- log {
- source(s_local);
- destination(d_logzilla);
- };
- #get s_apache locolhost
- log {
- source(s_apache_access);
- destination(d_logzilla);
- };
- log {
- source(s_apache_access);
- destination(d_logserver);
- };
*** อธิบาย Code
ไฟล์ syslog-ng.conf จะประกอบด้วย 3 ส่วนคือ
ส่วนที่ 1. Source บอกถึงเราจะเก็บอะไรบ้าง ใส่ตัวแปร เช่น เก็บทั้งหมด, เก็บ Apacher, เก็บ Squid หรืออื่น ๆ
- source s_apache_access {
- file("/var/log/apache2/access.log");
- };
ส่วนที่ 2. Destination คือส่วนที่ประกาศตัวแปรเรียกใช้โปรแกรมเพื่อเก็บลง ฐานข้อมูลของ Log ตามตัวแปรที่มีการตั้งชื่อไว้
และเป็นส่วนที่ใช้ในการ ส่ง ข้อมูล Log ไปอีก SERVER ตัวอื่น
- destination d_logzilla {
- program("/var/www/logzilla/scripts/db_insert.pl" #เรียกใช้ไฟล์คำสั่งนี้
- template("$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n")
- ); # เก็บตัวแปรเหล่านี้เข้าไปเก็บ
- };
- destination d_logserver { tcp("192.168.0.9" port(514)); }; # ส่วนที่ส่ง ข้อมูลไป SERVER อื่น
ส่วนที่ 3. Log คือส่วนที่เรา ใช้ในการส่ง log ว่าจะเก็บส่วนไหนบ้างและส่งไปโดยใช้ตัวแปรไหนบ้าง เช่น
- log {
- source(s_local);
- destination(d_logzilla);
- };
- log {
- source(s_apache_access);
- destination(d_logzilla);
- };
- log {
- source(s_apache_access);
- destination(d_logserver);
- };
ซึ่งชุดคำสั่งในตัวแปร d_logserver คือจะส่งไปเก็บอีก SERVER หนึ่งผ่าน port 514
4. การตั้งค่า ไฟล์ syslog-ng.conf ที่ SERVER ฝั่งที่เป็นเครื่องรับ
- nano /etc/syslog-ng/syslog-ng.conf
เพิ่มในส่วนของ Source
- source s_net {
- udp(ip(0.0.0.0) port(514));
- tcp(ip(0.0.0.0) port(514) keep-alive(yes) max-connections(300));
- };
เพิ่มในส่วนของ log
- ### Logs ###
- log {
- source(s_net);
- destination(d_logzilla);
- };
ตัวอย่าง Source
- ### Sources ###
- source s_local {
- # message generated by Syslog-NG
- internal();
- # standard Linux log source (this is the default place for the syslog()
- # function to send logs to)
- unix-stream("/dev/log");
- # messages from the kernel
- file("/proc/kmsg" log_prefix("kernel: "));
- };
- source s_net {
- udp(ip(0.0.0.0) port(514));
- tcp(ip(0.0.0.0) port(514) keep-alive(yes) max-connections(300));
- };
- ### Destinations ###
- destination d_logzilla {
- program("/var/www/logzilla/scripts/db_insert.pl"
- template("$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n")
- );
- };
- ### Logs ###
- log {
- source(s_local);
- source(s_net);
- destination(d_logzilla);
- };
ความหมายคือ
source s_local เป็นตัวรับค่าจาก เครื่องตัวเอง
source s_net เป็นตัวที่ใช้รับค่าจากการส่งค่าจาก เครื่องอื่นมา
แล้วเก็บใส่ log โดยนำ source ต่าง ๆ มาส่งเก็บเข้าฐานข้อมูลของ log โดดยใช้ destination d_logzilla
No comments:
Post a Comment