Bucky é um pequeno servidor web para coletar e traduzir métricas para Graphite & nbsp;. É atual pode coletar dados de métricas de daemons collectd e de clientes StatsD.
Instalação
Você pode instalar com easy_install ou pip como por modus operandi normal:
& Nbsp; easy_install bucky
# Ou
pip instalar bucky
Após a instalação, você pode executar Bucky como:
Bucky
Por padrão, Bucky vai abrir um socket collectd UDP em 127.0.0.1:25826, um soquete StatsD em 127.0.0.1:8125 bem como tentativa de se conectar a um grafite (carbono) daemon local no 127.0.0.1:2003.
Estes são todos opcionais, como ilustrado abaixo. Você também pode desativar os servidores collectd ou StatsD completamente, se assim desejar.
Running Bucky For Real
O astuto observador vai notar que Bucky não tem bandeiras para daemonization. Isso é muito de propósito. A maneira recomendada para executar Bucky na produção é via runit. Há um diretório de serviços exemplo no repositório de origem de Bucky.
Opções de linha de comando
As opções de linha de comando são limitados a controlar os parâmetros de rede. Se você quiser configurar alguns dos trabalhos mais complicados que você vai precisar usar um arquivo de configuração. Aqui está a saída -h bucky:
Uso: main.py [opções] [CONFIG_FILE]
Opções:
& Nbsp; - collectd-ip address = IP IP para ligar para a tomada collectd UDP
& Nbsp; [127.0.0.1]
& Nbsp; - collectd-port = INT Porto para ligar para a tomada collectd UDP [25826]
& Nbsp; - collectd tipos = ARQUIVO
& Nbsp; Caminho para o arquivo types.db collectd
& Nbsp; - disable-collectd Desativar o servidor collectd UDP
& Nbsp; - statsd-ip address = IP IP para ligar para a tomada StatsD UDP
& Nbsp; [127.0.0.1]
& Nbsp; - statsd-port = INT Porto para ligar para a tomada StatsD UDP [8125]
& Nbsp; - disable-statsd Desativar o servidor StatsD
& Nbsp; - Grafite-ip = endereço IP IP do servidor de grafite / Carbon [127.0.0.1]
& Nbsp; - Grafite-port = INT Porta do servidor Graphite / Carbon [2003]
& Nbsp; - full-trace exibição de erro completa, se o arquivo de configuração não carrega
& Nbsp; - número da versão do show version do programa e sai
& Nbsp; -h, --help mostrar esta mensagem de ajuda e sai
Opções arquivo de configuração
O arquivo de configuração é um arquivo normal do Python que define uma série de variáveis. A maioria das opções de linha de comando também pode ser especificado neste arquivo (remover o "-" prefixo e substituir "-" com "_"), mas se especificado em ambos os locais, a linha de comando tem prioridade. Os padrões como um arquivo de configuração:
# Prefixo para Nomes de métricas collectd
collectd_conv_prefix = None
# Postfix para nomes de métricas collectd
collectd_conv_postfix = None
# Substitua pontos (.) Em nomes de métricas com este valor
collectd_replace = "_"
# Se um caminho tem componentes repetidos idênticos, colapso
#-Los a uma única instância. Ou seja, torna-se a.b.b.c a.b.c
collectd_strip_duplicates = True
# Estes nomes de host serão removidos de nomes de hosts que
# São recebidos. Ou seja, se "foo.bar.cloudant.com" vem em
# E "cloudant.com" está listado, então o que resulta
# Hostname será "foo.bar".
collectd_host_trim = []
Métricas # collectd necessidade de ter um nome gerado para
# Uso por Grafite. Aqui você pode registrar um especial
# Manipulador para métricas com base em o plugin collectd
# Nome.
#
# Por exemplo, o plugin collectd CPU termina com
# nomes métricas como "host.cpu.0.cpu.idle" para remover
# Segunda CPU exemplo, podemos registar um plugin
# Para gerar o nome.
#
# A chave dict deve ser o nome do plugin collectd
# Eo valor deve ser uma função que aceita
# Um único argumento e retorna uma lista de strings.
collectd_converters = {}
# Opcionalmente desativar o sistema de ampla pesquisa de
Plugins # conversor.
# conversores.
collectd_use_entry_points = True
# O número de segundos que o daemon StatsD deveria
# Espera antes de liberar valores.
statsd_flush_time = 10
Configurando collectd
Você só deve precisar adicionar algo assim para o seu collectd.conf:
LoadPlugin "rede"
& Nbsp; Servidor "127.0.0.1" "25826"
Obviamente, você vai querer igualar-se os endereços IP e portas e certifique-se de que seu firewall de são configurados para permitir pacotes UDP através.
Configurando StatsD
Basta apontar seus clientes StatsD em Bucky de IP / porta e você deve ser bom para ir.
Uma nota sobre conversores collectd
Métricas collectd não são exatamente directamente transponível para Grafite nomes métricas. O tradutor padrão tenta fazer uma melhor palpite, mas isso pode resultar em um pouco menos do que as árvores bonitas grafite.
Por esta razão, Bucky tem conversores configuráveis. Estes são chaveados fora o nome do plugin collectd. A entrada para estas funções é uma representação da métrica collectd que se parece com tal:
{
& Nbsp; 'host': 'toroid.local',
& Nbsp; "intervalo": 10,0,
& Nbsp; 'plug-in': 'memória',
& Nbsp; "plugin_instance ':' ',
& Nbsp; "tempo": 1320970329,175534,
& Nbsp; "tipo": "memória",
& Nbsp; "type_instance ':' inativo ',
& Nbsp; "valor": 823009280,0,
& Nbsp; "value_name ':' valor ',
& Nbsp; "value_type ': 1
}
O resultado desta função deve ser uma lista de strings que representam parte do nome da métrica Grafite. Por exemplo, se um conversor retornou ["foo", "bar"], o nome da métrica final vai acabar como: $ prefix $ hostname.foo.bar $ postfix...
Um exemplo conversor builtin parece com tal:
# Isso pode ser como você define um conversor no
# Seu arquivo de configuração
MemoryConverter classe (objeto):
& Nbsp; PRIORIDADE = 0
& Nbsp; def __call __ (self, da amostra):
& Nbsp; retornar ["memória", amostra ["type_instance"]]
collectd_converters = [MemoryConverter ()]
Coletores também têm uma noção de prioridade, a fim de resolver conflitos. Este é apenas são preferidos uma propriedade no que pode ser chamado chamado "prioridade" e prioridades maiores. Eu não imagino que isso terá de ser utilizado com muita frequência, mas a sua existência apenas no caso.
Conversores podem ser declarados e / ou importados no arquivo de configuração opcional, ou eles podem ser autodiscovered por pontos de entrada. O ponto de entrada que se busca é "bucky.collectd.converters". . O nome do ponto de entrada deve ser o nome do plugin collectd
Requisitos :
- Python
Comentários não encontrado