Linux日誌rsyslog

Linux日誌

1、什麼是日誌?

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

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

2、rsyslog

rsyslog是CentOS6系列提供記錄日誌的工具,具備以下特色:mysql

 

支持多線程模式web

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

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

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

自定義輸出格式vim

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

     

3、facility

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

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

4、priority

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

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

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

5、Target

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

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

用戶: *

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

管道:|COMMAND

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

6、rsyslog的配置


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

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

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

二、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

三、定義日誌規則
#### 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

7、日誌配置示例

一、日誌服務器的功能

實驗原理拓撲圖:

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

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

配置原理圖以下:

4

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

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

三、導入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;

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

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

五、重啓服務
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.

相關文章
相關標籤/搜索