Bucky è un piccolo server web per raccogliere e tradurre le metriche per Grafite & nbsp;. Può corrente raccogliere i dati metrici di demoni collectd e da parte dei clienti StatsD.
Installazione
È possibile installare con easy_install o pip come al solito modus operandi:
& Nbsp; easy_install bucky
# O
pip installare bucky
Dopo l'installazione, è possibile eseguire Bucky come:
bucky
Per impostazione predefinita, Bucky aprirà una presa collectd UDP su 127.0.0.1:25826, un socket StatsD su 127.0.0.1:8125 così come il tentativo di connettersi a un Graphite (Carbon) daemon locale 127.0.0.1:2003.
Questi sono tutti opzionali come illustrato di seguito. È inoltre possibile disattivare i server collectd o StatsD completamente se lo desiderano.
Esecuzione Bucky For Real
L'osservatore attento avrà notato che Bucky non ha bandiere per daemonization. Questo è piuttosto appositamente. Il metodo consigliato per eseguire Bucky in produzione è via runit. C'è un elenco di servizi esempio nel repository dei sorgenti di Bucky.
Opzioni della riga di comando
Le opzioni della riga di comando sono limitati a controllare i parametri di rete. Se si desidera configurare alcune delle lavorazioni più complesse è necessario utilizzare un file di configurazione. Ecco l'output -h Bucky:
Usage: main.py [OPTIONS] [CONFIG_FILE]
Opzioni:
& Nbsp; - collectd-ip address = IP IP di impegnare per la presa collectd UDP
& Nbsp; [127.0.0.1]
& Nbsp; - collectd-port = INT Porta di impegnare per la presa collectd UDP [25826]
& Nbsp; - collectd tipi = FILE
& Nbsp; Il percorso del file types.db collectd
& Nbsp; - disable-collectd disabilitare il server collectd UDP
& Nbsp; - statsd-ip address = IP IP di impegnare per la presa StatsD UDP
& Nbsp; [127.0.0.1]
& Nbsp; - statsd-port = INT Porta di impegnare per la presa StatsD UDP [8125]
& Nbsp; - disable-statsd disabilitare il server StatsD
& Nbsp; - grafite-ip = indirizzo IP IP del server Graphite / Carbon [127.0.0.1]
& Nbsp; - grafite-port = INT porta del server Graphite / Carbon [2003]
& Nbsp; - full-trace display errore completo se file di configurazione non riesce a caricare
& Nbsp; - il numero di versione di versione esposizione del programma ed esce
& Nbsp; -h, --help mostra questo messaggio di aiuto ed esce
Opzioni file di configurazione
Il file di configurazione è un file Python normale che definisce un numero di variabili. La maggior parte delle opzioni della riga di comando può anche essere specificato in questo file (rimuovere il "-" prefisso e sostituire "-" con "_"), ma se specificato in entrambi i luoghi, la riga di comando ha la priorità. Le impostazioni predefinite come un file di configurazione:
# Prefisso per i nomi metriche collectd
collectd_conv_prefix = Nessuno
# Postfix per i nomi metriche collectd
collectd_conv_postfix = Nessuno
# Sostituire punti (.) Nei nomi metriche con questo valore
collectd_replace = "_"
# Se un percorso è identico componenti ripetute, collasso
# Loro di una singola istanza. Vale a dire, a.b.b.c diventa a.b.c
collectd_strip_duplicates = True
# Questi i nomi degli host saranno rimossi dal hostname che
# Vengono ricevuti. Vale a dire, se "foo.bar.cloudant.com" arriva in
# E "cloudant.com" è elencato, quindi il conseguente
# Hostname sarà "foo.bar".
collectd_host_trim = []
Metriche # collectd devono avere un nome generato per
# Uso da Graphite. Qui è possibile registrare un speciale
# Gestore per le metriche in base plugin collectd
# Nome.
#
# Per esempio, il plugin collectd CPU finisce con
# nomi di metrica come "host.cpu.0.cpu.idle" per rimuovere
# La seconda CPU istanza si può registrare un plugin
# Per generare il nome.
#
# La chiave dict dovrebbe essere il nome del plugin collectd
# E il valore dovrebbe essere un callable che accetta
# Un singolo argomento e restituisce una lista di stringhe.
collectd_converters = {}
# Facoltativamente disattivare la ricerca a livello di sistema per
Plugins # convertitore.
# convertitori.
collectd_use_entry_points = True
# Il numero di secondi che il daemon StatsD dovrebbe
# Attendere prima del lavaggio valori.
statsd_flush_time = 10
Configurazione collectd
Dovreste solo bisogno di aggiungere qualcosa di simile al tuo collectd.conf:
LoadPlugin "rete"
& Nbsp; Server "127.0.0.1" "25826"
Ovviamente, ti consigliamo di abbinare gli indirizzi IP e le porte e fare in modo che il firewall di sono configurati per consentire pacchetti UDP attraverso.
Configurazione StatsD
Basta puntare i vostri clienti StatsD a IP / Porta di Bucky e si dovrebbe essere pronti per partire.
Una nota sui convertitori collectd
Metriche collectd non sono esattamente direttamente traducibili alla grafite nomi metriche. Il traduttore di default tenta di effettuare una migliore ipotesi, ma questo può provocare un po 'meno belle alberi di grafite.
Per questo motivo, Bucky ha convertitori configurabili. Questi sono calettati fuori il nome del plugin collectd. L'ingresso di queste funzioni è una rappresentazione della metrica collectd che assomiglia tale:
{
& Nbsp; 'host': 'toroid.local',
& Nbsp; 'intervallo': 10.0,
& Nbsp; 'plugin': 'memoria',
& Nbsp; 'plugin_instance': '',
& Nbsp; 'tempo': 1320970329,175534,
& Nbsp; 'tipo': 'memoria',
& Nbsp; 'type_instance': 'inattivo',
& Nbsp; 'valore': 823009280,0,
& Nbsp; 'value_name': 'valore',
& Nbsp; 'value_type': 1
}
Il risultato di questa funzione dovrebbe essere una lista di stringhe che rappresentano parte del nome metrica grafite. Ad esempio, se un convertitore restituito ["foo", "bar"], il nome della metrica finale finirà come: $ prefix $ hostname.foo.bar $ postfix...
Un esempio convertitore builtin assomiglia quali:
# Questo potrebbe essere come si definisce un convertitore in
# Il file di configurazione
Classe MemoryConverter (oggetto):
& Nbsp; PRIORITY = 0
& Nbsp; def __call __ (self, del campione):
& Nbsp; di ritorno ["memoria", campione ["type_instance"]]
collectd_converters = [MemoryConverter ()]
Collezionisti hanno anche una nozione di priorità al fine di risolvere i conflitti. Questa è semplicemente una proprietà sulla callable denominato "PRIORITÀ" e le priorità più grandi sono preferiti. Non credo questo dovrà essere utilizzato molto spesso, ma la sua non solo in caso.
Convertitori possono sia essere dichiarati e / o importato nel file di configurazione opzionale, oppure possono essere autodiscovered tramite punti di ingresso. Il punto di ingresso che viene ricercato è "bucky.collectd.converters". . Il nome del punto di ingresso dovrebbe essere il nome del plugin collectd
Requisiti :
- Python
I commenti non trovato