Performance Daten Verarbeitung mit relationalen Datenbanken
Konzept, Installation und Konfiguration
Andreas Husch
Erster Nagios User Workshop
Kassel, September 2005
…wie bekommt man die Daten in die DB?
+ doppelte Datenhaltung, kein Datenverlust bei Ausfall der DB
- Log File wird riesig
- Log File muss regelmäßig gelöscht werden
+ nur EIN zusätzlicher Prozess
+ Perfparsed kann aggregiert schreiben und somit die DB entlasten
- komplexer zu konfigurieren
+ Daten in Echtzeit in der DB
+ Einfach, rubust, risiko von Datenverlusten gering da jeder write in einer seperaten Transaktion
- Für jeden Check wird ein extra Prozess geforkt (doppelter Load)
Das hier geschilderte Verfahren ist sehr robust und recht einfach einzurichten. Für kleinere Installation bis ca. 500 Services sollte es gute Dienste leisten. Darüber wird es vermutlich Performance Probleme durch zu viele Prozesse verursachen. In solchen fällen sollte man auf den perfparsed ausweichen. — Andreas Husch 13.12.2005 14:47
cat mysql_create.sql | mysql -u nagios -D nagios -p -h localhost
define command{ command_name process-service-perfdata command_line /usr/bin/printf "%b" "$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEOUTPUT$\t$SERVICESTATE$\t$SERVICEPERFDATA$\n" | /usr/local/nagios/bin/perfparse-log2mysql -c /usr/local/nagios/etc/perfparse.cfg }
Hilfreiche Tipps bei Installationsproblemen gibt es in der der PerfParse installations FAQ:
http://perfparse.de/tiki-view_faq.php?faqId=1
— Andreas Husch 04.09.2005 10:13
Man muss einen Benutzer mit den erforderlichen Rechten anlegen, damit dieser in die MySQL Datenbank schreiben darf.
Jetzt ist man im Befehlsmodus für mysql.
Es wurde ein Benutzer nagios mit dem Passwort xxxxxxxx angelegt. Als dieser Benutzer einloggen:
PerParse muss nun installiert und kompiliert werden, damit es genutzt werden kann. Dazu muss es als erstes entpackt werden.
Anschließend den Ordner ins Nagios Verzeichnis (/usr/local/nagios) kopieren, so, dass er unter /usr/local/nagios/perfparse- x.xxx.x liegt.
./configure --prefix=/usr/local/nagios --with-imagedir=/usr/local/nagios/share/images/ --with-cgidir=/usr/local/nagios/sbin --with-http_image_path=/images
Sollte Fehler der Libaries auftreten kann das Paket gd-devel helfen!! –> http://www.rpmseek.com
Folgende Dateien ändern:
<font color="orange">--> so bleibt die sample Datei erhalten und kann bei Bedarf einfach wieder eingesetzt werden</font>
In den Ordner von perfparse/scripts wechseln
<font color="orange">--> mit dem obigen Befehl wird die zuvor erstellte Datenbank, mit Namen perfparse, mit Inhalten gefüllt </font>
Das Passwort lautet in diesem Fall 'xxxxxxxx', es sollte keine Fehlermeldung kommen. Dieser Befehl hat die Tables der Datenbank PerfParse angelegt, zum Überprüfen ob alles geklappt hat:
nagios.cfg aufrufen und folgende Dinge hinzufügen bzw. verändern:
process_performance_data=1 cfg_file=/usr/local/nagios/etc/nagios_perfparse.cfg host_perfdata_command=process-host-perfdata service_perfdata_command=process-service-perfdata
resource.cfg aufrufen und folgendes verändern (der USER2 Pfad sollte zu nagios zeigen):
$USER2$=/usr/local/nagios
misccommands.cfg aufrufen und folgende Einträge auskommentieren:
#define command{
#command_name process- host - perfdata
#define command{
#command_name process- service- perfdata
nagios_perfparse.cfg aufrufen und folgenden Eintrag verändern:
diesen Eintrag
//perfparse_nagios_command.pl// durch diesen ersetzen //perfparse_nagios_pipe_command.pl//
Folgende Einträge müssen in der nagios_perfparse.cfg zu finden sein! Bei der Mehrheit wird „$SERVICEPERFDATA$“ fehlen!!!
define command{
command_name process-service-perfdata
command_line /usr/local/nagios/bin/perfparse_nagios_pipe_command.pl /usr/local/nagios/var/perfdata-service.log "$TIMET$" "$HOSTNAME$" "$SERVICEDESC$" "$SERVICEOUTPUT$" "$SERVICESTATE$" "$SERVICEPERFDATA$"
}
define command{
command_name process-host-perfdata
command_line /usr/local/nagios/bin/perfparse_nagios_pipe_command.pl /usr/local/nagios/var/var/perfdata-host.log "$TIMET$" "$HOSTNAME$" "$SERVICEDESC$" "$SERVICEOUTPUT$" "$SERVICEPERFDATA$"
}
Aufrufen und diese Pfade setzen:
Service_Log = "|/**opt**/nagios/var/perfdata-service.log" Service_Log_Position_Mark_Path = "/**opt**/nagios/var"
–> zu Beginn des Pfades steht ein | command (pipe)!!
Achtung: opt steht für optionalen Pfad, default = /usr/local!!
No_Raw_Data = "no" No_Bin_Data = "no"
DB_User = "nagios" DB_Name = "perfparse" DB_Pass = "nagios" DB_Host = "localhost"
Am Ende diese Zeile anfügen:
system ('/usr/local/nagios/bin/perfparse-log2mysql --serviceperf-log /usr/local/nagios/var/perfdata-service.log');
Wichtig an dieser Stelle, die beiden Files: perfdata_log.perfdata-service.log.mark und perfdata-service.log müssen nicht unbedingt manuell angelegt werden. Ich hatte schon das Problem, dass ich keine Einträge bekommen habe, oder er hat mir für jeden Service eine einzelne Log Datei angelegt, dann versucht einfach mal das:
Wirkt oft Wunder,
die beiden Files sollte er dann auch automatisch anlegen!!!
Nun die crontab ändern bzw. folgende Zeilen hinzufügen damit die Datenbank alle zwei Minuten aktualisiert wird: (Ist allerdings nicht zwingend notwendig!)
# Run PerfParse every 2 minutes to update Nagios graphs. 2 * * * * root/usr/local/nagios/bin/perfparse.sh
Link im Nagios Navigationsmenü zu Perfparse anlegen, dazu folgende Zeilen in die side.html einfügen:
<tr> <td width=13> <img src="images/greendot.gif" width="13" height="14" name="perfparse-dot"> </td> <td nowrap> <a href="/nagios/cgi-bin/perfparse.cgi?all_bin=1" target="main" onMouseOver="switchdot('perfparse-dot',1)" onMouseOut="switchdot('perfparse-dot',0)" class="NavBarItem">PerfData Graphs</a> </td> </tr>
Nun sollte man Nagios neu starten und am Rand der Website sollte der Link zu Perfparse sein und auch funktionieren! Daraufklicken, oben auf 'Return to main menu', dann auf 'Administration menu', auf 'View/edit hostgroup', dann die Gruppe eintragen, die es auch unter Nagios in der hostgroup.cfg gibt eintragen, auf 'Enter', dann auf 'edit' in der Tabelle, und bei 'Add new Host to Group' einen Rechner auswählen. Dann oben auf 'Return to main menu', auf 'Graph binary data', einen Rechner und den Rest auswählen.
An dieser Stelle möchte ich nochmal unserer Fuechsin danken, die bei dieser Anleitung den aller größten Anteil hat! DANKE!
— gore-tex 29.03.2006 14:15