大綱:php
1、簡介html
2、存儲日誌到遠程數據庫前端
3、LogAnalyzer日誌分析工具mysql
4、Rsyslog傳輸應用程序日誌linux
5、Rsyslog記錄用戶操做sql
1、簡介數據庫
一、概要vim
Rsyslog是一個快速的日誌處理系統;提供高性能,安全性高和模塊化的設計,它能接收各類各樣的輸入並輸出到不一樣的目的地,處理速度超級快。瀏覽器
二、新功能安全
Multi-threading #多線程 TCP, SSL, TLS, RELP #支持的協議 MySQL, PostgreSQL, Oracle and more #支持數據庫的類型 Filter any part of syslog message #強大的過濾器,可實現過濾系統信息中的任意部分 Fully configurable output format #自定義輸出格式 Suitable for enterprise-class relay chains #適用於企業級別日誌記錄需求
三、優點
(1)日誌統一,集中式管理; (2)日誌實時傳送到一個更加安全的遠端服務器上,真正記錄用戶行爲,使日誌的2次更改可能性大大下降,從而可以對日誌進行真實回放,便於問題追蹤。
四、核心組成
rsyslog有三部分組成:facility(設施),priority(級別),Target(路徑)
facility: 設施,從功能或程序上對日誌進行分類,並由專門的工具(facility)負責記錄相應的日誌信息;
auth:認證相關 authpriv:認證權限相關 cron:計劃任務相關 daemon:守護進程相關 kern:內核相關 lpr:打印相關 mail:郵件相關 mark:防火牆標記 news:新聞信息 security:安全相關 syslog:自身日誌 user:用戶相關 uucp:Unix to Unix copy,早期系統文件共享服務 local0 - local7:用戶自定義facility
priority: 級別
debug:調試 info:除debug外的全部信息 notice:注意 warn, warning:警告 err, error:錯誤信息 crit:藍色警報 alert:橙色警報 emerg, panic:紅色警報 指定級別的方式: *: 全部級別 none: 沒有級別 priority: 比此級別高的(包含)全部級別的日誌信息都會記錄 =priority: 僅記錄指定級別
Target:路徑
文件路徑:將日誌記錄於指定的文件中;在文件路徑以前使用"-",表示異步寫入; 用戶:將日誌信息通知給文件 *: 全部用戶 日誌服務器:@SERVER 管道:| COMMAND
五、參考文檔
Rsyslog doc:http://www.rsyslog.com/doc/v8-stable/ redhat doc:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/s1-basic_configuration_of_rsyslog.html Other:http://xmodulo.com/configure-syslog-server-linux.html
2、存儲日誌到遠程數據庫
一、主機地址分配
Rsyslog :192.168.1.106 Client :192.168.1.109 Rsyslog中心日誌服務器,負責接收其它Client傳輸到Rsyslog的日誌信息,並將其傳輸到本地的MySQL數據庫中。
二、Rsyslog操做
rsyslog-mysql:rsyslog鏈接mysql的驅動包模塊。 # yum -y install mysql mysql-server rsyslog-mysql 查看rsyslog-mysql安裝了哪些文件 # rpm -ql rsyslog-mysql /lib64/rsyslog/ommysql.so //om表明輸出模塊im表明輸入模塊 /usr/share/doc/rsyslog-mysql-5.8.10 /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql #數據庫初始化腳本,表結構 # service mysqld start # mysql < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql # mysql -e 'USE Syslog;show tables;' +------------------------+ | Tables_in_Syslog | +------------------------+ | SystemEvents | | SystemEventsProperties | +------------------------+ # mysql -e 'USE Syslog;SELECT * FROM SystemEvents;' # mysql -e 'USE Syslog;SELECT * FROM SystemEventsProperties;' 以上兩條命令的返回值都爲空,表示表中無內容。 # mysql -e "grant all privileges on Syslog.* to 'rsysloguser'@'192.168.1.%' identified by 'rsyslogpass';flush privileges;" 修改Rsyslog.conf文件 # vim /etc/rsyslog.conf $ModLoad imudp #經過UDP的514端口蒐集日誌信息,即將本身當作日誌服務器 $UDPServerRun 514 $ModLoad imtcp #經過TCP的514端口蒐集日誌信息,即將本身當作日誌服務器 $InputTCPServerRun 514 $ModLoad ommysql #裝載mysql模塊 *.info;mail.none;authpriv.none;cron.none :ommysql:192.168.1.106,Syslog,rsysloguser,rsyslogpass # service rsyslog restart
三、Client操做
# vim /etc/rsyslog.conf *.info;mail.none;authpriv.none;cron.none @192.168.1.106:514 #指定Rsyslog日誌服務器的地址 # service rsyslog restart
四、測試
在Client上手動向/var/log/messages文件中寫入一條信息,這裏用logger命令 # logger -t dhcp "zhengyansheng's log"
你會發現Rsyslog上的/var/log/messages文件中也有一樣的一條記錄信息而且數據庫中也有記錄。
[root@Rsyslog ~]# tail -f /var/log/messages Oct 10 05:52:35 localhost dhcp: zhengyansheng's log
3、LogAnalyzer日誌分析工具
一、簡介
LogAnalyzer是一款syslog日誌和其餘網絡事件數據的Web前端,它提供了對日誌的簡單瀏覽、搜索、基本分析和一些圖表報告的功能。
二、安裝lamp環境
# yum -y install httpd php php-mysql php-gd # service httpd start
三、安裝loganalyzer
# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.5.tar.gz # tar zxf loganalyzer-3.6.5.tar.gz # mv loganalyzer-3.6.5/src /var/www/html/loganalyzer # cd /var/www/html/loganalyzer/ # touch config.php # chmod 666 config.php
四、瀏覽器訪問loganalyzer
http://192.168.1.102/loganalyzer/install.php
loganalyzer的安裝能夠參考此篇文章:http://tecadmin.net/setup-loganalyzer-with-rsyslog-and-mysql/
4、Rsyslog傳輸應用程序日誌(補充)
一、修改rsyslog.conf添加imfile模塊
# vim /etc/rsyslog.conf $ModLoad imfile $InputFileName /var/log/httpd/access_log $InputFileTag packetfence: $InputFileStateFile stat-packetfence $InputFileSeverity info $InputFileFacility local5 $InputFilePollInterval 1 $InputFilePersistStateInterval 1 $InputRunFileMonitor local5.* @192.168.1.106:514 File [/path/to/file] 被監控的文件必須是一個絕對路徑 Tag [tag:] 用於文件消息標記會記錄到日誌標籤上 Facility [facility] 設施:好比local1,local2,localN;默認是local0 Severity [syslogSeverity] 級別:好比info,warning...默認是notice PersistStateInterval [lines] 被用來控制狀態文件的持久化頻率,測試階段,能夠把它設置的小點兒,正式階段,出於效率的考慮,能夠把它調大點兒,可是相應的也會出現丟失數據的潛在風險, 具體設置多少合適須要結合本身的狀況來斟酌。
二、Apache日誌存儲到數據庫的展現
*************************** 69. row *************************** ID: 69 CustomerID: NULL ReceivedAt: 2015-10-10 19:52:47 DeviceReportedTime: 2015-10-10 19:52:47 Facility: 21 Priority: 6 FromHost: localhost Message: 192.168.1.101 - - [10/Oct/2015:19:52:39 -0400] "GET /icons/poweredby.png HTTP/1.1" 304 - "http://192.168.1.109/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1653.0 Safari/537.36" NTSeverity: NULL Importance: NULL EventSource: NULL EventUser: NULL EventCategory: NULL EventID: NULL EventBinaryData: NULL MaxAvailable: NULL CurrUsage: NULL MinUsage: NULL MaxUsage: NULL InfoUnitID: 1 SysLogTag: packetfence: //此處就是那個tag標籤 EventLogType: NULL GenericFileName: NULL SystemID: NULL
5、Rsyslog記錄用戶操做
在Client上執行如下操做,會記錄用戶在命令行執行的全部命令記錄 # vim /etc/bashrc export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }' # source /etc/bashrc
*************************** 74. row *************************** ID: 74 CustomerID: NULL ReceivedAt: 2015-10-10 21:06:59 DeviceReportedTime: 2015-10-10 21:06:59 Facility: 1 Priority: 5 FromHost: localhost Message: [euid=root]:root pts/1 2015-10-10 19:51 (192.168.1.101):[/root]history NTSeverity: NULL Importance: NULL EventSource: NULL EventUser: NULL EventCategory: NULL EventID: NULL EventBinaryData: NULL MaxAvailable: NULL CurrUsage: NULL MinUsage: NULL MaxUsage: NULL InfoUnitID: 1 SysLogTag: root: EventLogType: NULL GenericFileName: NULL SystemID: NULL
>>>>>知識點補充<<<<<
#Rsyslog支持tcp和udp的傳輸方式 *.* @@192.168.1.106:514 #經過tcp傳 *.* @192.168.1.106:514 #經過udp傳 #上面的實驗是Client經過tcp的方式傳輸到Rsyslog服務器的日誌文件中,而後又轉儲到數據庫當中,若是感受這裏沒有必要的話,其實Client能夠直接存儲到遠程的數據庫當中。操做以下 修改Client操做 # vim /etc/rsyslog.conf $ModLoad ommysql *.info;mail.none;authpriv.none;cron.none :ommysql:192.168.1.102,Syslog,rsysloguser,rsyslogpass 以上操做便可 這裏我在解釋下*.info;mail.none;authpriv.none;cron.none表示什麼意思? 除mail、authpriv和cron以外的日誌而且級別爲info或者比info更高的都會被髮送到遠程192.168.1.102的數據庫當中,後面是數據庫的用戶名和密碼。
Rsyslog的imfile模塊能夠參考文檔:http://www.rsyslog.com/doc/v8-stable/configuration/modules/imfile.html
Rsyslog配置文件參考:http://qinyinbolan.blog.51cto.com/4359507/1347383