天天看點

Linux日志rsyslogLinux日志

日志總體來說是來記錄曆史事件的,記錄在過去一段事件系統的行為。将過去一段時間所發生的時間按時間序列記錄到指定的存儲結構中,記錄的主要内容有事件的來源、發生的時間、内容、事件的關鍵程度(日志級别)。例如:在作業系統中安裝和解除安裝過什麼軟體,這些操作會記錄下來。記錄日志的主要目的是在發生問題的時候,是解決問題的重合依據之一。

在Linux中,一般情況下會記錄系統程序(syslog)和核心事件(klogd)程序相關的日志。

rsyslog是CentOS6系列提供記錄日志的工具,具有如下特點:

支援多線程模式

支援像TCP,SSL,TLS,RELP等協定

可以将日志資訊記錄到像MySQL, PGSQL, Oracle等多種關系型資料中

強大的過濾器,可實作過濾系統資訊中的任意部分

自定義輸出格式

适用于企業級别日志記錄需求

auth

認證相關的

authpriv

認證授權相關的

cron

周期性計劃任務相關的

daemon

相關的

kern

lpr

列印相關的

mail

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 &lt; </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&gt; grant all on Syslog.* to log@</code><code>'localhost'</code> <code>identified by </code><code>'logpass'</code><code>;</code>

<code>mysql&gt; 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,如需轉載請自行聯系原作者