1. 程式人生 > >Rsyslog實現Nginx日誌統一收集

Rsyslog實現Nginx日誌統一收集

rsyslog實現nginx日誌統一收集

一、rsyslog 介紹

ryslog 是一個快速處理收集系統日誌的程序,提供了高性能、安全功能和模塊化設計。rsyslog 是syslog 的升級版,它將多種來源輸入輸出轉換結果到目的地,據官網介紹,現在可以處理100萬條信息。

二、Rsyslog應用

Rsyslog服務端配置

下面有一些參數沒有做中文解釋,是因為我也不是太了解,沒辦法做出解釋,測試不出具體效果

需要自己去看看文檔來解決了。

配置文件/etc/rsyslog.conf

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)

$ModLoad imklog # provides kernel logging support (previously done by rklogd)

$ModLoad immark # provides --MARK-- message capability

$ModLoad imudp #打開ucp連接,通過ucp傳日誌

$UDPServerRun 514 #UDP端口514

#$ModLoad imtcp #打開tcp連接,通過tcp傳日誌

$InputTCPServerRun 10514 #TCP端口10514

#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

$IncludeConfig /etc/rsyslog.d/*.conf #可以應用的配置文件

$WorkDirectory /data/weblogs #默認的存儲路徑

$MainMsgQueueType LinkedList

$MainMsgQueueHighWatermark 10000

$MainMsgQueueLowWatermark 1000

$MainMsgQueueMaxDiskSpace 20g #占用磁盤總空間大小

$MainMsgQueueMaxFileSize 200m #單個文件的最大大小

$MainMsgQueueSaveOnShutdown on

$MainMsgQueueDiscardSeverity 8

$template logfile,"/data/weblogs/nginx/log_bak/%syslogtag:F,91:1%.log" #定義日誌名稱

$template logFormat, "%msg:2:$%\n" #定義日誌內容格式

$ActionFileDefaultTemplate logFormat #定義默認的日誌內容格式,需要先定義,在再這裏應用

local7.* -?logfile

Rsyslog 服務端配置相關參數解釋:

$template logfile,"/data/weblogs/nginx/log_bak/%syslogtag:F,91:1%.log"

分析:

%syslogtag% 這個是一個固定的格式,是rsyslog服務器端的日誌名稱

例如nginxrsyslog服務端傳遞的應該是這樣的日誌名稱格式:learn1.game.access

但是我們需要在rsyslog服務端,顯示為learn1.game.access.log這樣的格式

在這個過程中就涉及到了正則和US-ASCII編碼的匹配問題

當前參數為:$template logfile,"/data/weblogs/nginx/log_bak/%syslogtag%"

日誌格式為:learn1.game.access[1534]

匹配參數:F是指定分隔符,%syslogtag:F,91:1%91US-ASCII編碼中"["符號的值,然後取1,也就是說取值[1534]前面的值,得出的格式是learn1.game.access,在最後加上.log後綴,完整格式為%syslogtag:F,91:1%.log,日誌格式為learn1.game.access.log

$template logFormat, "%msg:2:$%\n"

%msg%獲取到的是nginx日誌內容,但是它的顯示方式是連續且沒有分隔的

1)只獲取%msg%內容

技術分享

紅色框裏的內容是一條完整的日誌,其他的日誌再後面順序追加了,閱讀感極差

2)只獲取%msg%\n內容

技術分享

3)完美的日誌格式,%msg:2:$%\n

技術分享

已經很好的配置好了日誌格式,對後期日誌的刷選也方便了

上述配置,是用到了正則表達式的相關知識。

上面的兩條配置涉及的只是比較多,在匹配這一塊,涉及到了正則表達式,US-ASCII編碼。

關於其他內容訪問一下url學習,沒辦法做出明確的總結

學習鏈接:https://wiki.tankywoo.com/tool/rsyslog.html#_2

http://www.cnblogs.com/tobeseeker/archive/2013/03/10/2953250.html

http://www.cnblogs.com/hanyifeng/p/5463338.html

官網文檔:http://www.rsyslog.com/doc/v8-stable/configuration/modules/idx_input.html

http://www.rsyslog.com/doc/v8-stable/configuration/property_replacer.html

Nginx配置

黃色部分為新添加的配置參數

server

{

listen 80;

server_name learn1.proxy.com;

index index.php index.html index.htm;

root /data/www/learn1.proxy.com;

error_log /data/weblogs/learn1_error.log crit;

access_log /data/wwwlogs/learn1.log access;

access_log syslog:local7:info:192.168.110.47::learn1.game.access access;

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include fastcgi.conf;

}

}


本文出自 “10946218” 博客,謝絕轉載!

Rsyslog實現Nginx日誌統一收集