Logs

對於尚不支持 syslog 的應用程序,如何將日誌重定向到 syslog?

  • April 16, 2019

Nginx 在 1.7.1 版本中添加了日誌到 syslog功能。

我只能從 中獲取 1.6.2 版本ppa:nginx/stable,或者從預設的 Ubuntu 軟體包源獲取 1.4.6 版本。

我有一個通用日誌(rsyslog)伺服器,它從幾十台伺服器收集數據。rsyslog 已在每台機器上配置為將日誌傳播到主日誌機器或故障轉移(如果主日誌機器關閉)。

將 Nginx 日誌發送到本地系統日誌(然後通過 rsyslog 將其發送到遠端伺服器)有哪些選擇?


注意:雖然歡迎直接與 Nginx 日誌記錄相關的答案,但我也在尋找適用於任何應用程序的一般答案(因此該問題缺少nginx標籤)。原因是我還沒有將所有應用程序遷移到syslog,並且我希望其他應用程序會導致類似的問題。


與已接受答案相關的重要說明:

  1. 雖然自 rsyslog 5.9.6 的 beta 版本於 2012 年 4 月 12 日起inotify可用,但僅自 2014 年 1 月 24 日起在 rsyslog 8.1.5 中才受支持。

這需要ppa:adiscon/v8-stable在 Ubuntu 中使用,因為在撰寫本文時最新的 Ubuntu 發行版(14.04 LTS)使用的是 rsyslog 7.4.4。 2. inotify模式在 中指定module(),而不是input()

module(load="imfile" mode="inotify")

使用inotify,PollingInterval不必指定。 3. 當配置不正確時,rsyslog不會將任何內容記錄到/var/log/syslog. 為了檢查出了什麼問題,該命令rsyslogd -N1似乎很有幫助。顯然,ps -A | grep rsyslog也有助於查找是否rsyslog正在執行。

目前rsyslog版本可以通過執行獲得rsyslogd -version。 4. ReadModeininput() 應設置為零。 5. module()input()配置“應該放在 rsyslog.conf 文件的頂部” 。 6. 似乎rsyslog討厭Nginx。/var/log/nginx/在or上設置什麼所有者、組或權限無關緊要/var/log/nginx/access.log,文件更改將被忽略(沒有任何錯誤)。/var/log/nginx/在目錄中創建的任何其他文件也會發生同樣的情況。

當在不同的目錄中創建文件時,例如/home/demo/or ,更改會按預期/var/log/反映。syslog

我假設您在本地電腦上執行 rsyslog,並且它正在將日誌轉發到您的遠端日誌伺服器。

從 rsyslog 文件中,您似乎可以定義一個輸入模組來完全按照您的要求進行操作。我在這裡看到了它的詳細資訊:

http://www.rsyslog.com/doc/master/configuration/modules/imfile.html

它甚至提供了一些漂亮的例子。

引用自:https://unix.stackexchange.com/questions/179367