Windows-Server-2012

使用心跳 URL 監控 Windows 桌面應用程序

  • October 4, 2017

我們有一個需要一直執行的 Windows 桌面應用程序(100% 正常執行時間)。它在 Windows Server 2012 上執行並按預期執行,除了一個令人討厭的問題,當發生時,應用程序繼續執行(在任務管理器和資源監視器上可見)但它內部的主 Timer 執行緒已停止,基本上無法完成其核心工作. 只有應用程序 UI 可見。令人驚訝的是,這個異常甚至沒有在日誌中擷取,日誌生成只是停止了。所以日誌監控技術在這裡不起作用。

我們正在解決這個問題,但我們仍然希望在內部監控/確保桌面應用程序正在執行。我計劃使用心跳 URL 監控它,該桌面應用程序在每次觸發 Timer 事件時都會使用該 URL。它會通知監控伺服器(心跳 URL 主機)“我還活著”。如果 N 分鐘沒有收到心跳,則會生成通知。

我的問題是,這是正確的方法嗎?是否有用於上述目的的現成付費/免費工具?

鑑於我們無法使用外部監控服務在內部監控應用程序,我想到了這個解決方案。

這聽起來像是您自己開發的東西,如果您已經有一個外部監控服務添加和外部 URL 來發布/獲取將起作用,但聽起來有點像一個 janky 解決方案。

您還可以在同一台伺服器上分離另一個程序並執行類似的操作。由於日誌生成停止並且如果它在某個時間段內寫入日誌,請讓程序監視該日誌文件並查看它是否在一段時間內沒有被寫入。如果尚未寫入,請終止該程序並重新啟動程序。

如果您能夠分離另一個執行緒,而不是另一個程序,您可以創建一些共享的 LastTimeCalled 變數。Timer 循環將變數設置為目前時間,另一個程序監視該變數。

但是,根本問題是導致它停止的一些錯誤,應該修復該錯誤而不是使用創可貼。

引用自:https://serverfault.com/questions/876813