Wie können Sie ein Skript für die Dateneingabemethode in Cacti debuggen?

8

(Updates finden Sie unten ...)

Ich habe ein Dateneingabemethodenskript für Cacti geschrieben (in Ruby, um Statistiken von Beanstalkd zu sammeln) und es funktioniert über die Befehlszeile (Rückgabe einer einzelnen einfachen Ganzzahl, wie hier dokumentiert ), wenn es als Cacti- Benutzerkonto, aber als Cacti-Tool ausgeführt wird selbst sammelt keine Daten und es gibt nichts in den Protokollen.

Hier ist die Einrichtung der Dateneingabemethoden: Cacti-Dateneingabemethode http://img.skitch.com/20091009-gh7g1kukn9yradj6y2iqrd5qm1.jpg

Und hier ist das resultierende Diagramm (nachdem es zur Diagrammvorlage eines Hosts hinzugefügt und lange genug ausgeführt wurde, um Daten zu erfassen): Cacti-Diagramm http://img.skitch.com/20091009-xq1kn3qxkteb5hb11wtx6tbs8m.jpg

Update Nr. 1 : Es sieht so aus, als würde Cacti die Umgebung entkleiden:

sudo su - cacti -c 'env -i / script / beanstat --host 10.11.12.13 --port 11300 --stat current-wait'
/ script / beanstat: 4: in `require ': keine solche Datei zum Laden - rubygems (LoadError)
    von / script / beanstat: 4

Wenn dies der Fall ist, wie könnte ich das umgehen?

Update Nr. 2 : Diese Antwort auf stackoverflow.com scheint das Umgebungsproblem behoben zu haben, aber immer noch keine Daten im Diagramm.

Update Nr. 3 : Dank des Vorschlags von @ Heath habe ich die Poller-Protokollierungsstufe erhöht und Folgendes festgestellt:

WARNUNG: Ergebnis von CMD ungültig. Teilergebnis: U.

Ich hatte kein Glück, zu googeln, was "Teilergebnis: U" bedeutet. Das Skript gibt nur einen einzelnen ganzzahligen Wert aus.

Update Nr. 4 : Ich habe es endlich geschafft. Das Hauptproblem war der Mangel an Umgebung, wenn das Shell-Skript ausgeführt wird. Ich musste das beheben, indem ich meinem Ruby-Skript die folgenden Zeilen voranstellte:

#! / bin / sh
PATH = / usr / local / bin: $ PATH
exec ruby ​​-x "/ full / path / to / script / directory" $ 0 "$ @"
#! / usr / bin / env ruby

Das zweite Problem war die ordnungsgemäße Konfiguration der Dateneingabemethoden (eine für jede einzelne Metrik, die ich erfassen wollte, obwohl alle dasselbe Skript verwendeten), die die Datenquellen speist, die die Datenvorlagen speisen (oder umgekehrt, I '). Ich bin mir immer noch nicht sicher, was die Grafikvorlagen speist, die den Geräten zugewiesen und dann den Grafikbäumen hinzugefügt werden müssen. Zusammenfassend ist es ein großes Debakel mit Mist für die Dokumentation und ich hoffe, dass ich es nie wieder tun muss.

Update Nr. 5 : Ich habe mein Skript auf GitHub http://github.com/trak3r/cacti-beanstalkd-script geteilt

Teflon Ted
quelle

Antworten:

4

Beim Versuch, ein benutzerdefiniertes Skript zu debuggen, fand ich es hilfreich, dass das Skript bei jeder Ausführung einige Informationen an eine temporäre Datei anfügt. Auf diese Weise konnte ich sicherstellen, dass es so genannt wurde, wie ich es erwartet hatte. Dinge wie die cmd-Zeilenargumente, die Umgebung und die Werte, die zurückgegeben werden sollen. Möglicherweise möchten Sie stderr auch in eine Protokolldatei umleiten, um die Fehlerausgabe des Skripts abzufangen.

Ich sehe, Sie haben eine Dateneingabemethode und eine Diagrammvorlage erstellt. Haben Sie auch eine Datenvorlage erstellt?

Heide
quelle
Vergaß zu erwähnen; Haben Sie versucht, die Poller-Protokollierungsstufe zu erhöhen?
Heath
Ja, ich habe auch eine Datenvorlage erstellt. IIRC war eine Voraussetzung für das Hinzufügen der Datenpunkte zur Diagrammvorlage.
Teflon Ted
Gute Idee auf der Poller-Protokollierungsstufe; Ich habe es nur um eine Stufe angehoben. Vielen Dank.
Teflon Ted