Informationen zum monitord 2.0
Moin,
da diese Infos sonst immer unterzugehen scheinen, möchte ich hier kurz auf wesentliche Infos zum aktuellen monitord hinweisen. Dieser Beitrag ist nicht notwendigerweise vollständig und abschließend und kann auch noch Fehler enthalten.
Web-Präsenz des monitord: http://www.monitord.de
a) SVN-Access:
Der Zugang zu den Sourcen im SVN läuft über http://svn.monitord.de/monitor/trunk
Checkout:
svn co http://svn.monitord.de/monitor/trunk
Oder mit einem SVN-Frontend, siehe http://subversion.tigris.org/links.html.
b) Bugtracking:
Das Bugtracking läuft zur Zeit über http://bts.monitord.de
c) Features:
Der monitord 2.0 läuft unter Windows und Linux/Unix. Ausgewertet werden ZVEI (einschließlich Sirenentöne), Pocsag und FMS. Es gibt Aufnahme- und Datenbank-Speichermodule, wobei noch nicht abschließend sicher ist, was im aktuellen Release und was in einem späteren Release integriert werden soll. Voraussichtlich werden Aufnahme- und Datenbank-Plugin bereits im 2.0er-Release bestehen; das Datenbank-Modul läuft einwandfrei, die Aufnahme-Funktion ist noch nicht komplett implementiert.
Eine History-Funktion ist noch nicht implementiert, vorsichtig aber für die 2.1 geplant. Ein früher angedachtes HTTP-Push-Modul um die Daten an einen Webserver/ein PHP/Perl-Skript zu senden entfällt, seitdem LUA-Unterstützung integriert ist und damit eine Möglichkeit besteht, bei eingegangenen Alarmen/Telegrammen Aktionen auszuführen (also z.B. auch die Daten an ein anderes Skript zu übergeben).
d) Frontends:
Es gibt (im SVN) PHP-Frontends, die auf in einer MySQL-DB gespeicherte Daten zugreifen und diese anzeigen können. Direkte monitor-Clients (via Socket) sind zur Zeit nur bedingt vorhanden. Auch ein wx-basiertes Python-Frontend gibt es wohl, eine PHP-Neuentwicklung war mal in Arbeit, wie da der Staus ist, ist derzeit nicht bekannt.
Kein direktes Frontend aber eine weitere Möglichkeit, eingehende Alarme zu behandeln, ist die Unterstützung der Skriptsprache LUA (http://www.lua.org/), die getrennt für die Socket-Protokolle und die Datenbank-INSERTs eingehende Tonfolgen und Co. behandeln kann. Das heißt, die Eintragung/Ausgabe kann unterdrückt oder mit einer Programmausführung mittels os.execute() behandelt werden. Zum Beispiel ist so ein SMS-Versand mit einem SMS-Tool und mehr möglich.
e) Kompilieren (Windows):
Bei den Entwicklern scheint sich die Kombination von MSYS und MinGW http://www.mingw.org durchgesetzt zu haben. Der reine monitord kann ohne Plugins (lame-Encoder/MySQL-Support/LUA) kompiliert werden (./configure, make).
Für die Plugins sind erforderlich:
Die aktuelle MySQL-Bibliothek http://www.mysql.org sowie die lame-Bibliothek http://lame.sourceforge.net (einschließlich Header, siehe auch g)). Cross-compiling ist mit MySQL-Support nicht möglich. LUA gibts bei http://www.lua.org/; wichtig ist hier, mindestens die Version 5.1 zu laden.
Einschließlich Plugins wird der monitord kompiliert mit: ./configure --enable-plugins --with-mysql --with-lame --with-lua, make
Für das Kompilieren auf einem unixoiden System sind die entsprechenden dev-Packages zu installieren.
f) Windows-Installer:
Es wurde im Verzeichnis win32-nsis eine Konfiguration für den Nullsoft Installer http://nsis.sourceforge.net abgelegt, der eine kompakte Installationsdatei mit den nötigen Bestandteilen (für MS Windows) baut. Ein fertiges Installer-Paket für Windows ist unter http://www.monitord.de herunterladbar.
g) Linux-Pakete:
Von der aktuellen Version haben wir Linux-Pakete (RPM) unter http://tinyurl.com/monitord-nightly abgelegt (cwh). Eine Version vom 16.09.2009 (mit funktionierendem Audioplugin) existiert unter http://tinyurl.com/monitord2009 (ebenfalls RPM).
h) Plugins (mysql und lame) kompilieren:
1. Vorbereitungen für das Lame-Plugin:
a) Download der Sourcen von http://lame.sourceforge.net/download.php
b) Entpacken in ein beliebiges Verzeichnis
c) in MSYS: ./configure im entsprechenden Verzeichnis
d) in MSYS: make
e) in MSYS: make install
f) nachsehen, ob die lame.h in /include und die libmp3lame.a in /lib bzw. im entsprechenden include-Pfad liegt.
2. Vorbereitungen für das MySQL-Plugin:
a) Download des aktuellen MySQL-Pakets von http://www.mysql.org
b) entnehmen der libmySQL.dll aus /bin bzw. bearbeiten an beliebiger Stelle wie in c) und d) beschrieben
c*) in MSYS: reimp -d libmysql.lib
d*) in MSYS: dlltool -k --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a
e) Prüfen, ob die nötigen Header-Files aus dem mysql-Ordner/include in /include/mysql vorliegen sowie ob die libmysql.a in /lib enthalten ist. Nötigenfalls entsprechend kopieren
Wichtig: Für den korrekten Lauf von ./configure ist es möglicherweise notwendig, die libmysql.a temporär beliebig umzubenennen (z.B. in libmysql). Für das make benötigt sie wieder ihren urpsrünglichen Namen!
* - hierfür wird das Tools-Paket für den MinGW namens "MinGW Utilities" benötigt. http://www.mingw.org/msys.shtml
i) Es gibt scheinbar Auswertungsprobleme im Kontext eines 64bit-Systems. Wie genau, konnte nicht nicht ausreichend ergründet werden.
j) Fragen, Probleme und Anregungen:
Hier im Forum, nachzulesen vor allem im Thread "monitor 1.9.0 - aber richtig :)", der Thread ist sehr lang, und die enthaltenen Informationen müssen noch durchgesehen und sinnvoll sortiert werden. Für neue Anfragen bitte einen neuen Thread eröffnen.
So weit - Fehlermeldungen und Anregungen bitte hier im Forum oder direkt im BTS; ich werde diesen Artikel immer mal wieder erneuern.
Martin
History dieses Beitrags:
04.05.11: Hinweis auf Linux-Pakete eingefügt
30.03.11: Allgemeine Anpassung an die Entwicklung
15.03.10: LUA-Unterstützung
pre-15.03.10: Grundgerüst des Artikels
Neues Linux, neues Pech...
Moin Forum,
ich habe mir einen kleinen ThinClient (Futro) aufgesetzt mit absolute-Linux (www.absolutelinux.org). Wenn ich versuche, den monitord zu compilieren, bekomme ich folgende Fehlermeldung:
Code:
cd . && /bin/sh /home/hk/trunk/missing --run autoheader
aclocal.m4:16: warning: this file was generated for autoconf 2.61.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.
/usr/bin/m4:configure.ac:67: bad expression in eval: use_plugins=${enableval}+0
/usr/bin/m4:configure.ac:67: bad expression in eval (bad input): 7 > (use_plugins=no)
/usr/bin/m4:configure.ac:67: bad expression in eval (bad input): 20 > (use_plugins=no)
/usr/bin/m4:configure.ac:67: bad expression in eval (bad input): 27 > (use_plugins=no)
/usr/bin/m4:configure.ac:67: bad expression in eval (bad input): 35 > (use_plugins=no)
/usr/bin/m4:configure.ac:67: bad expression in eval (bad input): 44 > (use_plugins=no)
/usr/bin/m4:configure.ac:67: bad expression in eval (bad input): 47 > (use_plugins=no)
/usr/bin/m4:configure.ac:67: bad expression in eval (bad input): 51 > (use_plugins=no)
autom4te: /usr/bin/m4 failed with exit status: 1
autoheader: '/usr/bin/autom4te' failed with exit status: 1
make: *** [config.h.in] Error 1
Ich habs mal mit automake -V gecheckt, meine Version ist 2.65. Da diese neuer ist, dachte ich, dass eigentlich das Compilieren funktionieren sollte. Leider ist dem nicht so und ich muss mal wieder einen neuen Anlauf für den Wechsel zum monitord canceln.
Hat jemand eine Idee / einen Workaround / eine Lösung für dieses Problem???
Gruß,
Funkwart
PS: Ich habe versucht, ohne Plugins zu compilieren, damit erstmal wenigstens der Grundstock gelegt ist. Leider daneben :-(
Beispielclient mit wxWidgets im SVN
Hallo,
einen KLEINEN Beispielclient findet man im SVN (http://svn.monitord.de/wxFrontend/); das Ding hatte ich mal zum Debuggen hingehackt, es ist aber nicht besonders komfortabel, und es sind nicht alle Features implementiert. Vielleicht kann es aber als brauchbare Grundlage für Weiterentwicklungen genutzt werden? Connect, Datennanahme und Darstellung in Fenstern sind jedenfalls drin.
Viele Grüße
Martin
Liste der Anhänge anzeigen (Anzahl: 1)
MySQL mit SSL
Hallo an alle,
ich habe gerade mal ein Support für SSL Verbindungen in der /monitord/plugins/pluglibmplugin_mysql.cpp hinzugefügt.
Das sieht Konkret so aus: (diff auf der Konsole)
Code:
$ diff libmplugin_mysql.cpp libmplugin_mysql.cpp_old
42,45d41
< unsigned int ssl;
< std::string ssl_cacert;
< std::string ssl_cert;
< std::string ssl_key;
145,148d140
< ssl=getNodeInt(config,"ssl",0);
< ssl_cacert=getNodeText(config,"ssl-cacert","0");
< ssl_cert=getNodeText(config,"ssl-cert","0");
< ssl_key=getNodeText(config,"ssl-key","0");
162,171d153
< if (ssl==1)
< {
< mysql_ssl_set(&m_mysql,
< ssl_key.c_str(),
< ssl_cert.c_str(),
< ssl_cacert.c_str(),
< NULL,
< NULL);
< }
<
Die Änderungen in der Konfigurationsdatei bei den MYSQL Server Einstellungen sehen dann wie folgt aus:
HTML-Code:
<ssl>1</ssl> <!-- 0: ssl disabled - 1: ssl enabled -->
<ssl-cacert>/etc/mysql/ssl/ca-cert.pem</ssl-cacert>
<ssl-cert>/etc/mysql/ssl/client-cert.pem</ssl-cert>
<ssl-key>/etc/mysql/ssl/client-key.pem</ssl-key>
Die Datei habe ich hier mal angehängt und bitte jemand mit Zugang zum svn bei Interesse ins repo hoch zu laden.
Gruß
Hugch
PS: Zu meinem Problem oben drüber hat noch keiner eine Idee?