ICMP Ping

leo lencioni <>
Mon Feb 7 18:32:41 CET 2005


I am trying to write a very simple network monitoring tool. Not trying
to replace any of the commercial products/open source, but as a nice
example to try and learn about erlang features (concurrency and
Mnesia) in a real scenario.

Here are my requirements:

- Approximately 200 tcp/ip hosts + routers/switches will be under
control of the application.
- I need to record UP/DOWN status for each device. The application
will determine up status of a device if the device responds
successfully to an ICMP ECHO.
- Every host will be polled periodically every X minutes. The poll
interval is a parameter for each host.
- Result of every poll will be logged to mnesia database for report generation. 
- There will be an operator interface. Status of device will be shown
via operator interface interface (I have not make a decision if
interface will be GS/WEB/TEXT). The application must support multiple
users. Each user will decide which parts of the network he wants to
see. For each host the operator interface will show up/down status, if
device down, time of the last successful ping.
- Maintenance interface, for adding/modifying/deleting hosts and users. 
- Reports for doing monthly and daily availability calculations. 

I thinked about using your shell solution and parsing the result of
the os/ping command. But I have some concerns about scalability, since
I will have a great number of hosts to ping, and I thought that I can
have some performance problems for having to start a shell for each
ping command. Probably this is a case of premature optimization. Thats
the reason of my original question and my idea of building some kind
of ping server, with a number of worker threads doing the actual ping.

Thanks for your time.



More information about the erlang-questions mailing list