日志總體來說是來記錄曆史事件的,記錄在過去一段事件系統的行為。将過去一段時間所發生的時間按時間序列記錄到指定的存儲結構中,記錄的主要内容有事件的來源、發生的時間、内容、事件的關鍵程度(日志級别)。例如:在作業系統中安裝和解除安裝過什麼軟體,這些操作會記錄下來。記錄日志的主要目的是在發生問題的時候,是解決問題的重合依據之一。
在Linux中,一般情況下會記錄系統程序(syslog)和核心事件(klogd)程序相關的日志。
rsyslog是CentOS6系列提供記錄日志的工具,具有如下特點:
支援多線程模式
支援像TCP,SSL,TLS,RELP等協定
可以将日志資訊記錄到像MySQL, PGSQL, Oracle等多種關系型資料中
強大的過濾器,可實作過濾系統資訊中的任意部分
自定義輸出格式
适用于企業級别日志記錄需求
auth
認證相關的
authpriv
認證授權相關的
cron
周期性計劃任務相關的
daemon
相關的
kern
lpr
列印相關的
mark
防火牆标記相關的
news
新聞討論區相關的(較早)
security
安全相關的,同auth
syslog
記錄日志工具自己的日志
user
使用者相關的
uucp
unix to unix copy,unix之間共享檔案的協定(較早)
local0-local7
使用者自定義的
*
表示所有
!
表示取反
稱之為級别,來定義日志的緊急程度。常見的有:
debug
調試資訊,最詳細的資訊
info
基本資訊
notice
通知資訊
warn warnning
警告資訊
err error
錯誤資訊
crit
藍色警戒資訊
alert
橙色警戒資訊
emerg panic
紅色警戒資訊
這裡的級别從上到下表示級别越高,危險程度也越高,像emer級别是系統可能已經挂掉了。這裡也可使用 *來表示所有級别,none: 沒有任何級别 。
target指的是日志存儲的位置,常見的有:
本地檔案路徑:例如/var/log/messages
使用者: *
日志伺服器:@SERVER_IP(使用UDP協定) @@SERVER_IP(使用TCP協定)
管道:|COMMAND
關系型資料庫: 例如: ommysql:localhost:Syslog:log:log(下面詳細介紹)
rsyslog的主配置檔案:/etc/rsyslog.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
31
32
<code>1、MODULES子產品,在這裡主要定義加載的子產品等資訊</code>
<code>#### MODULES ####</code>
<code># 例如:作為日志伺服器,使用udp/514作為監聽端口</code>
<code>$ModLoad imudp</code>
<code>$UDPServerRun 514</code>
<code>2、GLOBAL DIRECTIVES子產品,全局配置子產品,在這裡定義一些全局生效的屬性</code>
<code>#### GLOBAL DIRECTIVES ####</code>
<code># Use default timestamp format</code>
<code>$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat</code>
<code># File syncing capability is disabled by default. This feature is usually not required,</code>
<code># not useful and an extreme performance hit</code>
<code>#$ActionFileEnableSync on</code>
<code># Include all config files in /etc/rsyslog.d/</code>
<code>$IncludeConfig </code><code>/etc/rsyslog</code><code>.d/*.conf</code>
<code>3、定義日志規則</code>
<code>#### RULES ####</code>
<code># 其定義格式 :</code>
<code># facility.priority Target </code>
<code>mail.info </code><code>/var/log/maillog</code> <code># 比指定級别更高的所有級别,包括指定的級别本身; </code>
<code>mail.=info -</code><code>/var/log/maillog</code> <code># 明确指定級别,這裡的 - 表示異步寫入磁盤,不加預設同步寫入磁盤 </code>
<code>mail.!info * </code><code># 除了指定級别,通知所有的使用者</code>
<code>*.info @172.16.10.88 </code><code># 所有facility的info級别,将日志以udp通信方式記錄到172.16.10.88的日志伺服器上 </code>
<code>mail.*: :ommysql:localhost:Syslog:</code><code>ftp</code><code>:ftppass </code><code># mail的所有級别,記錄到mysql資料庫中,登陸賬号是:ftp@localhost -u ftp -p ftppass。資料庫名稱是Syslog</code>
<code>mail,news.info: </code><code># mail,news的info和更高的級别</code>
日志資訊格式:
<code># 時間 主機 程序(PID):事件 </code>
<code>Aug 7 02:32:14 server abrtd: Init complete, entering main loop</code>
<code>Aug 7 02:32:26 server kernel: readahead-collector: starting delayed service auditd</code>
實驗原理拓撲圖:
<a href="http://guoting.blog.51cto.com/attachment/201408/24/8886857_1408886035F8zG.jpg" target="_blank"></a>
<code>##########################實驗配置##########################################</code>
<code>###########################在172.16.10.9主機上###############################</code>
<code>vim </code><code>/etc/rsyslog</code><code>.conf 修改如下内容:</code>
<code>$ModLoad imtcp</code>
<code>$InputTCPServerRun 514</code>
<code>*.info;mail.none;authpriv.none;</code><code>cron</code><code>.none </code><code>/var/log/messages</code>
<code># 重新開機服務</code>
<code>service rsyslog restart</code>
<code>##########################################################################</code>
<code>###########################在172.16.10.1上################################</code>
<code>vim </code><code>/etc/rsyslog</code><code>.conf </code>
<code># 這裡将需要的日志發送到日志伺服器上</code>
<code>*.info;mail.none;authpriv.none;</code><code>cron</code><code>.none @@172.16.10.9</code>
<code>######################################################################</code>
測試結果:
<a href="http://guoting.blog.51cto.com/attachment/201408/24/8886857_1408886037MfkU.jpg" target="_blank"></a>
<a href="http://guoting.blog.51cto.com/attachment/201408/24/8886857_1408886039Pwa5.jpg" target="_blank"></a>
配置原理圖如下:
<a href="http://guoting.blog.51cto.com/attachment/201408/24/8886857_1408886042imSj.jpg" target="_blank"></a>
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
<code># 配置如下:</code>
<code>###########################################在172.16.10.9上##############################################</code>
<code>1、安裝rsyslog和mysql互動的軟體</code>
<code>yum </code><code>install</code> <code>rsyslog-mysql -y</code>
<code>2、搭建好lamp平台(這裡不再詳細介紹)</code>
<code>yum </code><code>install</code> <code>httpd mysql php mysql-server php-gd -y</code>
<code>3、導入rsyslog所用到的資料庫和表</code>
<code># 具體通過 rpm -ql rsyslog-mysql 檢視</code>
<code>mysql -u root -p < </code><code>/usr/share/doc/rsyslog-mysql-5</code><code>.8.10</code><code>/createDB</code><code>.sql</code>
<code>### createDB.sql内容如下:</code>
<code>CREATE DATABASE Syslog;</code>
<code>USE Syslog;</code>
<code>CREATE TABLE SystemEvents</code>
<code>(</code>
<code> </code><code>ID int unsigned not null auto_increment primary key,</code>
<code> </code><code>CustomerID bigint,</code>
<code> </code><code>ReceivedAt datetime NULL,</code>
<code> </code><code>DeviceReportedTime datetime NULL,</code>
<code> </code><code>Facility smallint NULL,</code>
<code> </code><code>Priority smallint NULL,</code>
<code> </code><code>FromHost varchar(60) NULL,</code>
<code> </code><code>Message text,</code>
<code> </code><code>NTSeverity int NULL,</code>
<code> </code><code>Importance int NULL,</code>
<code> </code><code>EventSource varchar(60),</code>
<code> </code><code>EventUser varchar(60) NULL,</code>
<code> </code><code>EventCategory int NULL,</code>
<code> </code><code>EventID int NULL,</code>
<code> </code><code>EventBinaryData text NULL,</code>
<code> </code><code>MaxAvailable int NULL,</code>
<code> </code><code>CurrUsage int NULL,</code>
<code> </code><code>MinUsage int NULL,</code>
<code> </code><code>MaxUsage int NULL,</code>
<code> </code><code>InfoUnitID int NULL ,</code>
<code> </code><code>SysLogTag varchar(60),</code>
<code> </code><code>EventLogType varchar(60),</code>
<code> </code><code>GenericFileName VarChar(60),</code>
<code> </code><code>SystemID int NULL</code>
<code>);</code>
<code>CREATE TABLE SystemEventsProperties</code>
<code> </code><code>SystemEventID int NULL ,</code>
<code> </code><code>ParamName varchar(255) NULL ,</code>
<code> </code><code>ParamValue text NULL</code>
<code>授權登陸使用者:</code>
<code>mysql> grant all on Syslog.* to log@</code><code>'localhost'</code> <code>identified by </code><code>'logpass'</code><code>;</code>
<code>mysql> flush privileges;</code>
<code>4、編輯配置檔案</code>
<code># vim /etc/rsyslog.conf</code>
<code>$ModLoad ommysql</code>
<code>*.info;mail.none;authpriv.none;</code><code>cron</code><code>.none :ommysql:localhost,Syslog,log,logpass</code>
<code>5、重新開機服務</code>
<code>#################################################################################################################################</code>
測試結果:記錄的結果如下,這樣看起來比較費勁。
<a href="http://guoting.blog.51cto.com/attachment/201408/24/8886857_1408886045tBRG.jpg" target="_blank"></a>
<code># 具體安裝步驟,可參考 loganalyzer-3.6.5/INSTASLL</code>
<code>tar</code> <code>xf loganalyzer-3.6.5.</code><code>tar</code><code>.gz </code>
<code>cp</code> <code>loganalyzer-3.6.5</code><code>/src/</code> <code>/var/www/html/</code> <code>-R</code>
<code>cd</code> <code>/var/www/html/</code>
<code>mv</code> <code>src loganalyzer</code>
<code>chown</code> <code>-R apache.apache loganalyzer</code>
<code>/etc/init</code><code>.d</code><code>/httpd</code> <code>restart</code>
在安裝過程中,最重要的配置如下:要與對應的資料庫名,表名,登入名一一對應。
<a href="http://guoting.blog.51cto.com/attachment/201408/24/8886857_1408886049Xl5q.jpg" target="_blank"></a>
loganalyzer:功能展示,可以形象的展示日志資訊。
<a href="http://guoting.blog.51cto.com/attachment/201408/24/8886857_1408886055iQTk.jpg" target="_blank"></a>
其他的功能在這裡不再一一介紹,隻能自己摸索。
OVER.
本文轉自 羊木狼 51CTO部落格,原文連結:http://blog.51cto.com/guoting/1544198,如需轉載請自行聯系原作者