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

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

我正在將各種日誌從 Heroku 傳輸到 rsyslog linux (ubuntu) 伺服器,並且在處理日誌歷史方面,我開始有一些無法咀嚼的東西。

我需要能夠根據比標準系統日誌檔案提供的更靈活的細節和更靈活的存取來及時回溯。

我認為記錄到 mysql 可能是正確的方法,但是我如何設定它,以便它根據已識別的資訊僅將某些日誌條目拉入表中?例如,我看到一個長的十六進位字串,標識來自某個 Heroku 應用程式實例的每個日誌條目。我假設我可以將它們透過管道傳輸到 mysql 套接字,而不是將所有 rsyslog 輸入傳輸到 mysql...

有人可以指導我找到一個資源,可以引導我完成設定此類內容的過程,或者只是提供一些可以提供幫助的詳細資訊嗎?我擁有 15 年以上的 Unix 經驗,所以我只需要在正確的方向上進行一些推動,因為我之前並沒有在將各種伺服器集中到一台伺服器方面對 syslog 守護進程進行大量的工作。

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

答案1

我想這應該會起作用。首先,確保 rsyslog conf 檔案中有以下行,以便載入 MySQL 輸出模組:

$ModLoad ommysql

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

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

接下來,您需要為您的資料建立一個模板,以便 rsyslog 知道要將什麼內容以及如何插入到資料庫中。這是一個範例模板,僅記錄日期和訊息,但您的表格除外,只有兩列,datemessage

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

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

答案2

我將系統日誌通過管道傳輸到 grep 命令以提取所需的行,然後傳輸到 awk 腳本以生成格式良好的 csv 文件,然後使用“ LOAD DATA IN FILE ”將生成的 csv 文件拉入 mysql

您也可以檢查 phpsyslog-ng 項目:http://www.gdd.net/index.php/PHP-Syslog-NG

相關內容