rsyslog syslog MySQL 日誌管理 Log 日誌

自建登入事件回報系統 即時監看Log免寫程式碼

2015-01-20
這裡將把Log資料儲存至遠端資料庫上並利用MySQL中Trigger的機制,在無須撰寫任何程式碼的前提下,完成一項可直接從資料庫層面自動回報Log紀錄中異常情況的功能。
魔鬼都藏在細節中,對系統而言,細節都藏在Log紀錄中,但由於Log紀錄十?分繁雜,常使人退避三舍,因而浪費了可從Log紀錄中挖寶的機會。若能做一些設定,在無須撰寫任何程式碼的情況下,就能夠從資料庫自動回報Log紀錄中的異常情況,那將大幅提高網管人員的工作效率。

為了簡化說明,本文僅以「登入」事件為例,一旦發現有登入的事件(即有人登入)發生,就發送電子郵件通知管理者,相關架構如圖1所示,而架構流程如下所述:

1. 主機產生Log事件,並將該Log事件儲存至遠端的MySQL資料庫。
2.MySQL資料庫發生資料庫新增(INSERT)事件,即觸發MySQL的觸發(Trigger)程式,而後利用正規表示法來解析(利用mysqludf_preg的正規表示法功能來取得登入事件的樣式)該新增的紀錄是否符合樣式。
3. 如果符合樣式,就從資料庫中直接呼叫外部程式(以mysqludf_sys的呼叫外部程式功能),以電子郵件的方式通知管理者。


▲圖1 實作架構圖。

本次實作將會使用到的套件,則如表1所示。

表1 實作所需的套件

什麼是syslog

在實作之前,首先來了解Log紀錄所使用的格式(稱為syslog),syslog又被稱為系統日誌,這是一種用來在網際網路協定(TCP/IP)的網路中傳遞紀錄檔訊息的標準。syslog協定是一種主從式的架構(Client-Server),syslog Client端利用傳送出一個小的文字訊息(小於1024位元組)到syslog Server端(通常為syslogd程式)。syslog系統日誌訊息可以利用UDP協定或TCP協定來傳送。基本上,相關系統日誌資料是以明碼型態傳送。syslog的格式如下所示:


syslog格式定義共分為四個欄位:

· 記錄欄位事件發生的日期與時間
· 記錄發生此事件的主機名稱(如上述的Spampc)
· 記錄啟動此事件的服務名稱(如上述的sshd)
· 記錄訊息的實際資料內容

syslog是以Facility(種類)與Level(嚴重等級)來定義事件的種類及嚴重等級,其中Facility指的是那些種類的事件(如ftp mail等類型事件),Linux系統將事件類型區分如表2所示。

表2 事件類型說明

Level則是用來描述事件嚴重的程度,如表3所示可區分成下列的嚴重級別(由低至高)。

表3 嚴重級別說明


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!