日誌在 Centos 7 上不起作用
長話短說——不知何故,我設法搞砸了 Centos 7 伺服器上的 rsyslogd 服務。現在唯一出現在 /var/log/messages 中的是:
12 月 14 日 22:13:27 {myhostname} rsyslogd:
$$ origin software=“rsyslogd” swVersion=“7.4.7” x-pid=“1286” x-info=“http://www.rsyslog.com” $$退出信號 15。 12 月 14 日 22:13:27 {myhostname} rsyslogd:
$$ origin software=“rsyslogd” swVersion=“7.4.7” x-pid=“1477” x-info=“http://www.rsyslog.com” $$開始
其他日誌(安全、cron 等)也是空的。重新啟動服務和伺服器沒有幫助。使用記錄器發送的消息不會出現在 /var/log/messages 文件中。rsyslogd 服務正在執行。配置文件似乎是正確的。我可以在 journalctl 日誌中看到所有事件。我已經搜尋了幾篇與我的問題類似的文章,但沒有一個有解決方案。
雖然最快的解決方案可能是重新安裝伺服器,但我想弄清楚是什麼導致了這個問題以及如何解決它,以防將來發生。伺服器正在執行簡單的 LEMP 堆棧,系統的最後一次重大更改是主機名更改。
這是解決方案,但不是永久性的:
rm -f /var/lib/rsyslog/imjournal.state
服務 rsyslog 重啟
您可以嘗試調試 rsyslog以找出導致其發生故障的問題。
從正在執行的實例獲取調試資訊
可以從正在執行的實例中獲取調試資訊,但這需要一些設置。我們假設實例在後台執行,因此不需要將調試輸出到標準輸出。因此,所有調試資訊都需要進入日誌文件。
要創建此設置,您需要將
RSYSLOG_DEBUGLOG
環境變數指向在 while 執行時可訪問的文件(我們強烈建議在本地文件系統中使用文件!)設置RSYSLOG_DEBUG
至少以DebugOnDeman NoStdOut
確保這些環境變數設置正確( distro-specifc) 啟動腳本,如果您不以互動方式執行 rsyslogd這些設置啟用了對 SIGUSR1 做出反應的能力。該信號將在收到時切換調試狀態。所以發送一個來打開調試登錄,再次發送它來再次關閉調試日誌。第三次它會再次打開……以此類推。
在典型系統上,您可以按如下方式向 rsyslogd 發出信號:
kill -USR1 `cat /var/run/rsyslogd.pid`
重要提示: “cat”命令周圍有**反引號。**如果您使用正常報價,它將不起作用。調試日誌將顯示調試日誌是否已打開或關閉。沒有其他狀態指示。
一步一步的操作方法在這裡:如何使用按需調試?