1 Easy configuration: edit a JSON file
1 Multiple checks: Ping, HTTP/Rest, TCP, Process, Windows Scheduler, Windows Service, SNMP (free disk space, uptime), Oracle DB function, File existence, WMI (and Windows performance counters), (S)FTP file existence, Executable return code, SSL certificate...
1 Multiple notifications: Windows tray notification, e-mails, SMS (using a FoxBox), Android notification (using WirePusher), Jira...
1 Add your own plugins
1 Log files can be opened with LogExpert

DownloadDonate

Once again, I've developed PingMonitor for my own use. Some parameters or functions are surely missing but it already offers a lot of things... Ping was the first implemented check... This application is intended to easily and quickly replace some manual repetitive checks, not to replace professional software like Nagios.

Installation / test

Download, unzip and run PingMonitor.exe! Easy!

The sample will check if www.google.com is replying to ping...

General configuration: edit PingMonitor.exe.config

Do not discard any parameter of this file.

Restart the application after editing this file.

Name Description Default (in bold) / Sample
CheckEveryMinutes Number of minutes between two executions
5
SMTP
FromMail
DestMails
SMTPPort
SMTPUser
SMTPPass
SMTPSSL
Host of the mail server used for notifications
From e-mail address
To e-mail addresses, separated by '£'
Server port
User
Password
Enable SSL
smtp.paludour.local
noreply@dummy.com
alert1@dummy.com£alert2@dummy.com
25
MySMTPUser
MySMTPPassword
False
AlertEveryHours Number of hours between two same alerts
24
JiraURL
JiraUser
JiraPass
JiraProject
URL of the Jira server
Username
Password
Name of the Jira project
https://support.paludour.local
MyJiraUsername
MyJiraPassword
PaludourSD
CheckNetwork If True and network is down, don't execute the checks
True
FoxBoxHost
FoxBoxGsmID
FoxBoxPass
SMSNumber
Host of the FoxBox device to send SMS
Id of the SIM card slot
Password
Telephone number
foxbox.paludour.local
1
MyFoxBoxPassword
+32000000000
AllowedSSLHosts Allowed SSL hosts with non-valid SSL certificate, separated by ','
foxbox.paludour.local
LogsViewer
LogsViewerArgs
Application to view logs files
Arguments for the application
C:\LogExpert\LogExpert.exe
"{0}"
WirePusherPass Password used to crypt notifications with Android WirePusher. Must be the same as the one in WirePusher
WirePusherPassword
Encryption If True, passwords and connection strings are encrypted in the configuration files. PingMonitor will ask you the passwords and you'll have to paste the encrypted ones in the configuration file.
False
DefaultConnectionString Connection string used by default to connect to Oracle database
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(COMMUNITY=tcp.world)(PROTOCOL=TCP)(Host=db.paludour.local)(Port=1526)))(CONNECT_DATA=(SID=palu)));Pooling=false;Persist Security Info=True;User ID=USER;Password=PASS
bCheckForUpdate If False, don't check for an update at startup (only registered version)
True
WindowsNotification If True, Windows tray notifications are enabled
True

Configure checks: edit PingMonitor.json

Common parameters

Common paramerers to all checks.

Name (bold if mandatory) Description Default (in bold) / Sample
Name Name of the check
"Name": "Name 1"
FixedTimes First check at fixed time.
MinMinutesBetweenChecks must also be set (usually to 1440 for 24 hours).
"FixedTimes": [
  "2020-01-01T09:00:00",
  "2020-01-01T14:00:00"
],
"MinMinutesBetweenChecks": 1440
MinMinutesBetweenChecks Minimum number of minutes between two checks.
If 0: the general parameter CheckEveryMinutes is used
If -1: the check is activated manually
"MinMinutesBetweenChecks": 0
NbFailsToAlert Number of consecutive fails/events to trigger the notifications
"NbFailsToAlert": 2
JiraID
JiraAssignee
ID of the Jira component
Name of the Jira assignee
"JiraID": "10153",
"JiraAssignee": "INFRA"
AlertBySMS true to alert by SMS
"AlertBySMS": false
WirePusherIDs IDs of the WirePusher clients (shown in the Android application), separated by ','
"WirePusherIDs": "ABCDEFGHI,JKLMNOPQR"

