本文將指引你:如何對Nginx日誌進行採集,並通過Syslog協議,自動實時的發送到遠程的集中日誌分析中心,便於集中式的日誌存儲和管理,提高網站的運維效率。
第一步:初始化日誌採集環境
先確保系統中的/var/spool/rsyslog 目錄已存在:
if [ "$(grep Ubuntu /etc/issue)" != "" ]; then
chown -R syslog:adm /var/spool/rsyslog
fi
第二步:創建Nginx日誌文件採集配置
新建Rsyslog的子配置文件,他通常在/etc/rsyslog.d下,需要/etc/rsyslog.conf去包含這個目錄下的子配置文件:
複製以下內容到nginx-biglog.conf,注意註釋部分的修改:
$InputFilePollInterval 10
$WorkDirectory /var/spool/rsyslog
$PrivDropToGroup adm
## Nginx訪問日誌文件路徑,根據實際情況修改:
$InputFileName /usr/local/nginx/logs/access.log
$InputFileTag nginx-access:
$InputFileStateFile stat-nginx-access
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Nginx錯誤日誌文件路徑,根據實際情況修改:
$InputFileName /usr/local/nginx/logs/error.log
$InputFileTag nginx-error:
$InputFileStateFile stat-nginx-error
$InputFileSeverity error
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## 指定日誌格式模板:
$template BiglogFormatNginx,"%msg%\n"
## 注意syslog日誌服務器接收地址,根據實際情況修改:
if $programname == 'nginx-access' then @10.x.x.x:514;BiglogFormatNginx
if $programname == 'nginx-access' then ~
if $programname == 'nginx-error' then @10.x.x.x:514;BiglogFormatNginx
if $programname == 'nginx-error' then ~
注:通過Rsyslog配置日誌接收端的時候,如上示例@10.x.x.x:514,用於指定接收日誌的服務器的協議、IP地址和端口號。使用@代表走UDP協議,使用@@代表走TCP協議,冒號後面的514代表接收端口。
第三步:重啓Rsyslog服務,日誌採集開始工作
此時可以通過觀察系統中的Rsyslog日誌,確定是否正常工作。