ems (http://pagesperso.erasme.org/piktmages/ems.html) ----------------------------------------------------------------------- $Id: README,v 1.3 2002/03/03 15:19:16 michel Exp $ EMS is an event manager system. It's purpose is to centrally collect alerts, notices, performance data or whatever (anything that can be thinked as an 'event'). It has the ability to consolidate events together, provided that the events are contructed in a consistent way. This packages contains these files : README : this file COPYING : license (GPL) db/events.sql : database creation file for Mysql bin/eventd : event manager (Perl) bin/epush : client agent, the event sender (Perl) etc/eventd.conf : a starter config file example/test*.txt : events tests files misc/eventd : a redhat style startup script misc/perlsetuptest.pl : a perl setup test script used by top level Makefile ui/speech/speechd.pl : a talking user interface, not updated ui/web/php/* : a php web interface ui/web/cgi/* : a CGI web interface Pre-requisities --------------- Some pre-install work might need to be done in order to install EMS; particularly, some perl modules needs to be first installed. Installation of a perl module is easy : perl -MCPAN -e "install module" For more info, perldoc CPAN can help. * epusher needs the following (non included in perl distribution) perl modules is you want to cipher events : Crypt::CBC and one of the following : Crypt::Blowfish Crypt::Blowfish_PP Crypt::DES Crypt::PPDES Crypt::IDEA Crypt::DES_PP Crypt::RC4 Crypt::GOST Crypt::OTP Crypt::Twofish2 Crypt::Solitaire etc... * eventd needs the following perl modules : Crypt::CBC (if you need ciphering) Crypt::(choose among ciphering algos) DBI DBD::(put your favorite database backend here) eventd also needs a DBD backend. Theorically, everything is done to let you use your favorite database, but only MySQL has been tested, so here I advise DBD::mysql Note that the actual PHP GUI only handles MySQL. User Interfaces --------------- Actually, three things are in the works : - a speech interface. It requires a running festival server and Festival::Client to run. If you use gnome or enlightenement, don't forget to kill esd or festival won't work. That interface poll the database regurlarly (default every 5 minutes) and 'speaks' new messages - a web/php interface. It is quite functional now. There is even map support : you can upload your own maps on the server, click on it anywhere and say 'this location is myhost.mydomain.com'. Subsequently, when an event arrives for that host, it will display a cliquable spot at that location. Upload and spot definitions are managed thru the browser. Note that a host can appear on several maps, allowing different scale (or network layers) maps for hosts. A host can even be several times on the same map. A map index pages shows clickable thumbnails of all your maps having events (active or closed). You need Apache + PHP (including GD and MySQL support) in order to make this work. It has been developped on PHP4 but should work on PHP3. Installation ------------ * ems A 'make install test' should do the trick, as long as you have all the above modules installed. If you don't have a redhat like system, make install will fail trying to install an init script. Also paths may have to be customized if you need something different. Changing eventd.conf might also be a good idea in this case. If you run MySQL, you will need to change the 'DatabaseHost' entry in eventd.conf since eventd will try to chroot, and when MySQL connects to 'localhost', it tries via a unix socket (which is not accessible anymore after chrooting). So put your IP instead of 127.0.0.1 Note that the database format has changed between pre3 and pre4. New tables (hostsmaps) and a new field ('targethost') in events table. pusher and eventd changed accordingly, and pikt alarms must be changed to handle this (see scripts below). This allow to spot the problematic host on maps (the target host) when an alrm is emmited from another hosts (e.g. when a monitoring host tests aliveness by ping a targethost). * PHP user interface Just copy the pages at a fine place. Give write permissions to the web server user for the 'maps' directory (to allow map upload), define some spots on map and you're done, and ti the php pages directory so apache user can write the config file. Refeer to ui/web/php/README for more info. Use --- Usage examples are in examples/ PIKT, PIKT+RRDTool and tcp_wrappers hosts.deny examples are provided. The other 'test*' files are used by the tests checks and don't help much, except to see what pusher data feed is supposed to be, since pusher takes some command line arguments, and events on STDIN. The latest addition is a PIKT managed hosts.deny that uses pusher to complain about abnormal use of ports. Quite usefull Finally ------- I *need* feedback, code and ideas. Don't hesitate, this stuff won't improve without external ideas and help. Acknowledgements ---------------- Robert Osterlund (PIKT author) gave loads of useful suggestions, and fixed my pikt setup many times. Berto many many thanks for your patience and help. Thanks to erasme for supporting ems. We gratefully acknowledge Open Channel Software's support for developing the following portions of this code: eventd.cgi and XML decoding overlib code in web UIs fro Erik Bosrup -- Michel Blanc