rsyslog v8.7.0才可以支援kafka
centos7 直接安裝 rsyslog-kafka
yum -y install rsyslog-kafka
如果centos6 就比較麻煩不能直接用yum來公升級rsyslog的。
建議把舊的rsyslog 卸裝,
rpm -ivh libfastjson-0.99.2-1.el6.x86_64.rpm
rpm -ivh libfastjson4-0.99.8-1.el6.x86_64.rpm
rpm -ivh libestr-0.1.11-1.el6.x86_64.rpm
rpm -ivh lz4-1.7.5-1.el6.x86_64.rpm
rpm -uvh rsyslog-8.1907.0-1.el6.x86_64.rpm #這邊使用 -u 引數是為了直接公升級本地rsyslog
rpm -ivh rsyslog-kafka-8.1907.0-1.el6.x86_64.rpm #rsyslog-kafka元件安裝依賴 rsyslog-8.1907,該命令最後執行,可能還依賴librdkafka
安裝完後執行 rsyslogd -v,顯示版本是8.1907.0,則驗證rsyslog是否公升級成功
檢視/lib64/rsyslog/中是否存在 omkafka.so,驗證rsyslog-kafka是否安裝成功。
配置rsyslog
通用配置:
module(load=「omkafka」)
module(load=「imudp」)
input(type=「imudp」 port=「514」 ruleset=「tokafka」)
ruleset(name=「tokafka」)
但nginx配置:
1.nginx在v1.10之後的版本才支援syslog的方式處理日誌,請確保你的nginx版本高於1.10
2.為了降低logstash的處理壓力,同時也為了降低整個配置的複雜度,我們nginx的日誌直接採用json格式
3.拋棄文字檔案記錄nginx日誌,改用syslog直接將日誌傳輸到遠端的rsyslog伺服器,以便我們後續的處理;這樣做的另乙個非常重要的好處是我們再也無需考慮nginx日誌的分割和定期刪除問題(一般我們為了方便管理通常會採用logrotate服務來對日誌進行按天拆分和定期刪除,以免磁碟被佔滿)
先修改nginx 配置,新增一行日誌格式,一定為json
log_format jsonlog 『』;
access_log syslog:server=rsyslog.domain.com,facility=local7,tag=nginx_access_log,severity=info jsonlog;
4.access_log直接輸出到syslog服務,各引數解釋如下:
syslog:指明日誌用syslog服務接收
server:接收syslog傳送日誌的rsyslog服務端位址,預設使用udp協議,埠是514
facility:指定記錄日誌訊息的型別,例如認證型別auth、計畫任務cron、程式自定義的local0-7等,沒有什麼特別的含義,不必深究,預設的值是local7
tag:給日誌新增乙個tag,主要是為了方便我們在服務端區分是哪個服務或者client傳來的日誌,例如我們這裡給了tag:nginx_access_log,如果有多個服務同時都寫日誌給rsyslog,且配置了不通的tag,在rsyslog服務端就可以根據這個tag找出哪些是nginx的日誌
severity:定義日誌的級別,例如debug,info,notice等,預設是error
rsyslog server 端配置:
vi /etc/rsyslog.d/rsyslog_nginx_kafka_cluster.conf
module(load=「imudp」)
input(type=「imudp」 port=「514」)
module(load=「omkafka」)
template(name=「nginxlog」 type=「string」 string="%msg%")
if katex parse error: expected '}', got 'eof' at end of input: …then
:rawmsg, contains, 「nginx_access_log」 ~
rsyslog配置檔案重要配置解釋如下:
module:載入模組,這裡我們需要載入imudp模組來接收nginx伺服器syslog發過來的日誌資料,也需要載入omkafka模組來將日誌寫入到kafka
input:開啟udp協議,埠514,也可以同時開啟tcp協議,兩者可以共存
template:定義乙個模板,名字叫nginxlog,模板裡可以定義日誌的格式,因為我們傳的已經是json了,不需要再匹配格式,所以這裡不額外定義,注意模板名字要唯一
action:在匹配到inputname為imudp且programname為nginx_access_log(就是我們上邊nginx配置裡邊的tag)之後的處理方式,這裡的配置為匹配到的日誌通過omkafka模組寫入kafka集群,還有一些關於omkafka更詳細的配置參考上邊給出的omkafka模組官方檔案
:rawmsg, contains:最後這一行的意思是忽略包含nginx_access_log的日誌,沒有這一行的話rsyslog服務缺省會把所有日誌都記錄到message裡邊乙份,我們已經把日誌輸出到kafka了,本地就沒必要再記錄了
logstash配置:
input
}filter
json
date
output 」}} nginx日誌管理rsyslog
記錄日誌的用處 排錯,追溯事件,統計流量,審計安全行為 rsyslog作為系統自帶工具,可以很好的集中各種日誌。客戶端 211 服務端 210 要達成的效果是,客戶端nginx的日誌資訊自動同步到服務端。便於分析 服務端修改配置檔案 vim etc rsyslog.conf 日誌傳輸有兩種方式tcp...
rsyslog日誌服務
linux系統日誌分析 rsyslog日誌服務簡介 日誌的概念好理解,日誌作用可用於排障和追溯審計的等 rsyslog 是乙個c s架構的服務,可監聽於某套接字,幫其它主機記錄日誌資訊,rsyslog可以理解為增強版的syslog,在syslog的基礎上擴充套件了很多其他功能,如資料庫支援 mysq...
rsyslog 日誌收集
rsyslog 無論在效能還是部署上都優於其它日誌收集應用,因系統自帶,需要新功能只需要做公升級即可,方便部署!更多rsyslog本身的一些功能介紹,請看我之前寫的乙個ppt。rsyslog的使用 比如 1logtime client ip server ip domain level http c...