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格式時不要做多級巢狀,這樣大大增加了日誌處理的複雜度,且不同日誌如果沒有明確級數,就搞的不通用了,大大增加了運維複雜度。
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
module(load="imfile") # if you want to tail filesmodule(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
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
32
module(load="imfile") # if you want to tail filesmodule(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時會無法自動生成 ,我們需要在主配置檔案中新增,也可以新增在子配置檔案中
12
$workdirectory /var/lib/rsyslog$preservefqdn on #如果需要獲取主機名時,主機名中帶有』.』,請設定,如主機名為:c1-b2c-shop-web01.bj
以下是收集單行日誌示例(nginx access log為例)
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
module(load="imfile") # if you want to tail filesmodule(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為例)
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
module(load="imfile") # if you want to tail filesmodule(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...