2010-07-13 82 views
2

我在C#中做了一個簡單的notifier命令行應用程序。基本上我使用Windows任務調度程序,並將其設置爲在特定時間運行此命令行應用程序。如何在此情況下通知某人?

當這個時間(使用LINQ to SQL)格式,並通過SMTP發送給正確的人打的命令行應用程序運行的所有通知,從數據庫中被抓住。

現在我應該怎麼處理這些場景

  1. 數據庫錯誤發生

解決方法:發送郵件到管理員通知他們,它失敗,檢查出來。

  • 時發生SMTP錯誤
  • 解決方案:?????

    所以這些都是可能出錯的兩件事。這可能有不同的組合。可能發生

    數據庫錯誤,並且只可能發生SMTP過,或者一個或其他可能發生。

    那麼如何將這些信息提供給管理員或某人,以便他們能夠修復它。我非常懷疑管理員會每天檢查一下,看看通知是否有效。

    所以基本上如何使其故障安全,或至少讓這個如果出現錯誤,一個管理員可以來修復它,只是手動運行通知,讓一切恢復同步。

    回答

    0

    記錄錯誤的EventLog也可以是一個選項,提供管理或者定期檢查的事件日誌或已監視聚合這些錯誤的系統。

    +0

    我想我會研究一下。它看起來不錯,可能不會立即解決我的問題,但因爲我的Web應用程序+通知程序將進入試用模式,所以我將暫時成爲管理員。所以我會忙着修補各處的錯誤,所以我不知道我是否每天都會檢查日誌。 – chobo2 2010-07-14 22:31:39

    0

    所以,主要的問題是,你不知道如何在SMTP服務器發生故障時通知管理員。假設管理員的電子郵件帳戶不在同一臺服務器上,您有幾種選擇。

    第一個選項:您可以在另一臺服務器上設置cgi郵件腳本,並通過http與該聯繫人發送電子郵件。

    第二個選項:使用SMTP客戶端,並設置了聯繫接收器的SMTP服務器直接發送電子郵件(而不是通過本地SMTP服務器會)。

    BTW:有些電子郵件提供商提供從某個地址發起郵件短信通知。如果服務器在管理員離開辦公桌時關閉,那非常方便。

    +0

    什麼是CGI郵件腳本?一個問題是我可能會在不同的公司設置它們,所以他們可能有不同的事情。所以他們可能有一個備份smtp或他們可能不會。 – chobo2 2010-07-14 22:30:00

    +0

    @ chobo2:我的意思是一個非常簡單的網頁腳本,當事情出錯時會發送給你(或管理員)和電子郵件。如果有問題的服務器可以訪問互聯網,則可以在網絡上的任何位置進行託管。 – 2010-07-15 07:44:53

    1

    你有幾個選項。

    1. 將錯誤信息寫入日誌。使它成爲一些操作員經常檢查日誌的程序。

    2. 是否打電話給其他一些服務?

    但是,如果數據庫不僅僅用於您的應用程序,而且完全有可能是別人會注意到的。電子郵件服務器也一樣。如果它下降了,那麼我敢打賭很多人都會打電話。請注意,您的情況排除了網絡連接丟失(如死亡交換機或錯誤配置的路由器)。

    順便說一句,如果它檢測SMTP是回來了,那麼就應該通知某人,這是爲下一個給定的時間段。數據庫服務器也是如此。

    最後,所有的錯誤條件應寫入您的系統日誌。寫入Windows事件日誌非常簡單。如果您的系統管理員遵循普遍接受的協議,則他們應該經常監視那些經常使用的協議。

    +0

    你會如何做這種檢測?在SMTP異常中有一個睡眠15分鐘的線程,然後當它喚醒時它只是調用程序/方法重新執行? – chobo2 2010-07-14 22:27:24

    +0

    @ chobo2:如果它能夠成功發送另一封電子郵件,那麼應該知道它已經備份,並且您應該能夠廣播所有排隊的郵件。 – NotMe 2010-07-15 18:30:50

    0

    你可以使用一個SMS gateway或附加一個手機到服務器上,並將它發送短信到管理員的時候出了一些可怕的錯誤。

    但是,你甚至可以進一步採取這樣的:

    • 如果你失去網絡連接 (開關或電纜 例如壞了)?
    • 如果有什麼力量下降 (當你最後一次測試的 UPS)?

    根據您的需求(和發出在短時間內這些通知業務成本),你可能需要一個全面的監控解決方案。

    +0

    好吧,我不會考慮這些通知是否不會出現,這將是至關重要的...這將是一個更煩惱。使用短信網關這可能是我將來看的東西(因爲我的通知程序設置爲處理短信作爲通知的另一種方式,而不僅僅是電子郵件)。現在,儘管設置SMS網關的任務太多了。 – chobo2 2010-07-14 22:25:39

    0

    對於你的數據庫的錯誤,你可以在一臺(套)的電子郵件地址爲DB錯誤硬編碼發送至。

    對於SMTP錯誤,你可以做一個「發送電子郵件時SMTP復甦」,或者你必須有警告你的管理員的替代方法。這可能是一個備份SMTP服務器,一個SMS網關(如其他人提到的),或者甚至是某些東西,如網絡中的某人桌面,如果它沒有收到某種類型的「一切正常」的警報/消息,則會彈出警報運行腳本的框。

    +0

    這是什麼桌面方式?如何檢測smtp何時恢復? – chobo2 2010-07-14 22:28:18

    相關問題