2012-02-17 141 views
0

一個非常普遍的問題;在程序員的背景下,考慮流程(程序)的操作方面。系統日誌 - 日誌行分類

是否有任何形式的最佳實踐/指南來分類消息,特別是在SaaS /多租戶(服務器)軟件環境中,由於用戶操作或配置錯誤會產生錯誤和警告。由於軟件的性質,我不得不面對的大多數模塊都是無狀態的;即當由於用戶錯誤而發生錯誤時,很難區分該錯誤和操作錯誤(如網絡錯誤配置等)。

我想知道的是一些你有經驗的人;在這裏採用合理的邏輯是什麼?爲了讓男孩/女孩能夠輕鬆分類這些信息並發現問題?

+0

堆棧交換網絡上不允許交叉發佈:http://meta.stackexchange.com/q/64068/85514也許您應該刪除其中一個問題? – 2012-02-17 12:41:00

回答

2

從管理員只需三個方面和日誌分析/分類的角度:

  • 做標記字段/節目名稱配置。然後,可以配置多個實例以使用日誌標記,如app/user_1app/user_2等,以便在系統日誌級別上實現快速且簡單的過濾器。
  • 將消息從左向右排列,因此可以使用簡單搜索模式或正則表達式篩選不同類別的日誌行。例如。 config error - cannot parse line 123runtime warning - lost connection to DB xyz
  • 對於非常結構化的日誌,您可能還需要查看'structured data' field in syslog-protocol。到目前爲止,它很少使用,沒有工具支持,但它允許使用名稱空間和非常明確的鍵值屬性的應用程序日誌消息。
+0

感謝您的指點;特別是結構化數據;任何想法如何通過[syslog()](http://linux.die.net/man/3/syslog)函數傳遞數據 – 2012-02-17 14:28:32

+0

只需將其與syslog(LOG_NOTICE,「%s 「,」[exampleSDID @ 32473 ...]可能接着是免費短信「)' - 僅AFAIK NetBSD有一個庫函數[syslogp(3)](http://netbsd.gw.com/cgi-bin/ man-cgi?syslogp ++ NetBSD-current)for syslog-protocol,但這是非常實驗性的,並且在其他任何地方都不可用(即在生產中不可用)。 – mschuett 2012-02-17 16:12:45

0
  • 識別服務器和服務器類型(名稱,IP地址等)
  • 分類按嚴重程度,確保所有的時鐘都同步爲了 有正確排序的消息。
  • 放置一條消息/錯誤代碼以在您的監視工具中過濾/創建一些規則。
  • 將一個模塊(如果使用的一臺服務器上幾個模塊)
  • 將解決像網絡一般服務類別等

我想你將會從不同的機器上登錄他們的系統日誌deamon到負責監督/監督的中央機器。

0

大多數* nix使用半標準格式「Month Day 24H-Time host process_name [pid]:message」將日誌處理記錄到系統日誌(或至少應該)。系統日誌包含指示消息嚴重程度的方式,使用它們(但請記住嚴重程度來自系統的預期而非應用程序)。

如果消息是一個調試問題,那麼它通常是「Function_Name File_Name Line_No Error_Code Error_Desc」;否則消息的格式完全取決於程序。

對於多租戶系統而言,「消息」部分以某種形式的租戶標識開頭,後面跟着實際的日誌消息是很常見的。