一、將Linux系統日誌通過Rsyslog輸出到syslog伺服器 Rsyslog是linux系統下高速的日誌收集處理服務,它具有高性能、安全可靠和模塊化設計的特點,能夠接收各種來源的日誌輸入(例如:file,tcp,udp,uxsock等),並通過處理後將結果輸出的不同的目的地(例如:mysql, ...
一、將Linux系統日誌通過Rsyslog輸出到syslog伺服器
Rsyslog是linux系統下高速的日誌收集處理服務,它具有高性能、安全可靠和模塊化設計的特點,能夠接收各種來源的日誌輸入(例如:file,tcp,udp,uxsock等),並通過處理後將結果輸出的不同的目的地(例如:mysql,mongodb,elasticsearch,kafka,日誌審計伺服器等),每秒處理日誌量能夠超過百萬條。
Rsyslog作為syslog的增強升級版本已經在各linux發行版預設安裝了,無需額外安裝。如果操作系統中確實沒有Rsyslog,可以通過yum進行安裝或升級。
# yum install rsyslog
本文Linux操作環境以以CentOS 7為例,syslog的接收伺服器為某日誌審計伺服器,syslog服務埠預設為514。
rsyslog的配置文件位於/etc/rsyslog.conf,編輯該文件,並設置輸出syslog伺服器的IP(建議先備份原有的rsyslog.conf配置文件)。
// 在rsyslog.conf文件末尾增加如下內容,註意*.*和@中間為TAB(不是空格) *.* @10.168.1.100 // 重啟rsyslog服務 # service rsyslog restart
二、將Nginx的日誌輸出到syslog伺服器
Nginx 1.7.1版本及以後即可支持syslog,通過在nginx.conf中增加相關的配置即可實現。Nginx的access_log和error_log在配置文件的http段和server段均可配置。
// 將access_log記錄到伺服器本地文件 access_log /var/log/nginx/access.log main; // 新增將access_log輸出到syslog server access_log syslog:server=10.168.1.100,facility=local7,tag=nginx,severity=info; //將error_log記錄到伺服器本地文件 error_log /var/log/nginx//error.log warn; // 新增將error_log輸出到syslog server error_log syslog:server=10.168.1.100,facility=local7,tag=nginx,severity=warn; //重啟nginx服務 # systemctl restart nginx.service
配置參數說明:
syslog: 表示設置日誌用syslog服務接收
server: 接收syslog日誌的syslog服務端地址,預設使用udp協議,埠是514
facility: 設施,指定日誌消息的設備類型,可以有kern, user, mail, daemon, auth, intern, lpr, news, uucp, clock, authpriv, ftp, ntp, audit, alert, cron, local0-7這些類型。例如認證類型auth、計劃任務cron、程式自定義的local0-7等,預設值是local7。(沒有什麼特別的含義,不必深究)
tag: 標記,給日誌添加一個tag,主要是為了方便我們在服務端區分是哪個服務、應用、站點傳來的日誌,例如我們這裡設置了tag為nginx,如果有多個服務同時都寫日誌給syslog,且配置了不同的tag,如“nginx_mydomain_com”,在rsyslog服務端就可以根據這個tag找出指定的nginx的日誌
severity: 日誌級別,主要有debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)這些類型,只要報錯信息超過該級別就會進行記錄。
三、配置效果
日誌審計伺服器上收集到的日誌列表,標記為本地用戶7(local7)的為nginx日誌,其餘的為伺服器的系統日誌(用戶登錄、註銷等)
* 如果沒有專門的日誌審計伺服器,Rsyslog本身也可以作為日誌收集伺服器。
參考資料:
1. Rsyslog快速方便的收集Nginx日誌 https://www.sohu.com/a/250953403_100123073
2. Nginx使用Rsyslog記錄日誌 http://www.imooc.com/article/259236
3. Logging to syslog (Nginx官方文檔) http://nginx.org/en/docs/syslog.html