Delphi - Server Monitor開發並實現指定IP地址的定時檢測和郵件提醒等功能

項目背景

  近期,總經辦郵件反饋考勤數據頻繁丟失,請IT排查其根本緣由,並提供整改措施。html

  措不及防,這個項目當初並非IT主導的,是設備部採購,而後協同軟件供應商直接安裝、部署和調試的,IT只是提供幾個數據庫表接口給供應商。而後咱們就開始在設備、總經辦、供應商之間相互扯皮,之因此扯皮的緣由是,通過供應商排查並無發現任何問題(具體狀況不得而知),也就是說他們也不知道形成數據丟失的具體緣由。數據庫

  求人不如求己,後來咱們這邊排查數據庫日誌,發如今數據丟失的時間段內,數據庫和上位機之間不多或者說基本沒有數據交互。繼續排查設備上位機日誌,發現其網絡端口會有間歇性響應異常等問題,重啓端口後一切正常。網絡

  知道這些之後,那接下來問題就簡單了。佈局

解決方案

  • 項目總目標  

  客製化一個系統/腳本,實現定時檢測某個網絡端口相關功能是否正常,經過其DLL接口實現端口刷新或重啓,並將日誌經過郵件方式發送給指定人員。post

  • 節點目標一:網絡端口通斷檢測模塊;

  • 節點目標二:DLL接口重寫,實現端口刷新或重啓模塊;

  • 節點目標三:日誌檢測和郵件發送模塊;

  • 節點目標四:定時模塊。

 

關鍵模塊Demo

下面給出幾個關鍵模塊Demo測試

網絡端口檢測模塊(須要引用IdIcmpClient單元)url

 1 var
 2   icmp: TIdIcmpClient;
 3   rpss: TReplyStatus;
 4 begin
 5   icmp := TIdIcmpClient.Create(nil);
 6   try
 7     icmp.Host := strIP;
 8     icmp.ReceiveTimeout := intLinkTimeOut;
 9     try
10       icmp.Ping;
11       rpss := icmp.ReplyStatus;
12       Result := not (rpss.ReplyStatusType = rsTimeOut);
13     except
14       Result := False;
15     end;
16   finally
17     icmp.Free;
18   end;
19 end;

Dll接口模塊spa

關於Dll接口其實沒什麼可說的,不一樣的接口使用方法不同,這裏給出通用的Dll接口重寫和調用的例子調試

關於Delphi Dll接口重寫:Delphi - 建立SuperDll 持續更新日誌

關於Delphi Dll接口調用:Delphi - 調用SuperDll 持續更新

郵件發送模塊

參考我之前寫過的:Delphi - Indy TIdMessage和TIdSMTP實現郵件的發送

定時模塊

採用Timer控件,經過前臺設置執行間隔、Enable屬性,來控制對關鍵事件的定時執行效果 

測試Demo運行效果

頁面佈局

運行效果

 

 

  做者:Jeremy.Wu
  出處:https://www.cnblogs.com/jeremywucnblog/   本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

相關文章
相關標籤/搜索