2012-01-26 21 views
4

我有許多Windows服務(用C#4.0編寫),它們以各種間隔連接到數據庫並執行各種複雜的任務。其中一些任務每天每隔X小時發生一次。但是,服務器支持團隊想知道Windows服務是否實際運行,因爲任務之間可能存在很大的間隔。他們會基本上爲每個Windows服務心跳。每隔5分鐘,Windows服務將執行可由Microsoft System Center Operation Manager(SCOM)監控的事情。任何解決方案都必須由SCOM輕鬆監控,因爲服務器支持團隊依賴它。Windows服務的心跳活動

實現這種功能性的最好方法是什麼?我想過使用性能計數器並讓SCOM監聽那些性能計數器,但不確定這是否是最佳使用性能計數器。

UPDATE(完全忘了包括):目前,每個服務寫入數據庫這個動作,但SCOM不在監控數據庫記錄和差分哪些服務非常好是做什麼等

+0

Operations Manager可以[監視Windows服務](http://technet.microsoft.com/zh-cn/library/bb381240.aspx)作爲功能。你不應該在你的代碼中額外實現任何東西。 –

+0

http://stackoverflow.com/questions/295348/how-to-monitor-windows-services看看這是否有幫助 – Devjosh

+0

@ValAkkapeddi是的我知道運營經理和SCOM可以看到服務是否正在運行,停止,暫停但如果我的服務正在運行,出於某種原因沒有完成任務。我希望SCOM知道我的任務是否正在執行。 –

回答

0

什麼簡單地寫入數據庫或事件日誌?

+0

對不起,看到更新的問題。這是通過數據庫完成的,它不適用於SCOM。 –

+0

如果這個db有一個包含兩列的表:servicename和heartbeattime?每個服務會每x分鐘更新一次 –

0

您可以將SNMP或WMI工具添加到您的服務中 - 順便說一句,您不僅可以引發心跳消息,還可以在遇到需要重試操作的瞬時故障時引發事件。

這裏有很多SNMP庫,並且.NET框架中內置了WMI支持。