Linux

如何為某些 rsyslog 輸入匹配設置 mysql 儲存?

  • November 18, 2011

我正在將各種日誌從 Heroku 導出到 rsyslog linux (ubuntu) 伺服器,並且在處理我的日誌歷史記錄方面,我開始有更多的東西需要咀嚼。

我需要能夠基於比標準 syslog 文件提供的更靈活的詳細資訊和更靈活的訪問來及時回溯。

我在想記錄到 mysql 可能是正確的方法,但是如何設置它以便它只將某些日誌條目拉入基於辨識的表中?例如,我看到一個長的十六進製字元串標識來自某個 Heroku 應用程序實例的每個日誌條目。我假設我可以將它們通過管道傳輸到 mysql 套接字與所有 rsyslog 輸入到 mysql ……

有人可以指導我找到可以引導我完成設置類似設置過程的資源,或者只是提供一些可以提供幫助的細節嗎?我有 15 年以上的 Unix 經驗,所以我只需要在正確的方向上進行一些推動,因為在將各種伺服器合併為一個方面,我之前並沒有真正使用 syslog 守護程序進行大量工作。

此外,我對任何可以讓開發人員更方便地鑽取這樣的日誌安排的日誌審查工具感興趣。

我想這應該可行。首先,確保您的 rsyslog conf 文件中有以下行,以便載入 MySQL 輸出模組:

$ModLoad ommysql

然後,像這樣過濾你想要的東西:

:msg, contains, "Heroku"     :ommysql:dbserver,dbname,dbuser,dbpass;heroku-template

接下來,您需要為您的數據創建一個模板,以便 rsyslog 知道將什麼以及如何插入到您的數據庫中。這是一個範例模板,它只記錄日期和消息,除了你有一個只有兩列的表,date而且message.

$template heroku-template, "INSERT INTO herokulog(date,message) VALUES ('%timestamp','%msg')\r\n", SQL

像這樣的東西應該​​工作。請注意,這是我的想法,根本沒有經過測試,但你明白了。可以從rsyslog 網站找到更多詳細資訊,例如您可能感興趣的可用模板參數值。

引用自:https://serverfault.com/questions/332291