Translations of this page:

Perfparse

Performance Daten Verarbeitung mit relationalen Datenbanken

Konzept, Installation und Konfiguration

Andreas Husch
Erster Nagios User Workshop
Kassel, September 2005

Warum überhaupt Addons?

  • Nagios ist ein Monitoring System, Build in Reporting nur sehr begrenzt
  • Man will “hübsche Grafiken” im Zeitverlauf
    • Als Ist Zustand Anzeige
    • Als Vorhersage Instrument
  • Management möchte SLAs monitoren

Lösungansätze

  • “Generation 1”: Externer Datensammler der Graphen generiert welche im Nagios verlinkt werden (keine PerfData verarbeitung! z. B. MRTG)
  • “Generation 2”: Verwendung der von Nagios gesammelten PerfData, externes Tool dockt an und graphed diese Daten (z. B. PNP,NagiosGrapher)
  • “Generation 3”: Verwendung der von Nagios gesammelten PerfData, sammlung der Daten in einer relationalen DB, beliebige weiterverarbeitung möglich (Graphen, detail Reporting etc. –> PerfParse )

Generation 3 - Pro/Contra

  • Pro
    • Flexibel
    • Alle Daten können beliebig lange vorgehalten werden
    • Komplexe Reports möglich
  • Contra
    • DBMS benötigt
    • Datenbank kann sehr groß werden
    • Schlechtere Performance als RRDtool

PerfParse

  • Erste “Generation 3” Implementierung
  • Verwendet die Nagios Performance Daten und schreibt diese in eine relationale DB
  • Interface zum generieren von X/Y (für PerfData Plugins) und Gantt Graphen (alle Plugins) wird mitgeliefert

Viele Wege nach Rom...

…wie bekommt man die Daten in die DB?

  • Es gibt 6 offizielle Möglichkeiten, jede hat ihre vor und Nachteile
    • Perodic Nagios Log Parse
    • Nagios Invokes Perfparse
    • Periodic User Log Parse
    • Pipe to Perfparse
    • Perfparse Daemon Server
    • Perfparse Daemon Client

Periodic Nagios Log Parse

+ doppelte Datenhaltung, kein Datenverlust bei Ausfall der DB
- Log File wird riesig
- Log File muss regelmäßig gelöscht werden

Pipe to Perfparse

+ nur EIN zusätzlicher Prozess
+ Perfparsed kann aggregiert schreiben und somit die DB entlasten
- komplexer zu konfigurieren

Nagios Invokes Perfparse

+ 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)

Ergebnis

Installation im "Nagios Invokes Perfparse" Verfahren mit MySql

:!: 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

Kompilieren/Installieren
  1. MySql installieren
  2. Benötigte Devel Librarys installieren (die für Nagios selbst benötigten sowie mysql-dev, zlib-dev, freetype2-dev, fontconfig-dev, xlib-dev [in der Regel in xorg-x11-devel enhalten], glib-dev - bei glib auf eine Version größer 2.0.0 achten!), gd-dev
  3. Perfparse Source herunterladen und entpacken
  4. ./configure ausführen und passende Pfade als Parameter mitgeben damit die Dateien beim make install am richtigen Ort landen (alternativ keine Parameter und die Dateien später von /usr/local/ an den richtigen Ort kopieren)
    1. Auf eventuelle Fehlermeldungen achten! Evtl. noch fehlende libs nachinstallieren.
  5. make
    1. Ebenfalls auf eventuelle Fehermeldungen achten und sicherstellen das alle libs installiert und im „richtigen“ Pfad sind
  6. make install
Konfiguration
  1. Im MySql eine Datenbank und einen User für Perfparse anlegen. Den User auf die Datenbank berechtigen
  2. Das Skript mysql_create.sql (liegt im scripts Ordner des Perfparse Tar) für die angelegte Datenbank auführen und damit die Tabellen anlegen.
    1. z.B.
      cat mysql_create.sql | mysql -u nagios -D nagios -p -h localhost
  3. perfparse.cfg.example in perfparse.cfg umbennen und sicherstellen das sie am richtigen ort liegt (wenn später beim aufruf der Cgis ein Internal Server Error 500 auftritt liegt sie vermutlich an der falschen stelle!)
  4. In perfparse.cfg
    1. Datenbanknamen, Usernamen und Passwort der vorher im MySql angelegten DB angeben
    2. Service_log = “-“ einstellen
  5. Folgendes in die misccommands.cfg von Nagios eintragen (mit den entsprechenden Pfaden):
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
        }
  1. Sicherstellen das in der nagios.cfg „process-service-perfdata“ als Performance Daten Kommando eingestellt ist und die verarbeitung von Performance Daten aktiviert ist.
  2. Nagios neustarten
  3. perfparse.cgi aufrufen und sich die Graphen ansehen ;)

:!: 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

Installation im "Nagios Pipe-to-Perfparse" Verfahren mit MySql

MySQL Benutzer anlegen

Man muss einen Benutzer mit den erforderlichen Rechten anlegen, damit dieser in die MySQL Datenbank schreiben darf.

  • /usr/local/mysql/bin/mysql -u root -p - D mysql

Jetzt ist man im Befehlsmodus für mysql.

  • mysql>GRANT ALL PRIVILEGES ON *.* TO nagios@localhost IDENTIFIED BY 'xxxxxxxx' WITH GRANT OPTION;
  • mysql>quit

