簡易部署Rsyslog和LogAnalyzer

大綱: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

wKiom1YYcWWCcaQaAALN0CsPQqo470.jpg


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

wKioL1YYcf3QKI1CAANhsPkhs70638.jpg

wKiom1YYcePBdiT5AAOhjfclcNM744.jpg

wKioL1YYcf6AIjd2AAUGcAD3rvE168.jpg

wKiom1YYceSjFL8cAAQYL8YKJr8666.jpg

wKioL1YYcf6jvP9RAAOXkga5Uas340.jpg

wKiom1YYceTAJWJ0AAQSpK8Rfd0914.jpg

wKioL1YYcf7CX-iXAASNxzQeScg002.jpg

wKiom1YYceWx3fS5AANIRsM1Oxk863.jpg

wKioL1YYcf_iipQrAAsP5Ve5ysA533.jpg


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

相關文章
相關標籤/搜索