Linux日誌rsyslog

Linux日誌

一、什麼是日誌?

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

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

二、rsyslog

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

 

支持多線程模式

支持像TCP,SSL,TLS,RELP等協議

可以將日誌信息記錄到像MySQL, PGSQL, Oracle等多種關係型數據中

強大的過濾器,可實現過濾系統信息中的任意部分

自定義輸出格式

適用於企業級別日誌記錄需求

     

三、facility

記錄日誌的設施,從功能或程序上對日誌進行分類,並由專門的工具負責記錄其日誌 。簡單的來說,就是記錄日誌的“主人”。常見的有如下:

auth認證相關的
authpriv認證授權相關的
cron週期性計劃任務相關的
daemon守護進程相關的
kern內核相關的
lpr打印相關的
mail郵件相關的
mark防火牆標記相關的
news新聞組相關的(較早)
security安全相關的,同auth
syslog記錄日誌工具自己的日誌
user用戶相關的
uucpunix to unix copy,unix之間共享文件的協議(較早)
local0-local7用戶自定義的
*表示所有
表示取反

四、priority

稱之爲級別,來定義日誌的緊急程度。常見的有:

debug調試信息,最詳細的信息
info基本信息
notice通知信息
warn warnning警告信息
err error錯誤信息
crit藍色警戒信息
alert橙色警戒信息
emerg panic紅色警戒信息

這裏的級別從上到下表示級別越高,危險程度也越高,像emer級別是系統可能已經掛掉了。這裏也可使用 *來表示所有級別,none: 沒有任何級別 。

五、Target

target指的是日誌存儲的位置,常見的有:

本地文件路徑:例如/var/log/messages

用戶: *

日誌服務器:@SERVER_IP(使用UDP協議) @@SERVER_IP(使用TCP協議)

管道:|COMMAND

關係型數據庫: 例如: ommysql:localhost:Syslog:log:log(下面詳細介紹)

六、rsyslog的配置


rsyslog的主配置文件:/etc/rsyslog.conf,在這個配置文件中主要有三方面的定義,如下:  

1、MODULES模塊,在這裏主要定義加載的模塊等信息
#### MODULES ####

# 例如:作爲日誌服務器,使用udp/514作爲監聽端口
$ModLoad imudp
$UDPServerRun 514

2、GLOBAL DIRECTIVES模塊,全局配置模塊,在這裏定義一些全局生效的屬性
#### GLOBAL DIRECTIVES ####

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

3、定義日誌規則
#### RULES ####

# 其定義格式 :
# facility.priority        Target 

mail.info         /var/log/maillog                                 # 比指定級別更高的所有級別,包括指定的級別本身; 
mail.=info       -/var/log/maillog                                 # 明確指定級別,這裏的 - 表示異步寫入磁盤,不加默認同步寫入磁盤 
mail.!info       *                                                 # 除了指定級別,通知所有的用戶
*.info          @172.16.10.88                                      # 所有facility的info級別,將日誌以udp通信方式記錄到172.16.10.88的日誌服務器上 
mail.*:         :ommysql:localhost:Syslog:ftp:ftppass              # mail的所有級別,記錄到mysql數據庫中,登陸賬號是:ftp@localhost -u ftp -p ftppass。數據庫名稱是Syslog
mail,news.info:                                                    # mail,news的info和更高的級別

日誌信息格式:

# 時間     主機     進程(PID):事件 

Aug  7 02:32:14 server abrtd: Init complete, entering main loop
Aug  7 02:32:26 server kernel: readahead-collector: starting delayed service auditd

七、日誌配置示例

1、日誌服務器的功能

實驗原理拓撲圖:

1

##########################實驗配置##########################################


###########################在172.16.10.9主機上###############################
vim /etc/rsyslog.conf  修改如下內容:

$ModLoad imtcp
$InputTCPServerRun 514

*.info;mail.none;authpriv.none;cron.none             /var/log/messages

# 重啓服務
service rsyslog restart

##########################################################################


###########################在172.16.10.1上################################
vim /etc/rsyslog.conf 

# 這裏將需要的日誌發送到日誌服務器上
*.info;mail.none;authpriv.none;cron.none            @@172.16.10.9

# 重啓服務
service rsyslog restart

######################################################################

測試結果:

2

3

2、支持mysql記錄日誌,使用loganalzer監控日誌

配置原理圖如下:

4

# 配置如下:
###########################################在172.16.10.9上##############################################
1、安裝rsyslog和mysql交互的軟件
yum install rsyslog-mysql -y

2、搭建好lamp平臺(這裏不再詳細介紹)
yum install httpd mysql php mysql-server php-gd -y

3、導入rsyslog所用到的數據庫和表
# 具體通過 rpm -ql rsyslog-mysql 查看
mysql -u root -p < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

### createDB.sql內容如下:
CREATE DATABASE Syslog;
USE Syslog;
CREATE TABLE SystemEvents
(
        ID int unsigned not null auto_increment primary key,
        CustomerID bigint,
        ReceivedAt datetime NULL,
        DeviceReportedTime datetime NULL,
        Facility smallint NULL,
        Priority smallint NULL,
        FromHost varchar(60) NULL,
        Message text,
        NTSeverity int NULL,
        Importance int NULL,
        EventSource varchar(60),
        EventUser varchar(60) NULL,
        EventCategory int NULL,
        EventID int NULL,
        EventBinaryData text NULL,
        MaxAvailable int NULL,
        CurrUsage int NULL,
        MinUsage int NULL,
        MaxUsage int NULL,
        InfoUnitID int NULL ,
        SysLogTag varchar(60),
        EventLogType varchar(60),
        GenericFileName VarChar(60),
        SystemID int NULL
);

CREATE TABLE SystemEventsProperties
(
        ID int unsigned not null auto_increment primary key,
        SystemEventID int NULL ,
        ParamName varchar(255) NULL ,
        ParamValue text NULL
);

授權登陸用戶:
mysql> grant all on Syslog.* to log@'localhost' identified by 'logpass';
mysql> flush privileges;

4、編輯配置文件
# vim /etc/rsyslog.conf

$ModLoad ommysql
*.info;mail.none;authpriv.none;cron.none                :ommysql:localhost,Syslog,log,logpass

5、重啓服務
service rsyslog restart

#################################################################################################################################

測試結果:記錄的結果如下,這樣看起來比較費勁。

5

通過webGUI展示日誌信息

# 具體安裝步驟,可參考 loganalyzer-3.6.5/INSTASLL
tar xf loganalyzer-3.6.5.tar.gz 
cp loganalyzer-3.6.5/src/ /var/www/html/ -R
cd /var/www/html/
mv src loganalyzer
chown -R apache.apache loganalyzer

# 重啓服務
/etc/init.d/httpd restart

通過 http://172.16.10.9/loganalyzer 具體安裝過程不再一一展示,重要的是每次安裝這類軟件的方法。幾乎每個軟件都會自帶一個像INSTALL,README的文件,安裝前儘量讀一下。

在安裝過程中,最重要的配置如下:要與對應的數據庫名,表名,登錄名一一對應。

7

loganalyzer:功能展示,可以形象的展示日誌信息。

8

其他的功能在這裏不再一一介紹,只能自己摸索。

 

OVER.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章