DVG polls the devices either by crontab (exec_rrd.pl) or by an experimental daemon (dvg_snmpd.pl). The problem is - if you use a large installation - the I/O load on the Server. Within a short time all rrd-files are updated and in the same time a lot of updates need to be written to the database.
new polling daemon
the new daemon should use multitasking (threads) to distribute the load over the time.
requirements / wishes
Other things the new daemon should do:
- periodic check the database for new devices (and hosts, locations) (or some notification if someone changes the config, via front- or any back-end-program)
- periodic check for changed parameter. (or some notification if someone changes a parameter, via front- or any back-end-program)
- track the state of a host, at least it should know about following states: up, down, reboot/restart, reachable
- track the state of a device, at least it should know about following states: up, down, shutdown
- notification of the owner
- alarm levels would be nice. if an interface shows some errors, has some unusual drops it would be nice if there are some alarms
- it should be possible to add modules. so the program exec_rrd.pl [exec|modules] is not needed anymore.
are there more needs
Possible Libraries for the implementation: Perl_Object_Environment. Are there other possibilities?
is this a good separation of the different tasks?
- one thread/POE::session to check the database?
- create for each host a thread/POE::session?
- what if the connection to the database is lost? (snmpd.pl needs to restart)
- communication between the threads specially between the config reader and poller-threads?