Symon ist ein kleiner Leckerbissen, um einfach und effizient den Status eines Servers zu überwachen. Symon kommt unter OpenBSD als Paket mit drei westentlichen Teilen daher:
  • symon sammelt die Daten der Teile eines Systems ein, welche man überwachen möchte. Es kann nur Daten sammeln und die gesammelten Daten übergeben.
  • symux nimmt gesammelte Daten von symon entgegen und speichert sie in rrd Dateien ab.
  • syweb erstellt aus den von symux gesammelten Daten Grafiken mithilfe von rrdtool. syweb ist ein php Skript, welches mit Apache im 'chroot'ed Modus arbeiten kann.

Als Beispielsystem habe ich OpenBSD gewählt. Auf den anderen BSDs und Linux wird es ebenso gemacht. Möglicherweise unterscheiden sich die Standardpfade.

Symon installieren

Symon ist im OpenBSD Paketsystem enthalten und erhält bereits symux. Also installiert man es einfach so:

# pkg_add symon                                                                
libart-2.3.20p0: complete                                                    
rrdtool-1.2.30: complete                                                     
symon-2.78: complete                                                         
--- symon-2.78 -------------------
Example configurations for both symon and symux have been installed
in /usr/local/share/examples/symon.

RRD files can be obtained by running
/usr/local/share/symon/c_smrrds.sh

Read the LEGACY section of symux(8) for information about
migrating RRDs from a previous symux version.

Damit man die Pfade von syweb gleich zur Verfügung hat, installiert man es gleich hinterher.
# pkg_add syweb                                                                
syweb-0.55p1: complete                                                       
--- syweb-0.55p1 -------------------
syweb's default install assumes that:
  - apache is chrooted at /var/www
  - rrdtool is installed in the chroot
  - symux rrd files are kept in /var/www/symon/rrds/HOST/*.rrd

rrdtool can be installed in the chroot using
  /var/www/symon/install_rrdtool.sh

Customise /var/www/htdocs/syweb/setup.inc if these assumptions are
incorrect.

Da ich hier von einer Standardkonfiguration ausgehe, wird kein Pfad geändert.
Symon bringt ein kleines Shellskript mit: /usr/local/share/symon/c_smrrds.sh.
Damit kann man die notwendigen rrd Dateien erstellen.

Als nächstes wird konfiguriert:
  • /etc/symon.conf
  • /etc/symux.conf

Wir fangen ganz simpel an und wollen lediglich die erste CPU und den Speicher überwachen. Alle weiteren Systemteile werden auf die gleiche Weise eingetragen.

/etc/symon.conf:
monitor   
{ 
     cpu(0),
     mem
} stream to 127.0.0.1 2100

Und /etc/symux.conf:
mux 127.0.0.1 2100
source 127.0.0.1 
{
   accept 
   { 
      cpu(0),  
      mem
   }
   datadir "/var/www/symon/rrds/localhost"  
}


Jetzt gibt es /var/www/symon/rrds, wohin die rrd Dateien geschrieben werden sollen.
mkdir /var/www/symon/rrds/localhost


Jetzt noch die rrd Dateien anlegen:
/usr/local/share/symon/c_smrrds.sh /var/www/symon/rrds/localhost/cpu0.rrd
/usr/local/share/symon/c_smrrds.sh /var/www/symon/rrds/localhost/mem.rrd



Jetzt noch die Dienste starten und checken:
# /usr/local/libexec/symux                                             
# /usr/local/libexec/symon  
# ps -waux | grep sym
root     25000  0.0  0.0   520  1020 ??  Is     6:13PM    0:00.02 /usr/local/libexec/symux
_symon    5334  0.0  0.0   308   844 ??  Ss     6:19PM    0:00.00 /usr/local/libexec/symon


Um beim Systemstart alles zu starten, kommt noch in die /etc/rc.local:
if [ -x /usr/local/libexec/symux ]; then
  echo -n ' symux';
  /usr/local/libexec/symux
fi
 
if [ -x /usr/local/libexec/symon ]; then
  echo -n ' symon';
  /usr/local/libexec/symon
fi



Am Ende wird noch syweb konfiguriert.
Die setup.inc liegt in /var/www/htdocs/syweb/.
Wenn man Apache chrooted laufen lässt, muss man hier gar nichts mehr tun (außer evtl. PHP installieren). Man kann auf http://localhost/syweb/ gehen und sich über die schöne Statistik freuen.

Hat man Apache mit "-u" gestartet, so muss man ggf. die entsprechende Sektion bearbeiten und die Pfade anpassen. Das sollte man allerdings vor der Konfiguration wissen, damit man das datadir in /etc/symux.conf dahingehend konfiguriert.

Dazu gibts noch ein Modul, um LCD Displays anzusprechen, und einen Client in Perl, mit dem man wunderbar eigene Monitoring Sites/Farmen bauen kann.
Also nochmal gucken auf der symon Website.

symux: could not get a semaphore

Leider steckt dieser "Bug" da noch immer drin. Hier gibts 2 Wege: Entweder symon im code patchen (was blöd ist, wenn man packages nutzt). Oder aber sysctl.

sysctl.conf

Erstmal in der Konsole:
sysctl -w kern.seminfo.semmni=256 
sysctl -w kern.seminfo.semmns=1024



Und noch eintragen in /etc/sysctl.conf
kern.seminfo.semmni=256
kern.seminfo.semmns=1024



Patchen

Alternativ und wenn man symon selber baut, patcht man es eben in symux.h:
--- symux/symux.h.orig Wed Nov 23 13:30:08 2005
+++ symux/symux.h Wed Nov 23 13:26:02 2005
@@ -46,6 +46,6 @@
#define SYMUX_MAXREADTRIES 5
 
/* Number of data slots for clients in shared memory */
-#define SYMUX_SHARESLOTS  20
+#define SYMUX_SHARESLOTS  3
  
#endif /* _SYMUX_SYMUX_H */


Siehe auch hier und hier.


FRESHMAIL 2009-2018