Es wurde ein Benutzer nagios mit dem Passwort xxxxxxxx angelegt. Als dieser Benutzer einloggen:

  • /usr/local/mysql/bin/mysql -u nagios –p
  • mysql>CREATE DATABASE perfparse;
  • mysql>quit

PerParse muss nun installiert und kompiliert werden, damit es genutzt werden kann. Dazu muss es als erstes entpackt werden.

  • tar -xzf perfparse-x.xxx.x

Anschließend den Ordner ins Nagios Verzeichnis (/usr/local/nagios) kopieren, so, dass er unter /usr/local/nagios/perfparse- x.xxx.x liegt.

  • cp perfparse- x.xxx.x /usr/local/nagios/
  • cd /usr /local /nagios/perfparse- x.xxx.x
./configure --prefix=/usr/local/nagios --with-imagedir=/usr/local/nagios/share/images/ --with-cgidir=/usr/local/nagios/sbin --with-http_image_path=/images
  • make
  • make install
  • evt. make install-strip

:!: Sollte Fehler der Libaries auftreten kann das Paket gd-devel helfen!! –> http://www.rpmseek.com

Dateien und Tabellen anlegen

Folgende Dateien ändern:

  • cp /usr/local/nagios/etc/perfparse.cfg-sample /usr/local/nagios/etc/perfparse.cfg
  • cp /usr/local/nagios/bin/perfparse.sh-example /usr/local/nagios/bin/perfparse.sh

<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

  • cd /usr/local/nagios/perfparse- x.xxx.x/scripts
  • cat mysql_create.sql | /usr/local/mysql/bin/mysql -u nagios -p -D perfparse

<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:

  • /usr/local/mysql/bin/mysql
  • USE perfparse;
  • SHOW tables; <font color="orange">--> werden jetzt Tabellen angezeigt, dann passt bisher alles!</font>
  • quit;

nagios.cfg aufrufen und folgende Dinge hinzufügen bzw. verändern:

  • vi /usr/local/nagios/etc/nagios.cfg
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):

  • vi /usr/local/nagios/etc/resource.cfg
$USER2$=/usr/local/nagios

misccommands.cfg aufrufen und folgende Einträge auskommentieren:

  • vi /usr/local/nagios/etc/misccommands.cfg
#define command{
#command_name process- host - perfdata
#define command{
#command_name process- service- perfdata

nagios_perfparse.cfg aufrufen und folgenden Eintrag verändern:

  • vi /usr/local/nagios/etc/nagios_perfparse.cfg

diesen Eintrag

//perfparse_nagios_command.pl//
durch diesen ersetzen
//perfparse_nagios_pipe_command.pl//
nagios_perfparse.cfg

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$"
        }
perfparse.cfg

Aufrufen und diese Pfade setzen:

  • vi /usr/local/nagios/etc/perfparse.cfg
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 und No_Bin_Data müssen auf 'no' stehen!
No_Raw_Data = "no"
No_Bin_Data = "no"
  • Database Authentication ja nach MySQL Installation anpassen!!
DB_User = "nagios"
DB_Name = "perfparse" 
DB_Pass = "nagios"
DB_Host = "localhost"
Die Datei perfparse_nagios_pipe_command.pl ändern
  • vi /usr/local/nagios/bin/perfparse_nagios_pipe_command.pl
Am Ende diese Zeile anfügen:
system ('/usr/local/nagios/bin/perfparse-log2mysql --serviceperf-log /usr/local/nagios/var/perfdata-service.log');
service.log Dateien anlegen
  • touch /usr/local/nagios/var/perfdata-service.log <font color="orange">--> eine neue Datei wird angelegt</font>
  • chown nagios.nagios /usr/local/nagios/var/perfdata-service.log <font color="orange">--> die Besitzerechte werden geändert</font>
  • chmod 660 /usr/local/nagios/var/perfdata-service.log <font color="orange">--> die Zugriffsberechtigungen werden geändert</font>
  • touch /usr/local/nagios/var/perfdata_log.perfdata-service.log.mark
  • chown nagios.nagios /usr/local/nagios/var/perfdata_log.perfdataservice.log.mark
  • chmod 660 /usr/local/nagios/var/perfdata_log.perfdata-service.log.mark

:!: 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:

  • Nagios stoppen
  • beide Files löschen
  • Nagios starten

Wirkt oft Wunder, ;-) die beiden Files sollte er dann auch automatisch anlegen!!!

crontab

Nun die crontab ändern bzw. folgende Zeilen hinzufügen damit die Datenbank alle zwei Minuten aktualisiert wird: (Ist allerdings nicht zwingend notwendig!)

  • vi /etc/crontab <font color="orange">--> als root!!!</font>
# Run PerfParse every 2 minutes to update Nagios graphs.
2 * * * * root/usr/local/nagios/bin/perfparse.sh
PerfParse verlinken

Link im Nagios Navigationsmenü zu Perfparse anlegen, dazu folgende Zeilen in die side.html einfügen:

  • vi /usr/local/nagios/share/side.html
<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

nagios/howtos/perfparse.txt · Zuletzt geändert: 2007/09/13 15:15 von lokutus
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0