Come si può eseguire il debug di uno script del metodo di input dei dati in Cacti?


8

(Vedi in basso per gli aggiornamenti ...)

Ho scritto uno script del metodo di immissione dei dati per Cacti (in Ruby, per raccogliere statistiche da beanstalkd) e funziona dalla riga di comando (restituendo un singolo intero semplice, come documentato qui ) quando eseguito come account utente di cactus ma lo strumento Cacti di per sé non sta raccogliendo dati e non c'è nulla nei registri.

Ecco l'impostazione dei metodi di immissione dei dati: Metodo di immissione dei dati di cactus http://img.skitch.com/20091009-gh7g1kukn9yradj6y2iqrd5qm1.jpg

Ed ecco il grafico risultante (dopo che è stato aggiunto al modello di grafico di un host e lasciato funzionare abbastanza a lungo per raccogliere dati): Grafico cactus http://img.skitch.com/20091009-xq1kn3qxkteb5hb11wtx6tbs8m.jpg

Aggiornamento n. 1 : sembra che i cactus potrebbero spogliare l'ambiente:

sudo su - cactus -c 'env -i / script / beanstat --host 10.11.12.13 --port 11300 --stat current-waiting'
/ script / beanstat: 4: in `require ': nessun file da caricare - rubygems (LoadError)
    da / script / beanstat: 4

In tal caso, come potrei aggirarlo?

Aggiornamento n. 2 : questa risposta su stackoverflow.com sembra aver risolto il problema ambientale, ma non ci sono ancora dati nel grafico.

Aggiornamento n. 3 : grazie al suggerimento di @ Heath ho aumentato il livello di registrazione del poller e ho riscontrato questo:

ATTENZIONE: risultato da CMD non valido. Risultato parziale: U

Non ho avuto fortuna Cercare su Google cosa significa "Risultato parziale: U". Lo script stampa solo un singolo valore intero.

Aggiornamento n. 4 : finalmente l'ho fatto funzionare. Il problema principale era la mancanza di ambiente durante l'esecuzione dello script della shell. Ho dovuto risolvere questo prefisso il mio script Ruby con le seguenti righe:

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

E il problema secondario era la corretta configurazione dei metodi di immissione dei dati (uno per ciascuna metrica separata che volevo raccogliere, anche se tutti usavano lo stesso script) che alimenta le origini dati che alimentano i modelli di dati (o viceversa, I ' Non sono ancora chiaro su quello) che alimenta i modelli di grafici che devono essere assegnati ai dispositivi, quindi aggiunti agli alberi dei grafici. In sintesi, è una grande debacle con merda per la documentazione e spero di non doverlo mai più fare.

Aggiornamento n. 5 : ho condiviso il mio script su GitHub http://github.com/trak3r/cacti-beanstalkd-script

Risposte:


4

Quando stavo cercando di eseguire il debug di uno script personalizzato, ho trovato utile che lo script aggiungesse alcune informazioni a un file temporaneo ogni volta che veniva eseguito; in quel modo potevo assicurarmi che venisse chiamato come mi aspettavo. Cose come la linea cmd args, l'ambiente e quale valore (i) sarebbe tornato. È inoltre possibile reindirizzare stderr a un file di registro per rilevare l'output dell'errore dallo script.

Vedo che hai creato un metodo di inserimento dati e un modello grafico; hai anche creato un modello di dati?


Ho dimenticato di menzionare; hai provato ad aumentare il livello di registrazione del poller?
Heath,

Sì, ho anche creato un modello di dati; IIRC era un prerequisito per aggiungere i punti dati al modello grafico.
Teflon Ted,

Buona idea a livello di registrazione poller; L'ho appena alzato di un livello. Grazie.
Teflon Ted,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.