rsyslog的介紹
logrotate日誌滾動的介紹
rsyslog的存儲途徑
基於web的loganalyzer日誌分析工具的搭建
======================================================
一、rsyslog的介紹
Linux的日誌記錄了用戶在系統上一切操作,看日誌去分析系統的狀態是運維人員必須掌握的基本功。
rsyslog日誌服務器的優勢:
1、日誌統一,集中式管理
2、日誌實時傳送到一個更加安全的遠端服務器上,真正記錄用戶行爲,使日誌的2次更改可能性大大降低,從而能夠對日誌進行真實回放,便於問題追蹤。
rsyslog的新功能:
rsyslog是一個加強版的syslog,具有各種各樣的新功能,典型的有:
1、直接將日誌寫入到數據庫。
2、日誌隊列(內存隊列和磁盤隊列)。
3、靈活的模板機制,可以得到多種輸出格式。
4、插件式結構,多種多樣的輸入、輸出模塊。
5、可以把日誌存放在Mysql ,PostgreSQL,Oracle等數據庫中
rsyslog的軟件包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | [root@jie1 ~]# rpm -qa | grep rsyslog rsyslog-5.8.10-6.el6.x86_64 #軟件包系統默認已經安裝 [root@jie1 ~]# rpm -ql rsyslog #只顯示了部分信息 /etc/logrotate.d/syslog /etc/rsyslog.conf #rsyslog的配置文件 /etc/sysconfig/rsyslog /lib64/rsyslog/imfile.so /lib64/rsyslog/imklog.so #rsyslog的模塊,i開頭的是輸入模塊 /lib64/rsyslog/immark.so /lib64/rsyslog/impstats.so /lib64/rsyslog/imptcp.so /lib64/rsyslog/imtcp.so /lib64/rsyslog/imudp.so /lib64/rsyslog/imuxsock.so /lib64/rsyslog/lmnet.so /lib64/rsyslog/lmnetstrms.so /lib64/rsyslog/lmnsd_ptcp.so /lib64/rsyslog/lmregexp.so /lib64/rsyslog/lmstrmsrv.so /lib64/rsyslog/lmtcpclt.so /lib64/rsyslog/lmtcpsrv.so /lib64/rsyslog/lmzlibw.so /lib64/rsyslog/ommail.so #o開頭的模塊是輸出模塊 /lib64/rsyslog/omprog.so /lib64/rsyslog/omruleset.so /lib64/rsyslog/omtesting.so /lib64/rsyslog/omuxsock.so /lib64/rsyslog/pmlastmsg.so |
rsyslog配置文件(/etc/rsyslog.conf)的詳解
1 2 3 4 5 6 7 8 | #### MODULES 日誌的模塊#### $ModLoad imuxsock #imuxsock是模塊名,支持本地系統日誌的模塊 $ModLoad imklog #imklog是模塊名, 支持內核日誌的模塊 #$ModLoad immark #immark是模塊名,支持日誌標記 #$ModLoad imudp #imupd是模塊名,支持udp協議 #$UDPServerRun 514 #允許514端口接收使用UDP和TCP協議轉發過來的日誌 #$ModLoad imtcp #imtcp是模塊名,支持tcp協議 #$InputTCPServerRun 514 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #### GLOBAL DIRECTIVES ####定義全局日誌格式的指令 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定義日誌格式默認模板 $IncludeConfig /etc/rsyslog.d/*.conf #載入rsyslog.d文件中所有以conf結尾的文件 #### RULES #### *.info;mail.none;authpriv.none;cron.none /var/log/messages #####記錄所有日誌類型的info級別以及大於info級別的信息到/var/log/messages,但是mail郵件信息,authpriv驗證方面的信息和cron時間#任務相關的信息除外 authpriv.* /var/log/secure #####authpriv驗證相關的所有信息存放在/var/log/secure mail.* -/var/log/maillog #####郵件的所有信息存放在/var/log/maillog; 這裏有一個-符號, 表示是使用異步的方式記錄, 因爲日誌一般會比較大 cron.* /var/log/cron ####計劃任務有關的信息存放在/var/log/cron *.emerg * (*表示所有用戶) ###記錄所有的大於等於emerg級別信息, 以wall方式發送給每個登錄到系統的人 uucp,news.crit /var/log/spooler ####記錄uucp,news.crit等存放在/var/log/spooler local7.* /var/log/boot.log ####本地服務器的啓動的所有日誌存放在/var/log/boot.log中 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | ###rsyslog.conf中日誌規則的定義的格式 facitlity.priority Target #facility: 日誌設備(可以理解爲日誌類型): ============================================================== auth #pam產生的日誌,認證日誌 authpriv #ssh,ftp等登錄信息的驗證信息,認證授權認證 cron #時間任務相關 kern #內核 lpr #打印 mail #郵件 mark(syslog) #rsyslog服務內部的信息,時間標識 news #新聞組 user #用戶程序產生的相關信息 uucp #unix to unix copy, unix主機之間相關的通訊 local 1~7 #自定義的日誌設備 =============================================================== #priority: 級別日誌級別: ===================================================================== debug #有調式信息的,日誌信息最多 info #一般信息的日誌,最常用 notice #最具有重要性的普通條件的信息 warning, warn #警告級別 err, error #錯誤級別,阻止某個功能或者模塊不能正常工作的信息 crit #嚴重級別,阻止整個系統或者整個軟件不能正常工作的信息 alert #需要立刻修改的信息 emerg, panic #內核崩潰等嚴重信息 ###從上到下,級別從低到高,記錄的信息越來越少,如果設置的日誌內性爲err,則日誌不會記錄比err級別低的日誌,只會記錄比err更高級別的日誌,也包括err本身的日誌。 ===================================================================== Target: #文件, 如/var/log/messages #用戶, root,*(表示所有用戶) #日誌服務器,@172.16.22.1 #管道 | COMMAND |
二、logrotate日誌滾動的介紹
所有的日誌文件都會隨着時間的推移和訪問次數的增加而迅速增長,因此必須對日誌文件進行定期清理以免造成磁盤空間的不必要的浪費,同時也加快了管理員查看日誌所用的時間。因而logrotate就非常有存在的必要了,Redhat系統中已經默然安裝logrotate且利用logrotate設置了相關對rsyslog日誌迅速增長的設置。
logrotate的執行由crond服務實現。在/etc/cron.daily目錄中,有個文logrotate,它實際上是個shell script,用來啓動logrotate。
logrotate程序每天由cron在指定的時間(/etc/crontab)啓動。
logrotate的軟件包
1 2 3 4 5 6 7 8 9 10 11 12 13 | [root@jie1 ~]# rpm -qa | grep logrotate logrotate-3.7.8-16.el6.x86_64 #日誌回滾的軟件包默認已經安裝 [root@jie1 ~]# rpm -ql logrotate /etc/cron.daily/logrotate /etc/logrotate.conf #日誌回滾的配置文件 /etc/logrotate.d #日誌回滾的子目錄 /usr/sbin/logrotate /usr/share/doc/logrotate-3.7.8 /usr/share/doc/logrotate-3.7.8/CHANGES /usr/share/doc/logrotate-3.7.8/COPYING /usr/share/man/man5/logrotate.conf.5.gz /usr/share/man/man8/logrotate.8.gz /var/lib/logrotate.status |
logrotate的配置文件(/etc/logrotate.conf)詳解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | [root@jie1 ~]# sed -e '/^#/d' -e '/^$/d' /etc/logrotate.conf weekly #每週清理一次日誌文件 rotate 4 #保存四個輪換日誌 create #清除舊日誌的同時,創建新的空日誌文件 dateext #使用日期爲後綴的回滾文件 #可以去/var/log目錄下看看 include /etc/logrotate.d #包含/etc/logrotate.d目錄下的所有配置文件 /var/log/wtmp { #對/var/log/wtmp這個日誌文件按照下面的設定日誌回滾 monthly #每月輪轉一次 create 0664 root utmp #設置wtmp這個日誌文件的權限,屬主,屬組 minsize 1M #日誌文件必須大於1M纔會去輪換(回滾) rotate 1 #保存一個輪換日誌 } /var/log/btmp { missingok #如果文件丟失不報錯 monthly create 0600 root utmp rotate 1 } [root@jie1 ~]# cat /etc/logrotate.d/syslog /var/log/cron #這些文件是rsyslog.conf文件中全局配置定義中指定的Target的路徑 /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { sharedscripts postrotate # 輪換之後重啓rsyslog服務 /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript } |
三、rsyslog的存儲途徑
a)日誌存儲在指定的文件中
1 2 3 4 5 6 7 8 9 10 11 12 13 | [root@jie1 ~]# vim /etc/rsyslog.conf ############vim /etc/rsyslog.conf################################ #====註釋掉兩行,然後添加一行 #*.info;mail.none;authpriv.none;cron.none /var/log/messages *.* /systemlog/jie.log #authpriv.* /var/log/secure ################################################################# #*.info;mail.none;authpriv.none;cron.none /var/log/messages ===#這行表示,所有facitlity(設施)的info消息記錄,及info級別以上的記錄都會保存到 /var/log/messages文件中,除了郵件的所有信息,認證授權的所有信息,計劃任務的所有信息。 #authpriv.* /var/log/secure ===#這行表示認證授權的所有信息,都會保存在/var/log/secure文件中 *.* /systemlog/jie.log ===#添加的這行表示所有設施的所有信息都會保存在 /systemlog/jie.log文件中,而且此文件不必自己創建,啓動rsyslog服務時系統會自動創建,而且權限都是600 |
174351509.png (46.47 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
174820504.png (33.4 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
b)日誌存儲在指定的rsyslog服務器中
122859230.png (23.39 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
rsyslog客戶端的配置:
1 2 3 4 5 6 7 8 9 | [root@jie3 ~]# vim /etc/rsyslog.conf #############/etc/rsyslog.conf########################################### #*.info;mail.none;authpriv.none;cron.none /var/log/messages *.* @172.16.22.1 #添加此行,註釋掉其他兩行 #authpriv.* /var/log/secure ######################################################################## [root@jie3 ~]# service rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ] |
rsyslog服務器的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [root@jie1 ~]# grep -v "^#" /etc/rsyslog.conf | grep -v "^$" ######修改配置文件只需開啓兩個模塊和協議支持的端口 $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imklog # provides kernel logging support (previously done by rklogd) $ModLoad imudp #開啓支持upd的模塊 $UDPServerRun 514 #允許接收udp 514的端口傳來的日誌 ModLoad imtcp #開啓支持tcp的模塊 $InputTCPServerRun 514 #允許接收tcp 514的端口傳來的日誌 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $IncludeConfig /etc/rsyslog.d/*.conf *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg * uucp,news.crit /var/log/spooler local7.* /var/log/boot.log $template SpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%" :programname, startswith, "spice-vdagent" /var/log/spice-vdagent.log;SpiceTmpl ################################# [root@jie1 ~]# service rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ] [root@jie1 ~]# |
185051193.png (43.28 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
185123170.png (37.69 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
c)日誌存儲在指定的數據庫服務器中
122921370.png (31.3 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
思路:
1、安裝mysql服務器,且要安裝rsyslog連接mysql的驅動
2、解決生成rsyslog服務器的日誌特定的格式,
3、在rsyslog配置文件中加載連接mysql的模塊,把日誌存儲到mysql中
rsyslog+Mysql服務器端的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | [root@jie1 log]# yum -y install mysql-server rsyslog-mysql mysql #安裝mysql服務器和rsyslog連接mysql的驅動 [root@jie1 ~]# rpm -ql rsyslog-mysql #查看rsyslog-mysql安裝生成了那些文件 /lib64/rsyslog/ommysql.so /usr/share/doc/rsyslog-mysql-5.8.10 /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql [root@jie1 ~]# service mysqld start Starting mysqld: [ OK ] [root@jie1 ~]# mysqladmin -u root password redhat #設置mysql的密碼 [root@jie1 ~]# mysql -u root -p Enter password: #登錄mysql服務器 mysql> show databases; #顯示數據庫服務器中沒有日誌的數據庫 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec) mysql> q Bye [root@jie1 ~]# cd /usr/share/doc/rsyslog-mysql-5.8.10/ #日誌文件sql腳本的路徑 [root@jie1 rsyslog-mysql-5.8.10]# ls createDB.sql [root@jie1 rsyslog-mysql-5.8.10]# mysql -u root -p < createDB.sql Enter password: #導入日誌文件的sql腳本,生成日誌文件的數據庫 [root@jie1 rsyslog-mysql-5.8.10]# mysql -u root -p Enter password: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | Syslog | | mysql | | test | +--------------------+ 4 rows in set (0.01 sec) mysql> use Syslog; #Syslog即是記錄日誌文件的數據庫 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_Syslog | +------------------------+ | SystemEvents | | SystemEventsProperties | +------------------------+ 2 rows in set (0.00 sec) mysql> grant all on Syslog.* to 'syslogroot'@'127.0.0.1' identified by 'syslogpass'; #設置用戶訪問數據庫服務器中Syslog數據庫的用戶名和密碼 Query OK, 0 rows affected (0.00 sec) mysql> grant all on Syslog.* to 'syslogroot'@'172.16.22.1' identified by 'syslogpass'; Query OK, 0 rows affected (0.04 sec) mysql> flush privileges; #重讀授權表,及時生效 Query OK, 0 rows affected (0.00 sec) mysql> q Bye [root@jie1 rsyslog-mysql-5.8.10]#cd / [root@jie1 /]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#" #####vim /etc/ryslog.conf##################################### $ModLoad imuxsock $ModLoad imklog $ModLoad imudp #加載udp的模塊 $UDPServerRun 514 #允許接收udp 514的端口傳來的日誌 $ModLoad imtcp #加載tcp的模塊 $InputTCPServerRun 514 #允許接收tcp 514的端口傳來的日誌 $ModLoad ommysql #加載mysql的模塊 $ActionFileDefaultTemplateRSYSLOG_TraditionalFileFormat $IncludeConfig /etc/rsyslog.d/*.conf *.* :ommysql:172.16.22.1,Syslog,syslogroot,syslogpass #添加這行,把其他行都註釋掉,這行表示把所有的設施的所有日誌都記錄到數據庫服務器中的Syslog數據庫中,以syslogroot用戶,syslogpass密碼訪問數據庫 local7.* /var/log/boot.log $template SpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%" :programname, startswith, "spice-vdagent" /var/log/spice-vdagent.log;SpiceTmpl ###################################################################### [root@jie1 /]# service rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ] |
rsyslog客戶端的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@jie3 ~]# sed -e '/^$/d' -e '/^#/d' /etc/rsyslog.conf ################ /etc/rsyslog.conf###################### $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imklog # provides kernel logging support (previously done by rklogd) $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $IncludeConfig /etc/rsyslog.d/*.conf *.* @172.16.22.1 #添加這行用於和服務器通信 *.* :ommysql:172.16.22.1,Syslog,syslogroot,syslogpass #添加這行,把其他行都註釋掉,這行表示把所有的設施的所有日誌都記錄到數據庫服務器中的Syslog數據庫中,以syslogroot用戶,syslogpass密碼訪問數據庫 $template SpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%" :programname, startswith, "spice-vdagent" /var/log/spice-vdagent.log;SpiceTmpl #################################################################### [root@jie3 ~]# service rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ] |
驗證客戶端的日誌文件存放位置:
1)驗證是否存放在客戶端本地
130845491.png (26.46 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
2)驗證是否存在服務器的/var/log/messages裏面
130918721.png (33.47 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
3)驗證是否存放在服務器的mysql數據庫中
130938499.png (31.86 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
雖然日誌存放在mysql數據庫服務器中,是解決了日誌集中管理,但是存放在mysql服務器中讓管理人員頭疼的是不便於查看這些大量的日誌,於是乎搭建一個日誌分析工具就非常的有必要性了。
四、基於web的loganalyzer日誌分析工具的搭建
本環境是針對上面的日誌存放在mysql服務器中不方便查看,配置loganalyzer日誌分析工具來分析查看日誌
rsyslog服務器的配置步驟:
1、安裝httpd,php,php-gd,php-mysql
httpd用來提供web服務
php使apache支持php,因爲loganalyzer是用php編寫
php-mysql用於loganalyzer連接數據庫
php-gd用於繪圖
1 2 3 4 | [root@jie1 ~]# yum -y install httpd php php-mysql php-gd [root@jie1 ~]# mkdir -pv /web/loganalyzer #存放loganalyzer的網頁文件 mkdir: created directory `/web' mkdir: created directory `/web/loganalyzer' |
2、下載loganalyzer源碼包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@jie1 ~]# ls anaconda-ks.cfg install.log install.log.syslog loganalyzer-3.6.4.tar.gz [root@jie1 ~]# tar xf loganalyzer-3.6.4.tar.gz [root@jie1 ~]# ls anaconda-ks.cfg install.log.syslog loganalyzer-3.6.4.tar.gz install.log loganalyzer-3.6.4 [root@jie1 ~]# cd loganalyzer-3.6.4 [root@jie1 loganalyzer-3.6.4]# ls ChangeLog contrib COPYING doc INSTALL src [root@jie1 loganalyzer-3.6.4]# mv src/* /web/loganalyzer/ #把src目錄的所有文件移到存放loganalyzer的文件中 [root@jie1 loganalyzer-3.6.4]# cd contrib/ [root@jie1 contrib]# ls configure.sh secure.sh [root@jie1 contrib]# mv ./*.sh /web/loganalyzer/ #把腳本文件也移到loganalyzer文件中 |
3、執行腳本
1 2 | [root@jie1 contrib]#cd /web/loganalyzer/ [root@jie1 loganalyzer]# bash configure.sh |
4、修改httpd的配置文件,新建一個虛擬主機
1 2 3 4 5 6 7 8 9 10 | vim /etc/httpd/conf/httpd.conf ################## ServerName 172.16.22.1:80 DirectoryIndex index.php index.html index.html.var #DocumentRoot "/var/www/html" #註釋掉默認存放網頁文件的路徑 DocumentRoot /web/loganalyzer #指定存放loganalyzer網頁文件的路徑 ServerName www.jie.com ################# |
5、重啓服務,創建loganalyzer的數據庫,並授權
1 2 3 4 5 6 7 8 9 10 11 | [root@jie1 loganalyzer]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] [root@jie1 loganalyzer]# mysql -u root -p Enter password: mysql> create database loganalyzer; Query OK, 1 row affected (0.04 sec) mysql> grant all on loganalyzer.* to lyzeruser@'172.16.22.1' identified by 'lyzeruser'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) |
6、安裝loganalyzer
220052421.png (75.93 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
220109825.png (110.67 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
220131890.png (134.98 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
220152956.png (183.99 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
220213328.png (150.33 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
220231409.png (128.37 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
220245561.png (143.22 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
220302359.png (184.34 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer
220321966.png (131.75 KB, 下載次數: 0)
搭建Rsyslog日誌服務器和loganalyzer