2012-08-28 34 views
0

我有一臺在我們的服務器上運行24/7的Windows服務。Windows服務需要監視錯誤日誌?想法?

最近連接到外部公司,該公司一直在下降。

我需要設置一些東西,以便在本服務的錯誤日誌中最後一分鐘有25個錯誤時進行監視。

我猜測我將不得不創建一個表,並將這些錯誤插入表中,因爲它們正在被記錄,然後設置一些通過tsql查詢來檢查是否在最後一分鐘發生了25次? (然後發送電子郵件或更新儀表板監控頁面以獲得支持)

真的,我的問題是沒有人有比這更好的主意嗎?過去,有人必須做得比這更好。我想我從來沒有試圖直接從日誌中讀取。也許這將是一條更好的路線。

任何想法的方向都非常讚賞這一個。謝謝。

+1

Microsoft系統中心運營經理做這樣的事情。 –

+0

價格上寫着「致電當地銷售代表」,所以對於這個特別的問題來說,這是微不足道的。 http://www.microsoft.com/en-us/server-cloud/buy/pricing-licensing.aspx –

+0

如果你只是想知道外部公司的網站何時關閉,你可以使用[pingdom](http ://www.pingdom.com)或[monitor.us](http://www.monitor.us)提醒您。 – adrianbanks

回答

1

伐木很有趣。 :/

您的選項主要有:

  1. 登錄到數據庫服務器 - 優點:容易從其他地方讀取。缺點:你需要一個數據庫服務器。如果該項目不包括一個,可能是一個痛苦。另外,如果網絡連接出現問題,則記錄失敗。

  2. 登錄到事件日誌 - 優點:快速寫入本地。可以通過正確的用戶權限遠程讀取。缺點:你會很多地詢問這個事件,事件日誌並不是完全爲此構建的。

  3. 登錄文件 - 優點:極快的寫入。缺點:需要大量權限設置才能訪問遠程代碼。可能被損壞/丟失/刪除等。

  4. 使用其他軟件,如System Center Operations Manager。優點:這正是爲之而建的事物類型。缺點:成本/設置。


這些都是在我的優先順序。

+1

1.如果您想記錄無法連接到數據庫服務器,則不起作用。另外,對於大容量,記錄到數據庫服務器的速度太慢。 –

+0

@EricJ:是的,增加。 – NotMe

+0

如果您確實要使用數據庫,我使用了ms企業庫(entlib),msmq + sql server。它的設置非常簡單,可以處理大量負載,可以將數據庫放在任何地方,即使一臺或兩臺機器都處於關閉狀態,它也能正常處理,並在兩臺機器都能夠重新連接時發送日誌。 – Mario

1

我的Windows服務定期調用外部Web API時出現類似問題。

我的解決方案是使用NLog將錯誤寫入文本日誌文件,並在服務本身中保留一個計數器,但失敗次數不會成功。如果計數器超過可配置的閾值,我會向NLog寫入臨界條目而不是錯誤條目,並配置NLog以在發生嚴重事件時向操作團隊中的多位人員發送別名。

如果您需要嚴格執行「最後一分鐘的25個錯誤」語義,則可以將錯誤寫入內存受限(最多25個項目)隊列。如果隊列長度變爲25,則檢查隊列中的第一項是否在最後一分鐘內。如果是這樣,請在日誌中寫入嚴重錯誤。