Ping

Tries to ping a hostname.

"$type": "PingMonitor.CheckPing, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
Host Host to ping
"Host": "host1.paludour.local"
Timeout Timeout in milliseconds
"Timeout": 5000

Database function

Call an Oracle database function and check the returned value.

"$type": "PingMonitor.CheckDBFnc, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
ConnectionString Connection string, if different as the one defined as general parameter
FncName Name of the database function to call.
"FncName": "SCHEMA.PACKAGE.FUNCTIONNAME"
Timeout Timeout in milliseconds
"Timeout": 5000
Type Defines the behaviour:
MINVAL (DB function returns NUMBER): fails if returned value is less than Param.
MAXVAL (DB function returns NUMBER): fails if returned value is greater than Param.
TXT (DB function returns VARCHAR2) and Param empty: fails if returned value is not empty.
TXT (DB function returns VARCHAR2) and Param not empty: fails if returned value is different from Param.
"Type": "MAXVAL"
Param See Type
"Param": "9500"

Executable

Run executable and check the exit code.

"$type": "PingMonitor.CheckExe, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
FileName Filename of the executable to execute.
"FileName": "C:\\Strawberry\\perl\\bin\\perl.exe"
Arguments Arguments for the executable
"Arguments": "\"C:\\PoolConnection.pl\" --host host2.paludour.local -w 90 -c 90"
WorkingDirectory Working directory for the executable
"WorkingDirectory": "C:\\temp"
Timeout Timeout in milliseconds
"Timeout": 5000
Type Defines the behaviour:
EXITCODE: fails if exit code is different of Param.
EXITCODEVIEWOUTPUT: fails if exit code is different of Param and copy output of the executable to log files.
"Type": "EXITCODE"
Param See Type
"Param": "0"

Files

Check for new or old files in a directory.

"$type": "PingMonitor.CheckFile, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
Directory Directory to search files into
"Directory": "\\\\host3.paludour.local\\ERR"
SearchPattern Search pattern for the files
"SearchPattern": "*.txt"
Type Defines the behaviour:
FILEEXISTS and Param ≥ 0: fails if it exists files newer than Param days.
FILEEXISTS and Param < 0: fails if it exists files older than Param days.
"Type": "FILEEXISTS"
Param See Type
"Param": "-2"

Group

Group several checks. Possibility to skip next checks if a fail/event occurs. Only for registered users.

Plugin

Write your own .Net plugin. Only for registered users.

Process

Check if a process is running.

"$type": "PingMonitor.CheckProcess, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
ProcessName Name of the process
"ProcessName": "Notepad++"
Host Hostname of the remote computer
"Host": "host4.paludour.local"

REST service / HTTP

Check the response of an HTTP query.

"$type": "PingMonitor.CheckRest, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
URL URL to query
"URL": "http://host5.paludour.local:8080"
Resource Resource / Page / Queystring
"Resource": "/RestService.svc/Test?param=value"
Type Defines the behaviour:
STATUT: fails if HTTP status is different than Param.
MAXVAL: fails if response content is greater than Param.
REGEX: fails if response doesn't match reular expression pattern Param.
"Type": "STATUT"
Param See Type
"Param": "200"

Scheduler

Check a Windows scheduled tasks.

"$type": "PingMonitor.CheckScheduler, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
Host Hostname of the computer
"Host": "host6.paludour.local"
TaskName Task name
"TaskName": "\\PALUDOUR\\MyTask"
NbMinutesOK Fails if no success for NbMinutesOK minutes
"NbMinutesOK": 2880
NbMinutesKO Fails if errors for NbMinutesKO minutes (without newer success)
"NbMinutesKO": 30

Service

Check the state of a Windows service. Fails if the status is not Running.

