通過Rsyslog實現對Nginx日誌發送至日誌服務器

配置文件/etc/rsyslog.conf


local 1~7   –自定義的日誌設備:

日誌級別:

———————————————————————-

debug 0       –有調式信息的,日誌信息最多

info 1       –一般信息的日誌,最常用

notice 2      –最具有重要性的普通條件的信息

warning 3     –警告級別

err  4       –錯誤級別,阻止某個功能或者模塊不能正常工作的信息

crit  5      –嚴重級別,阻止整個系統或者整個軟件不能正常工作的信息

alert  6     –需要立刻修改的信息

emerg 7      –內核崩潰等嚴重信息

none  8      –什麼都不記錄

從上到下,級別從低到高,記錄的信息越來越少


執行腳本::

local3.*    ^/tmp/a.sh      # ^號後跟可執行腳本或程序的絕對路徑

# 日誌內容可以作爲腳本的第一個參數.

# 可用來觸發報警


轉發到遠程::

*.* @192.168.0.1            # 使用UDP協議轉發到192.168.0.1的514(默認)端口

*.* @@192.168.0.1:514     # 使用TCP協議轉發到192.168.0.1的10514端口


忽略,丟棄::

local3.*   ~    # 忽略所有local3類型的所有級別的日誌


過濾特定的日誌到文件, 忽略(丟棄)包含某個字符串的日誌

======================================================================

# 過濾日誌, 由:號開頭

:msg, contains, “error” /var/log/error.log

:msg, contains, “error” ~         # 忽略包含error的日誌

:msg, contains, “user nagios”   ~

:msg, contains, “user kadefor”   ~

:msg, contains, “module-alsa-sink.c: ALSA woke us up to write new data to the device, but there was actually nothing to write” ~

local3.*    ~

PS.

&   ~       ### 忽略所有的日誌


$ModLoad imfile #裝載imfile模塊

$InputFileName /data2/logs/ssologs.log #讀取日誌文件

$InputFileTag login.sina.com.cn: #日誌寫入日誌附加標籤字符串

$InputFileFacility local5 #日誌類型

$InputFileSeverity info #日誌等級

$InputFileStateFile ssologs.log_state #定義記錄偏移量數據文件名

$InputFilePollInterval 1 #檢查日誌文件間隔(秒)

$InputFilePersistStateInterval 1 #回寫偏移量數據到文件間隔時間(秒)

$InputRunFileMonitor #激活讀取,可以設置多組日誌讀取,每組結束時設置本參數。以示生效。

#接收隊列

$WorkDirectory /data2/logs/ #定義工作目錄。例如隊列文件存儲存儲文件夾。

$MainMsgQueueType LinkedList #選擇使用內存隊列模式。

$MainMsgQueueFileName local5.main #如果隊列模式使用內存模式,同時在配置這個參數,意味激活磁盤附加隊列。

$MainMsgQueueHighWatermark 10000 #當內存隊列達到這些元素時,開始回寫磁盤。

$MainMsgQueueLowWatermark 1000 #當內存隊列小於這些元素時,停止回寫磁盤。

$MainMsgQueueMaxDiskSpace 20g #限制磁盤隊列大小,參數疑似20GByte。

$MainMsgQueueMaxFileSize 200m #隊列單文件尺寸大小。

$MainMsgQueueSaveOnShutdown on #在rsyslogd關閉時,要保存隊列中數據。

$MainMsgQueueDiscardSeverity 8 #丟棄消息等級設定,數字越低丟的越多,設置8代表禁止丟棄消息。

$MainMsgQueueDiscardMark 1000000000 #超出10億後,會禁止新消息入隊,丟棄消息。如果前一個被禁止, #那麼丟棄數據將無針對性,如果

$MainMsgQueueTimeoutEnqueue 3000 #超時3秒,TCP或local_socket方式下,預防資源夯住,引起崩潰。

$MainMsgQueueDequeueBatchSize 500 #優化帶寬,設置每批次傳輸元素量,儘可能每次傳輸更多的數據。

#發送隊列(可以部署多個)

$ActionForwardDefaultTemplate RSYSLOG_ForwardFormat #定義轉發消息格式模板,使用系統默認轉發格式。

$WorkDirectory /data2/logs/ #定義工作目錄。例如隊列文件存儲存儲文件夾。

$ActionQueueType LinkedList #選擇使用內存隊列模式。

$ActionQueueFileName local5.forward #如果隊列模式使用內存模式,同時在配置這個參數,意味激活磁盤附加隊列。

