Nginx日誌配置遠程Syslog採集

本文將指引你:如何對Nginx日誌進行採集,並通過Syslog協議,自動實時的發送到遠程的集中日誌分析中心,便於集中式的日誌存儲和管理,提高網站的運維效率。

第一步:初始化日誌採集環境

先確保系統中的/var/spool/rsyslog 目錄已存在:

mkdir -v /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去包含這個目錄下的子配置文件:

vim /etc/rsyslog.d/nginx-biglog.conf

複製以下內容到nginx-biglog.conf,注意註釋部分的修改:

$ModLoad imfile
$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服務,日誌採集開始工作

service rsyslog restart

此時可以通過觀察系統中的Rsyslog日誌,確定是否正常工作。

cat /var/log/messages |grep rsyslog
發佈了12 篇原創文章 · 獲贊 72 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章