EFT Advanced Workflow

Bloggat, Utveckling

EFT Ping Service

Jag har spenderat otaliga timmar med Globalscape EFT som är en Managed File Transfer applikation (MFT). En server jag övervakar verkade ha vissa driftproblem så jag byggde en ping-tjänst som manageras av EFT.

Fortra erbjuder ett MFT-verktyg som de kallar Globalscape Enhanced File Transfer som i stora drag är ett avancerat verktyg för att skyffla filer från punkt A till B på olika sätt. Efter många timmars användning av verktyget har jag hittat flera egenheter som jag kommer skriva om så småningom, saker som man kan tycka inte borde finns i en applikation som ligger runt miljonen för en licens. Men verktyget har också flera fördelar. Hursomhelst, i detta fall använder jag EFT för att ping-övervaka en server. Om maskinen inte svarar på ping inom 30 ms så blir jag notifierad med ett mail. När servern är tillgänglig igen får jag en ny notis om detta.

Ping-tjänsten startar med en Event Rule som är schedulerad att köras en gång per minut. Event Rulen anropar ett Advanced Workflow och skickar med några inparamteterar så att man kan anropa AW från flera Event Rules om man vill återanvända den för att pinga flera servrar.

Rule Builder

Event Rule – Rule Builder

Parametrarna som skickas med är [ServerName], semikolonseparerad lista med [EmailAddress] och [DebugMode] som jag använder för att snabba på utvecklingen av sådana här script. Det gör att man i AW kan köra skriptet direkt i Debug-läge med defaultvariabler så man inte behöver lämna AW och köra scriptet från Event Rulen.

Input parameters:
%DebugMode% [0] | [1]
%ServerName%
%EmailAddress%
%Threshold% (Optional)

Men innan ovan måste Advanced Workflowet finnas och jag kallar det [PingServer].

Så här ser koden ut.
Om [DebugMode] = True visas resultatet i en message box istället för att ett notifieringsmail skickas.
[Threshold] är default satt till 30ms så om ping-anropet tar längre tid än 30ms (1-5 ms är normalt för en ping) så triggas en action.
[LogFilePath] är sökvägen till där scriptet sparar ut en fil som håller reda på om ett mail skickats eller inte så att man inte blir spammad under tiden servern inte svarar på ping. Denna flagga gör att man bara får ett mail när servern inte svarar respektive ett mail när servern är tillgän

<AMVARIABLE NAME="DebugMode" VALUE="1" TYPE="number" ISPARAMETER="YES" />
<AMVARIABLE NAME="ServerName" VALUE="SERVER.DOMAIN.NET" TYPE="text" ISPARAMETER="YES" />
<AMVARIABLE NAME="Threshold" VALUE="30" TYPE="number" ISPARAMETER="YES"/>
<AMVARIABLE NAME="RelayTime" VALUE="" />
<AMVARIABLE NAME="IpAddress" VALUE="" />
<AMVARIABLE NAME="Message" VALUE="" />
<AMVARIABLE NAME="LogFilePath" VALUE="D:\MFTMonitoring\Ping" TYPE="text" ISPARAMETER="YES" />
<AMVARIABLE NAME="EmailAddress" VALUE=EMAIL@ADDRESS.SE TYPE="text" ISPARAMETER="YES" />
<AMVARIABLE NAME="Subject" TYPE="text" ISPARAMETER="YES">%ServerName%</AMVARIABLE>
<AMNETWORK ACTIVITY="send" AM_ONERROR="CONTINUE" HOST="%ServerName%" RESULTVARIABLE="RelayTime" IPADDRESSVARIABLE="IpAddress" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="Message"><strong>Server name:</strong> %ServerName%<br />
<strong>IP Address:</strong> %IpAddress%<br />
<strong>Relay time:</strong> %RelayTime% ms<br />
<strong>Email threshold:</strong> %Threshold% ms<br />
<strong>Execution day:</strong> %Date()%<br />
<strong>Execution time:</strong> %Time()%<br /></AMVARIABLE>
<AMIF EXPRESSION="%RelayTime% > %Threshold% OR IsNull(%RelayTime%)" USECOMPLEXUI="YES">
   <AMVARIABLE ACTIVITY="set" VARIABLENAME="Message">%Message%<br />
Server is not available.<br /></AMVARIABLE>
   <AMIF ACTIVITY="file_exist" FILE="%LogFilePath%\%ServerName%.txt" MODE="not_exist">
      <AMFILESYSTEM ACTIVITY="write_file" FILE="%LogFilePath%\%ServerName%.txt" APPEND="no">%Message%</AMFILESYSTEM>
   <AMVARIABLE ACTIVITY="set" VARIABLENAME="Message">%Message%

Log file is created under MFT local folder %LogFilePath%\%ServerName%.txt<br />
Email notification is send to %EmailAddress%</AMVARIABLE>
      <AMEMAIL ACTIVITY="send" FROM=SENDER@ADDRESS.SE TO="%EmailAddress%" SUBJECT="%ServerName% is not available" HTML="YES" PRIORITY="high"><strong>MFT reports %ServerName% is not available.</strong><br /><br />
%Message%</AMEMAIL>
   </AMIF>
<AMELSE />
   <AMVARIABLE ACTIVITY="set" VARIABLENAME="Message">%Message%<br />
Server is available again.<br /></AMVARIABLE>
   <AMIF ACTIVITY="file_exist" FILE="%LogFilePath%\%ServerName%.txt">
      <AMFILESYSTEM ACTIVITY="delete" SOURCE="%LogFilePath%\%ServerName%.txt" />
   <AMVARIABLE ACTIVITY="set" VARIABLENAME="Message">%Message%

Log file is deleted under MFT local folder %LogFilePath%\%ServerName%.txt<br />
Email notification is send to %EmailAddress%<br /></AMVARIABLE>
      <AMEMAIL ACTIVITY="send" FROM=SENDER@ADDRESS.SE TO="%EmailAddress%" SUBJECT="%Subject% is available again" HTML="YES"><strong>MFT reports %ServerName% is available again.</strong><br /><br />
%Message%</AMEMAIL>
   </AMIF>
</AMIF>
<AMIF EXPRESSION="DebugMode = 1">
   <AMSHOWDIALOG WINDOWTITLE="Ping result">%Message%
</AMSHOWDIALOG>
<AMELSE />
   <AMFILESYSTEM ACTIVITY="write_file" FILE="%LogFilePath%\Debug.txt">%Message%
----------------------------------------------------</AMFILESYSTEM>
</AMIF>

Sökvägen måste finnas på EFT-servern: D:\MFTMonitoring\Ping
[EMAIL@ADDRESS.SE] skall ersättas med defaultmottagare av övervakningstjänsten.
[SENDER@ADDRESS.SE] skall ersättas med en giltig avsändaradress.

By  -      


Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *