rsyslog 日誌收集

2021-10-09 02:02:20 字數 4595 閱讀 2100

rsyslog 無論在效能還是部署上都優於其它日誌收集應用,因系統自帶,需要新功能只需要做公升級即可,方便部署!

更多rsyslog本身的一些功能介紹,請看我之前寫的乙個ppt。rsyslog的使用

比如:

1
logtime client_ip server_ip domain level http_code url response_time msg

1
27/apr/2016:15:50:55 1.1.1.1 127.0.0.1 www.elain.org error 499 /elk/rsyslog 0.007 ***xx

日期也要嚴格使用統一格式,推薦iso8601時間格式,日誌經過這樣規範處理後,無論是在單台上使用awk,cut,sed來檢視日誌,或是寫一些簡單實用的日誌處理小工具都會比較通用。

當然,如果你非要說不會有單機上去檢視日誌的情況,那使用純json格式也是相當不錯的,針對elk來說更是方便,可以直接使用logstash或hangout解析json,反而提高grok的效能。

比如:

1

1

當然,你還可以把前面這些固定的字段從json中扔出來,只把msg做成json,但切記,為了方便通用,在日誌中使用json格式時不要做多級巢狀,這樣大大增加了日誌處理的複雜度,且不同日誌如果沒有明確級數,就搞的不通用了,大大增加了運維複雜度。

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

module(load="imfile")    # if you want to tail files

module(load="omkafka") # lets you send to kafka

$workdirectory /var/lib/rsyslog

$preservefqdn on

#nginx access log

input(type="imfile"

file="/home/work/logs/nginx/*.log"

tag="ngx_log_mishop_order"

persiststateinterval="1000"

reopenontruncate="on"

addmetadata="on"

)template( name="general_log" type="string" string="%hostname% %msg%")

#nginx access log

if ($syslogtag == "ngx_log_mishop_order") then

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

32

module(load="imfile")    # if you want to tail files

module(load="omkafka") # lets you send to kafka

$workdirectory /var/lib/rsyslog

$preservefqdn on

#php slow log

input(type="imfile"

file="/home/work/logs/php/php-fpm.log.slow"

tag="php_log_slow"

persiststateinterval="1000"

reopenontruncate="on"

addmetadata="on"

readmode="1" #這裡是關鍵,1代表多行日誌之間以空格區分

escapelf="on"

)template( name="general_log" type="string" string="%hostname% %msg%")

#php slow log

if ($syslogtag == "php_log_slow") then

readmode的具體用法見:

如果需要獲取主機名時,主機名中帶有』.』,如主機名為:www-elain-org-web01.bj

解決方法:在主配置檔案rsyslog.conf中新增配置:

1
$preservefqdn on

因rsyslog 預設工作目錄是沒有設定的,在生成statefile時會無法自動生成

解決方法:在主配置檔案rsyslog.conf中新增配置:

1
$workdirectory /var/lib/rsyslog

1
reopenontruncate="on"

注:此功能要求rsyslog版本在 8.16.0以上

參考:

rsyslog無論在效能還是部署上都優於其它日誌收集應用,因系統自帶,需要新功能只需要做公升級即可,方便部署!

版本:syslog-8.16.0

download:

因rsyslog 預設工作目錄是沒有設定的,在生成statefile時會無法自動生成 ,我們需要在主配置檔案中新增,也可以新增在子配置檔案中

1

2

$workdirectory /var/lib/rsyslog

$preservefqdn on #如果需要獲取主機名時,主機名中帶有』.』,請設定,如主機名為:c1-b2c-shop-web01.bj

以下是收集單行日誌示例(nginx access log為例)

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

module(load="imfile")    # if you want to tail files

module(load="omkafka") # lets you send to kafka

#nginx access log

input(type="imfile"

file="/home/work/logs/nginx/*.log"

tag="ngx_log_shopapi"

persiststateinterval="1000"

reopenontruncate=「on」

addmetadata="on"

)template( name="general_log" type="string" string="%hostname% %fromhost-ip% %msg%」)

#nginx access log

if ($syslogtag == "ngx_log_shopapi") then

注:reopenontruncate=「on」 #版本要求8.16.0以上,此配置是為了解決log rotate切割日誌後不收集問題

詳情見:

%fromhost-ip #版本要求在8.17.0之後會支援,imfile模組獲取主機ip,主要用於docker容器

詳情見:

以下是收集多行日誌示例(php slow log為例)

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

module(load="imfile")    # if you want to tail files

module(load="omkafka") # lets you send to kafka

#php slow log

input(type="imfile"

file="/home/work/logs/php/php-fpm.log.slow"

tag="php_log_slow_v2"

persiststateinterval="1000"

reopenontruncate="on"

addmetadata="on"

readmode="1"

escapelf="on"

)template( name="general_log" type="string" string="%hostname% %fromhost-ip% %msg%")

#php slow log

if ($syslogtag == "php_log_slow_v2") then

參考文件 :

rsyslog日誌收集平台

rsyslog簡介 ryslog 是乙個快速處理收集系統日誌的程式,提供了高效能 安全功能和模組化設計。rsyslog 是syslog 的公升級版,它將多種 輸入輸出轉換結果到目的地。rsyslog是乙個開源工具,被廣泛運用於linux系統以通過tcp udp協議 或接收日誌訊息。rsyslog守護...

rsyslog 日誌收集服務簡單配置

環境 centos7 rsyslog的全稱是 rocket fast system for log,它提供了高效能,高安全功能和模組化設計。rsyslog能夠接受從各種各樣的 將其輸入,輸出的結果到不同的目的地。rsyslog可以提供超過每秒一百萬條訊息給目標檔案。使用rsyslog對伺服器各類日誌...

linux下配置rsyslog日誌收集伺服器案例

環境配置 centos6系統 client1 192.168.1.33 centos7系統 client2 192.168.1.44 centos7系統 master 192.168.1.55 配置服務端master端 第一 啟用udp tcp進行傳輸 vim etc rsyslog.conf pr...