การติดตั ้ง Centralized Log Server โดย พี่น้องกรรมกรไอที บ้านสูงชั้น ความต้องการเพ็คเก็จที่ใช้ในการทางาน 1. Apache web Server 2. Mysql Databases 3. Syslog-ng 4. php-syslog-ng กรณีดังต่อไปนี ้ได้สมมุติว่าได้ติดตั ้ง Apache Web Server และ Mysql Database ไปเรียบร้อยแล้ว 1.ทาการติดตั ้ง Syslog-ng ด้วยสาสั่งดังต่อไปนี ้ sudo apt-get install syslog-ng จะปรากฏข้อความคล้ายๆดังต่อไปนี ้ Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: klogd sysklogd ubuntu-minimal The following NEW packages will be installed: syslog-ng 0 upgraded, 1 newly installed, 3 to remove and 4 not upgraded. Need to get 209kB of archives. After this operation, 188kB of additional disk space will be used. Do you want to continue [Y/n]? Y //เลือก Y เพื่อทาการยืนยันถึงการติดตั ้ง Get:1 http://th.archive.ubuntu.com hardy/universe syslog-ng 2.0.9-1ubuntu1 [209kB] Fetched 209kB in 0s (1724kB/s) (Reading database ... 124401 files and directories currently installed.) กรรมกรไอที บ้ านสู งชั ้ น 13 ริ มน้ ้ าเจ้ าพระยา
39
Embed
Centralized Log Server Using Syslog-NG & Php-Syslog-NG
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
การตดตง Centralized Log Server โดย พนองกรรมกรไอท บานสงชน ความตองการเพคเกจทใชในการท างาน
1. Apache web Server 2. Mysql Databases 3. Syslog-ng 4. php-syslog-ng
กรณดงตอไปนไดสมมตวาไดตดตง Apache Web Server และ Mysql Database ไปเรยบรอยแลว 1.ท าการตดตง Syslog-ng ดวยส าสงดงตอไปน sudo apt-get install syslog-ng จะปรากฏขอความคลายๆดงตอไปน Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: klogd sysklogd ubuntu-minimal The following NEW packages will be installed: syslog-ng 0 upgraded, 1 newly installed, 3 to remove and 4 not upgraded. Need to get 209kB of archives. After this operation, 188kB of additional disk space will be used. Do you want to continue [Y/n]? Y //เลอก Y เพอท าการยนยนถงการตดตง Get:1 http://th.archive.ubuntu.com hardy/universe syslog-ng 2.0.9-1ubuntu1 [209kB] Fetched 209kB in 0s (1724kB/s) (Reading database ... 124401 files and directories currently installed.)
กรรม
กรไอ
ท
บานส
งชน
13 รม
นาเจา
พระยา
Removing ubuntu-minimal ... Removing klogd ... * Stopping kernel log daemon... ...done. Removing sysklogd ... * Stopping system log daemon... ...done. Selecting previously deselected package syslog-ng. (Reading database ... 124377 files and directories currently installed.) Unpacking syslog-ng (from .../syslog-ng_2.0.9-1ubuntu1_i386.deb) ... Setting up syslog-ng (2.0.9-1ubuntu1) ... * Starting system logging syslog-ng ...done. 2 ท าการทดสอบการท างานของ Syslog-ng โดยค าสงดงตอไปน sudo /etc/init.d/syslog-ng restart และตามดวย sudo logger -i -t logtest -- "logtest" ท าการตรวจสอบการเขยน log ของ Syslog-ng ดวยค าสงดงตอไปน sudo tail /var/log/syslog ผลทไดจะปรากฏคลายๆ ดงตอไปน Nov 15 01:13:42 mail syslog-ng[9278]: Termination requested via signal, terminating; Nov 15 01:13:42 mail syslog-ng[9278]: syslog-ng shutting down; version='2.0.9' Nov 15 01:13:42 mail syslog-ng[9299]: syslog-ng starting up; version='2.0.9' Nov 15 01:13:45 mail logtest[9302]: logtest ถาผลทไดออกประมาณนแสดงวา Syslog-ng สามารถท างานไดแลว 3. ขนตอนในการปรบแตงเพอให syslog-ng รองรบ log จากเครองอน โดยทวไปนน เครองทจะท างานเปน Centralize log Server นนจะใชงานพอรตมาตรฐานคอ udp 514(ส าหรบ syslogd) แตส าหรบ Syslog-ng สามารถท างานไดทง udp/tcp 514 และยงสามารถปรบแตงใหท างานทพอรตอนไดอก โดยปกต syslog-ng จะไมรองรบการท างานเปนCentralize log Server จะตองมการปรบแตงเพมเตม ดงน
# 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: ")); # use the following line if you want to receive remote UDP logging messages # (this is equivalent to the "-r" syslogd flag) # udp();
}; # ทท าการเพมขนมา source tcp_message_open { tcp(ip("0.0.0.0") port(514)); }; # ทท าการเพมขนมา source udp_message_open{ udp(ip("0.0.0.0") port(514)); }; เพมเตม กรณ ใช n e og f e po log จาก n e อธบาย เปนการสราง source ส าหรบใชในการรบขอมล ทชอ “ cp_me ge_open”, ”udp_me ge_open” โดยชอเหลานสามารถแกไขไดตามความเหมาะสม โดยทไดท าการเปด พอรตทง TCP/UDP เนองจาก ตองการใหสามารถรองรบการท างานกบ syslogd(ซงจะใชงาน UDP 514) ซงเปนเครองมอแบบเกาทถก build in ลงใน Linux/Unix ทก distribute ส าหรบ syslog-ng สามารถรองรบการท างานไดทง TCP/UDP หลงจากทไดมการเพมเขาไปแลวใหท าการ restart syslog-ng sudo /etc/init.d/syslog-ng restart
filter f_192.168.200.1{ host("192.168.200.1"); }; log { source(udp_message_open); filter(f_192.168.200.1); destination(d_192.168.200.1); }; อธบาย ในการประกาศท destination <Variable name> จะเปนการประกาศวาตวแปรทชอ “d_192.168.200.1” ตองการใหไปเกบหรอสงลอคไปทใด ในทนก าหนดเปน ไฟลในต าแหนง “/var/log/server/event_192.168.200.1.log” ถาไมมมนจะสรางขนมาใหเอง ในการประกาศท filter <variable name > จะเปนการประกาศวาตวแปรทชอ “f_192.168.200.1” ตองการฟวเตอรเฉพาะโฮสทมไอพเปน “192.168.200.1” เปนการก าหนดวาเฉพาะลอคทเปนหรอทมาจากเครองทก าหนดเทานนถงจะมการเขยนลงสลอค ในการประกาศ log จะเปนการน าเอาขอก าหนดทเปนทง destination,filter,source เพอน ามาสรางลอคไฟลตามทก าหนด มขอสงเกตวาถาไมมการใชงานตวแปรนกฎทงหมดจะไมถกน าไปใชงาน ใหท าการ restart syslog-ng อกครง แลวใหท าการตรวจสอบต าแหนงของการเกบลอคไฟลท “/var/log/server/” โดยในตอนแรกทยงไมมลอคเขามาจะไมปรากฏไฟล “event_192.168.200.1.log” นเลย เมอใดกตามทมลอคเขามาไฟลนกจะปรากฏขนมาซงสามารถตรวจสอบการท างานโดยใชค าสง “tail –f /var/log/server/event_192.168.200.1.log” สมมตวาเครองวนโดวไดตดตง mysql Server ใหท าการ stop แลวท าการ start ขนมาอกครง จะมลอดมาปรากฏขนคลายๆ ดงน Jun 4 27:22: 10 192.168.200.1 NT: <MySQL;W100;> Server variable data_file_path of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag For more information, see Help and Support Center at http://www.mysql.com.
กรรม
กรไอ
ท
บานส
งชน
13 รม
นาเจา
พระยา
Jun 4 22:27:10 192.168.200.1 NT: <MySQL;W100;> Server variable data_home_dir of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag For more information, see Help and Support Center at http://www.mysql.com. Jun 4 22:27:10 192.168.200.1 NT: <MySQL;W100;> Server variable flush_method of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag For more information, see Help and Support Center at http://www.mysql.com. Jun 4 22:27:10 192.168.200.1 NT: <MySQL;W100;> Server variable log_arch_dir of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag For more information, see Help and Support Center at http://www.mysql.com. Jun 4 22:27:10 192.168.200.1 NT: <MySQL;W100;> Server variable log_group_home_dir of plugin InnoDB was forced to be read-only: string variable without update_func and PLUGIN_VAR_MEMALLOC flag For more information, see Help and Support Center at http://www.mysql.com. Jun 4 22:27:12 192.168.200.1 NT: <MySQL;I100;> C:\MySQL\MySQL Server 5.1\bin\mysqld-nt: ready for connections. Version: '5.1.19-beta-community-nt-debug' socket: '' port: 3306 MySQL Community Server (GPL) For more information, see Help and Support Center at http://www.mysql.com. Jun 4 22:27:24 192.168.200.1 NT: <MySQL;I100;> C:\MySQL\MySQL Server 5.1\bin\mysqld-nt: Normal shutdown For more information, see Help and Support Center at http://www.mysql.com. Jun 4 22:27:27 192.168.200.1 NT: <MySQL;I100;> C:\MySQL\MySQL Server 5.1\bin\mysqld-nt: Shutdown complete For more information, see Help and Support Center at http://www.mysql.com. เปนอนกระบวนการรบลอคจากวนโดวประสบความส าเรจ โดยขอมลทงหมดจะถกเกบลงสไฟลทเราก าหนด วธการในการเกบลอกไฟลตางๆ เราควรท าการแยกเกบในแตละอปกรณแยกเปนไฟลทแตกตางกน เชน ไฟล A เกบลอกทมาจากเซอรเวอร A ซงจะท าใหงายตอการตรวจสอบตามอปกรณ ส าหรบในกรณทเราตองการใหใหเกบลงฐานขอมลดวยแลวสามารถแสดงผลเปนเวบเพอตดตามลอก ตาง ๆ ผานทางเวบบราวเซอรได ในทนเราจะใชความสามารถของ php-syslog-ng ซงเปน open source ทพฒนาดวยภาษา PHP
ท าการทดสอบดวยการ Login เขาส mysql ดวยค าสง comsec@mail:~/php-syslog-ng/html/install/sql$ mysql -u root -p Enter password: ท าการกรอกรหสผานของ root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 177648 Server version: 5.0.51a-3ubuntu5.1 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | cacti | | mysql | | syslogdb | +--------------------+ 4 rows in set (0.11 sec) mysql> use syslogdb Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +--------------------+ | Tables_in_syslogdb | +--------------------+ | actions |
กรรม
กรไอ
ท
บานส
งชน
13 รม
นาเจา
พระยา
| cemdb | | logs | | search_cache | | user_access | | users | +--------------------+ 6 rows in set (0.00 sec) mysql> select count(*) from logs; +----------+ | count(*) | +----------+ | 3 | +----------+ 1 row in set (0.00 sec) ท าการก าหนด ผมสทธ เขาใชงาน Database ทชอ syslogdb User:: syslogadmin Pass:: syslogadminpassword mysql> grant all on syslogdb.* to “syslogadmin”@”localhost” identified by "syslogadminpassword"; Query OK, 0 rows affected (0.16 sec) mysql> flush privileges; ท าการ Refresh การเปลยนแปลงทเกดขน Query OK, 0 rows affected (0.04 sec) มาถงขนตอนน Mysql กพรอมแลวส าหรบรองรบการเกบ log แลว ขนตอนถดมากคอ ท าการปรบแตง syslog-ng ใหเขยน log ลงส Database ซงจะม script config ของ syslog-ng รองรบไวอยแลวเราสามารน าใชงานไดทนท แตเนองจากเราไดท าการ config ไปบางสวนแลว เราจะเอาเฉพาะบางสวนทจะถกน ามาใชงานในทนเทานน comsec@mail:~$ cd php-syslog-ng/scripts/ comsec@mail:~/php-syslog-ng/scripts$ nano syslog-ng.conf
แสดงวา syslog-ng พรอมรองรบการท างานแลว ถาเกดความผดพลาดขนใหท าการ ตรวจสอบ ไฟล syslog-ng.conf อกครงหนง ท าการตรวจสอบโดยการ login เขาใชงาน MySQL อกครง ดงน comsec@mail:~/php-syslog-ng/scripts$ mysql -u root -p Enter password: ท าการกรอกรหสผานของ root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 310904 Server version: 5.0.51a-3ubuntu5.1 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use syslogdb; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select count(*) from logs; +----------+ | count(*) | +----------+ | 18 | +----------+ 1 row in set (0.00 sec) จากขนตอนนทงเวลาไวสกพกหนงแลว query อกครง จะปรากฏจ านวน Log ทเพมขนมา mysql> select count(*) from logs; +----------+ | count(*) | +----------+
กรรม
กรไอ
ท
บานส
งชน
13 รม
นาเจา
พระยา
| 28 | +----------+ 1 row in set (0.00 sec) mysql> ณ ตอนน เรากสามารถน า log มาเกบลงส Databases ไดแลว ขนตอนตอไปจะเปนการ config เพอ สรางหนา web interface เพอท าการตรวจสอบ log ผาน หนา browser ได ท าการแกไขไฟล config ของ apache โดยต าแหนงของ Directory ทจะท าการตดตง ดงน /home/comsec/php-syslog-ng/html/ comsec@mail:~/php-syslog-ng/html$ sudo nano /etc/apache2/sites-available/default ท าการเพม คาเหลานไปททายไฟล Alias /syslog-ng/ "/home/comsec/php-syslog-ng/html/" <Directory "/home/comsec/php-syslog-ng/html"> AllowOverride None Options None Order allow,deny Allow from all </Directory> ท าการ restart apache ดวยค าสง comsec@mail:~/php-syslog-ng/html$ sudo /etc/init.d/apache2 restart * Restarting web server apache2 ...done.
สวนของการปรบแตงให php-syslog-ng สามารถเชอมตอกบ MYSQL ไดจะตองใชงานตวแปรทจ าเปนคอ ไอพของเครองทตดตง MySQL โดย default จะเปน localhost MySQL username/MySQL password จะเปนรหสของ user บน Mysql ทมสทธในการสราง Databases,tables โดยทวไปจะก าหนดเปน user ทเปน root MySQL Database Name จะเปนชอของ database ทจะใชในการเกบขอมล ในทนเราใชเปน syslogdb MySQL Port เปน พอรตท mysql ใชในการสรางการเชอมตอโดยทวไปจะเปน 3306 Syslog User name/password เปน user ทใชในการเขาใชงาน ฐานขอมลแบบอานขอมลไดอยางเดยว Syslog Admin name/password เปน user ทใชในการเขาใชงาน ฐานขอมลแบบสามารถเขยนได Install the sample unless Drop existing Table ท าการลบตารางกอนทจะมการตดตงฐานขอมล syslog Back Old Table จะท าการBackup ตารางเกากอนทจะมการตดตงฐานขอมล syslog Install Sample Data หลงจากตดตงฐานขอมลและตารางของ syslog แลวจะมการลงตวอยางขอมลในตาราง
โดยการท างานจะตองมการ Config Service Syslogd ของ CentOS ใหรองรบการสง log ไปยง Syslog-ng Server โดยต าแหนงของไฟล config ไดแสดงดงรปดานบนแลว ทางดาน Syslogd จะมการ config ดงน [root@localhost ~]# nano /etc/syslog.conf # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log anything (except mail) of level info or higher.
UDP:514
/etc/syslog.conf
Syslogd
CentOS
Syslog-ng
Ubuntu Server
/etc/syslog-ng/syslog-ng.conf
กรรม
กรไอ
ท
บานส
งชน
13 รม
นาเจา
พระยา
# Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg * # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log # Send all log to Centralize log Server *.* @192.168.200.2 // จะท าการสงทกๆ facility ไปยง log server โดยรปแบบของการสง log นน จะใชเครองหมาย “@” ตามดวยไอพ หรอ ชอของเครอง เชน *.* @192.168.200.2 *.* @centrallog.itlabours.com ท าการ Restart Syslogd ดวยค าสง [root@localhost ~]# /etc/init.d/syslog restart Shutting down kernel logger: [ OK ] Shutting down system logger: [ OK ]