一、將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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/95005.html
標籤:Linux
