2014-10-20 48 views
1

我正在嘗試爲我們的運營部門創建一個監視應用程序,以便在處理遇到問題的系統時採取主動措施。我創建了一個應用程序,並在工作,但它有一些抽獎背上:應用程序監視的最佳實踐

  1. 應用程序運行的每個副本用於個人的ping到系統中,當1個平就足夠了。
  2. 我有3個不同的API來獲取我們的系統的狀態,取決於它託管的IIS,WCF或桌面。

要修復第一個問題,我將創建一個臨時服務(應用程序)(監視器)將使ping生效的數據庫,然後應用程序將查詢數據庫以獲取更新。在想到這個之後,我意識到了第二個問題,並決定這是未來的問題。

所以我的想法是,而不是讓臨時應用程序ping系統,只是讓每個系統都有一個接口,每隔x次將其狀態發佈到數據庫。但後來我遇到了WCF和IIS服務的問題。這些服務可以坐幾天而沒有任何人使用該服務。我將如何讓這些服務繼續發佈其數據?

我的問題是:

是更好地請求或在這種情況推送的數據?

如果要求,在多個平臺(IIS,WCF,桌面)上維護單個API的建議做法是什麼?

如果按下PUSHED,您將如何處理基於實例的Web服務而不是連續運行的情況?

+1

市場上有很多工具可以幫助您監控正在運行的應用程序和基礎架構的運行狀況。爲什麼重新發明輪子? – 2014-10-20 16:22:09

+0

我不知道這些應用程序如何實際監控我的應用程序,我的公司很便宜,而且我們有需求知道它正在運行,比如知道它也正確地與其他設備/系統通信。 – Zholen 2014-10-20 16:28:26

+0

@ daniel-mann是對的。不要重新發明輪子。看看那裏的一些監控工具或服務。他們可能會滿足您的大部分需求,您可以通過編寫自己的腳本或應用程序來添加自定義檢查以用於其中一種工具。 – acfrancis 2014-10-20 16:32:16

回答

0

對於Web服務,一種解決方案可能是實現健康檢查終點,您可以簡單地調用這樣的一個終端:webservice/isServiceUp?

我更喜歡這個信息是PULLED。如果某個服務/ Web服務/應用程序關閉,那麼您不可能依賴它來向DB寫入內容......這是可能的,但風險很高且不可靠。

在現實世界的情況下,它比這稍微複雜一些,因爲服務主機和消費者之間可能會發生一些事情(例如DNS問題),在這種情況下,您會想要考慮沒有得到從isServiceUp返回的任何東西(不是真的沒有錯誤,只是一個400 lvl的錯誤)...

考慮使用您的負載平衡器檢查應用程序/網絡服務,並主動切換到不同的IP在發生問題的情況下...這是一種可能性。

+0

感謝您的意見!我忘記了應用程序無法運行的情況。此外,我目前有一個isServiceUp端點,我的抱怨是端點的託管方式不同,具體取決於應用程序的主機類型,IIS,WCF,Desktop – Zholen 2014-10-20 17:17:57

+0

最終,我們的目標是從IIS託管中刪除我們的應用程序並純粹通過WCF託管它們。在單個應用程序中託管2個WCF服務會很奇怪嗎?一個給我的客戶,一個給內部使用? – Zholen 2014-10-20 17:21:31

+0

如果你不需要靈活地使每個服務具有自己的APP,並因此擁有自己的應用程序池(非常方便附加調試器)。那麼除了不太清晰之外,我也不會看到一個問題。但最後,這是你的電話。 – samiup 2014-11-20 21:35:26

相關問題