"$type": "PingMonitor.CheckService, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
Host Hostname of the computer
"Host": "host7.paludour.local"
ServiceName Name of the service
"ServiceName": "MyService"

SNMP

Check the uptime of a server and the free disk space.

"$type": "PingMonitor.CheckSNMP, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
Host Hostname of the computer
"Host": "host7.paludour.local"
Community SNMP community
"Community": "CoMmUnItY"
SNMPItems Items to check : uptime in days and/or free disk(s) space in GB
"SNMPItems": [
  {
    "$type": "PingMonitor.SNMPSysUpTime, PingMonitor",
    "DaysLimit": 15.0
  },
  {
    "$type": "PingMonitor.SNMPDiskSpace, PingMonitor",
    "DiskNumber": 1,
    "FreeGbLimit": 1.0
  }
]

SSL

Check if SSL certificate of a site is valid or about to expire.

"$type": "PingMonitor.CheckSSL, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
URL URL to check
"URL": "https://www.paludour.net"
DaysLimit Fails if certificate expires before DaysLimit days
"DaysLimit": 7

TCP

Check if a server is listening to a specific TCP port.

"$type": "PingMonitor.CheckTCP, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
Host Hostname of the computer
"Host": "host8.paludour.local"
Port Port number
"Port": 8088
Timeout Timeout in milliseconds
"Timeout": 5000

WinSCP

Check if files exist on a (S)FTP server.

"$type": "PingMonitor.CheckWinSCP, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
Protocol Protocol: Ftp or Sftp
"Protocol": "Sftp"
Host Hostname of the server
"Host": "host9.paludour.local"
Port Port number
"Port": 2222
User Username
"User": "MyUsername"
Pass Password
"Pass": "MyPassword"
FingerPrint Certificate fingerprint
"FingerPrint": "ecdsa-sha2-nistp384 384 dmacFgrSsfREZc65PMD/eVffrdfGf7J6cT73FSZb7CS="
Type Defines the behaviour: FILEEXISTS
"Type": "FILEEXISTS"
Directory Directory where to find files
"Directory": "/MyFolder"

WMI / Performance counters

Check Windows Management Instrumentation, Performance Monitor Counters (with Wql query).

"$type": "PingMonitor.CheckWMI, PingMonitor"
Name (bold if mandatory) Description Default (in bold) / Sample
Host Hostname of the computer
"Host": "host9.paludour.local"
Timeout Timeout in milliseconds
"Timeout": 15000
Wql SQL for WMI
"Wql": "SELECT NumberOfPooledConnections FROM Win32_PerfFormattedData_ODPNETManagedDriver_ODPNETManagedDriver"
Type Defines the behaviour:
MAX: fails if the highest value returned by Wql is greater than Threshold.
"Type": "MAX"
Property Property name to check
"Property": "NumberOfPooledConnections"
Threshold See Type
"Threshold": 90.0

Notifications

Just to check that PingMonitor is still running and notifications are OK. This sends test notifications.

"$type": "PingMonitor.CheckNotifications, PingMonitor"

Remember to set MinMinutesBetweenChecks, eventually FixedTimes and, if desired, AlertBySMS and WirePusherIDs.

FAQ / Tips

  1. Execute PingMonitor with a user which has access to all the required resources.
  2. To always show the PingMonitor icon in the traybar, click the little up arrow 'Show hidden icons' on the traybar. Next, click 'Customize...' and choose 'Show icon and notifications' for PingMonitor.

Download

Microsoft .Net Framework 4.7.2 must be installed.

PingMonitor may not be bundled with other software, included on CDs etc, linked to from other web sites or made available for download elsewhere. Link to this page instead.

Version 1.0
PingMonitor.zip (14 MB) for Windows 10.

Donate

If you have tried PingMonitor and want to support its development, make a donation; give what you wish (minimum 6 EUR or 9 USD for personal use). When I receive a donation, I send your registration key.

It's fast and easy. Just click on the 'PayPal' button below.

Thanks, Paludour.

Links / Credits

LogExpert
Jira
FoxBox
WirePusher


Last updated: 9/2020.