Mit MRTG Windows-WMI abfragen

Zuerst einmal sei es mir gestattet zu sagen, dass dieses hier nicht ganz neu ist. Ich habe jedoch bisher nur unvollständige Quellen im Nezt gefunden, welche diesen Vorgang beschreiben.

Es gibt viele Tools um Leistungsdaten abzufragen. Ein sehr gutes Programm welches zudem auch noch kostenlos erhältlich ist, ist MRTG von Tobi Oetiker. Das Tool ist zwar eher etwas für Geräte welche sich per SNMP abfragen lassen, kann jedoch durch einfache Scripts auch Werte aus dem WMI übernehmen und grafisch darstellen.

Am Beispiel CPU Last und Speicherverbrauch auf einer Festplatte möchte ich hier meine Vorgehensweise erklären. Benötigt werden dabei ein Windows System von dem aus die Abfragen statt finden, Perl, ein aktuelles MRTG Paket sowie ein paar hilfreiche Tools wie die Sammlung Scriptomatic von Microsoft und ein guter Texteditor (notepad tut es zur Not auch).

Zuerst wird der MRTG entspechend der Anleitung von Tobi installiert. Dort findet man auch den Link zur benötigten Perl Version.  Um etwas Ordnung in das Chaos zu bringen habe ich mich für folgende Struktur unterhalb von Laufwerk C:\ entschieden:

Im Ordner c:\mrtg\_data\cfg liegen alle von mir benötigten Scripte. Das Ausgabeverzeichnis für die Auswertungen liegt im Verzeichnis c:\mrtg\_data\www

Nun geht es an die Konfiguration:

Das Programm MRTG kann von sich aus SNMP Werte abfragen oder ich kann über ein externes Programm Werte bereitstellen und hier liegt für mich die Stärke des Programms.

Die Vorbereitungen für CPU Last

cpuload

Für die Abfrage der CPU Last hab ich mir von Beau’s Blog ein VBScript geladen (procLoad.vbs) und für meine Zwecke ein wenig modifiziert. So ein Script kann natürlich auch mit Scriptomatic “erstellt” werden.

Dieses Script habe ich dann unter c:\mrtg\_data\cfg\cpuload.vbs gespeichert. Da mir die mit indexmaker erstellten MRTG Konfigurationen nicht weiter helfen, habe ich mir die Konfigurationsoptionen von Tobis Seite genauer angesehen und mir eine eigene Konfiguration erstellt. Diese Konfiguration fragt zwei (Dual CPU) Systeme ab und ermittelt die Auslastung. Dieses wird als Prozent-Wert dann an MRTG zurück gegeben und grafisch aufbereitet.

Der Trick an der Sache ist die Schnittstelle zwischen MRTG und dem VBScript:

Target[SYS1]: `cscript //nologo c:\mrtg\_data\cfg\cpuload.vbs 10.10.10.1`

damit wird über den VBScript Interpreter das Script cpuload.vbs gestartet und diesem wird dann die IP des auszuwertenden Servers übergeben.

Mit den Paramtern

MaxBytes1[_]: 100
MaxBytes2[_]: 100

sagt man MRTG dass die vom Script übergebenen Werte maximal 100 groß werden können. Da sich der Wert der CPULast selten unter 0 oder über 100 befindet, reicht hier also der Wert 100.

Die Vorbereitung für HDDSpace

Selbe Vorgehensweise, anderes Script (und andere Parameter). Dieses Mal benötigt das Script hddspace.vbs zwei Parameter:

  1. Das Ziel (als Name, als IP funktionierte bei mir nicht) und
  2. das Laufwerk, welches analysiert werden soll.

Eine Besonderheit gibt es in der mrtg.cfg Datei: Die Werte für MaxBytes müssen entsprechend der Plattengröße angepasst werden.

Um an die Werte der Partition zu kommen gibt es mehrere Möglichkeiten. Die einfachste und schnellste ist es, einfach das Script hddspace.vbs manuell auszuführen – so kann man gleich testen, ob es funktioniert. Über eine Eingabeaufforderung startet man den Befehl

cscript /nologo c:\mrtg\_data\cfg\hddspace.vbs localhost c

und schaut sich die Ausgaben an.

Der zweite Wert (der größere) stellt die Festplattengröße dar, der erste Wert (der kleinere) den aktuell freien Speicher auf diesem Laufwerk. Nimmt man nun den zweiten Wert und trägt diesen bei MaxBytes1 und MaxBytes2 ein, sollte es klappen.

Wichtig hierbei:

Der Wert MaxBytes[1;2] darf hier nicht global definiert werden wie es bei CPULoad der Fall war sondern muss für jedes Target selbst definiert werden (siehe Beispiel-Konfiguration).

Nun geht es noch daran, das ganze regelmäßig auszuführen.

Dazu habe ich mir Batchscripte (Download) erstellt, welche per “Geplante Tasks” alle fünf Minuten gestartet werden. Man kann MRTG auch als Dienst laufen lassen und so verhindern, dass alle fünf Minuten ein kleines schwarzes Fenster aufploppt – das hat für mich jedoch zwei Nachteile:

  • Erstens habe ich ein dedizierten Rechner für MTRG so dass mich das schwarze Fenster nicht stört und
  • zweitens bin ich mit run-task.cmd flexibel und kann durch Hinzufügen eines Perlaufrufes in der run-task.cmd eine weitere Auswertung starten

Mit dem Batch run-index.cmd erzeuge ich mir eine neue Index-Datei. Dieses ist jedoch nur dann notwendig, wenn bestehende Auswertungen selbst geändert oder neue Auswertungen hinzu kommen.

VN:F [1.8.2_1042]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.2_1042]
Rating: 0 (from 0 votes)
Diese Seite bookmarken:
  • Twitter
  • Facebook
  • Technorati
  • Digg
  • MisterWong.DE
  • del.icio.us
  • Google Bookmarks
  • Live
  • MySpace
  • Yahoo! Bookmarks

Trackback URL

, , , , , ,

No Comments on "Mit MRTG Windows-WMI abfragen"

Hi Stranger, leave a comment:

ALLOWED XHTML TAGS:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe to Comments