$ActionQueueHighWatermark 10000 #當內存隊列達到這些元素時,開始回寫磁盤。

$ActionQueueLowWatermark 1000 #當內存隊列小於這些元素時,停止回寫磁盤。

$ActionQueueMaxDiskSpace 20g #限制磁盤隊列大小,參數疑似20GByte。

$ActionQueueMaxFileSize 200m #隊列單文件尺寸大小。

$ActionResumeRetryCount -1 #失敗後重試次數,-1 代表無限。

$ActionQueueSaveOnShutdown on #在rsyslogd關閉時,要保存隊列中數據。

$ActionQueueDiscardSeverity 8 #丟棄消息等級設定,數字越低丟的越多,設置8代表禁止丟棄消息。

$ActionQueueDiscardMark 1000000000 #超出10億後,會禁止新消息入隊,丟棄消息。如果前一個被禁止,

 #那麼丟棄數據將無針對性,如果

$ActionQueueTimeoutEnqueue 3000 #超時3秒,TCP或local_socket方式下,預防資源夯住,引起崩潰。

$ActionQueueDequeueBatchSize 500 #優化帶寬,設置每批次傳輸元素量,儘可能每次傳輸更多的數據。

local5.* @@192.168.1.100;RSYSLOG_ForwardFormat #發送local5類型數據,以系統默認格式轉發到目標服務器。

:rawmsg, contains, “access_log” ?DynFile;logformat    # 把rawmsg(也可以使用msg)日誌中包含sdns_log標誌的信息寫到DynFile定義的日誌文件裏

:rawmsg, contains, “access_log”  ~                     # 這個表示丟棄包含sdns_log標誌的信息, 一般都加上它, 以免多個日誌文件記錄重複的日誌



實例


單一日誌文件:

日誌服務器配置:

$EscapeControlCharactersOnReceive off

$ActionForwardDefaultTemplate RSYSLOG_ForwardFormat

$template RemoteLogs,"/rsyslog/nginx_1/nginx_access_log.%$year%-%$month%-%$day%"

local5.* ?RemoteLogs


客戶端配置:

$ModLoad imfile

$InputFileName /usr/local/nginx/logs/nginx_access.log

$InputFileTag nginx_1:

$InputFileStateFile /nginx/pianyi.log

$InputFileSeverity info

$InputFileFacility local5

$InputRunFileMonitor

$InputFilePollInterval 1

$InputFilePersistStateInterval 1

$ActionQueueSaveOnShutdown on

local5.*        @@192.168.204.150


多個日誌文件:

客戶端:

/etc/rsyslog.conf:

local5.*        @@192.168.204.150


web1.cof:

$ModLoad imfile

$InputFileName /usr/local/nginx/logs/web1/web1_access.log

$InputFileTag nginx_1:

$InputFileStateFile /nginx/pianyi1.log

$InputFileSeverity info

$InputFileFacility local5

$InputRunFileMonitor

$InputFilePollInterval 1

$InputFilePersistStateInterval 1

$ActionQueueSaveOnShutdown on


web0.conf

$ModLoad imfile

$InputFileName /usr/local/nginx/logs/web/web_access.log

$InputFileTag nginx_0:

$InputFileStateFile /nginx/pianyi.log

$InputFileSeverity info

$InputFileFacility local5

$InputRunFileMonitor

$InputFilePollInterval 1

$InputFilePersistStateInterval 1

$ActionQueueSaveOnShutdown on


服務器端;

[root@Nginx2 rsyslog]# cat /etc/rsyslog.d/nginx.conf 

$EscapeControlCharactersOnReceive off

$ActionForwardDefaultTemplate RSYSLOG_ForwardFormat

$template RemoteLogs_ngx0,"/rsyslog/nginx_0/nginx0_access_log.%$year%-%$month%-%$day%"

:rawmsg,contains,"nginx_0:" ?RemoteLogs_ngx0

:rawmsg,contains,"nginx_0" ~ 

$template RemoteLogs_ngx1,"/rsyslog/nginx_1/nginx1_access_log.%$year%-%$month%-%$day%"

:rawmsg,contains,"nginx_1:" ?RemoteLogs_ngx1

:rawmsg,contains,"nginx_1" ~ 


/etc/rsyslog.conf:

$ModLoad imuxsock

$ModLoad imklog

$ModLoad immark


# Provides UDP syslog reception

$ModLoad imudp

$UDPServerRun 514


# Provides TCP syslog reception

$ModLoad imtcp

$InputTCPServerRun 514


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