Como posso traçar contagens de status do Apache HTTPd no Graphite sem o Statsd usando o Logstash?

1

Gostaria de enviar estatísticas de log do Apache HTTPd, como 200 contagens de status para Graphite / Carbon. O Logstash parece ideal, mas todos os exemplos que vi usam o Statsd para atuar como o contador de estado. Isso significa criar um servidor Statsd (ou ativar o Statsd no Collectd 5.x).

Existe uma maneira de o Logstash escrever contadores diretamente em Grafite / carbono?

    
por Alastair McCormack 26.05.2015 / 14:23

1 resposta

1

Sim, usando o filtro "métrico" no logstash. Na configuração padrão, ele emitirá eventos de métrica a cada 5 segundos para um determinado campo. Ao redefinir o contador a cada 5 segundos, você pode enviar os dados diretamente para o servidor de carbono do Graphite para armazenamento.

input {
    file {
        path => "/var/log/apache2/access.log"
    }
}

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    date {
        match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
    }

    # make sure response code is valid
    if [response] =~ /\d\d\d/ {
        metrics {
            # A counter field
            meter => "apache.response.%{host}.%{response}"
            add_tag => "metric"
            clear_interval => "5"
            flush_interval => "5"
        }
    }
}

output {
    #stdout { codec => rubydebug }

    graphite {
        fields_are_metrics => true
        # only send metrics collected in the filter
        include_metrics => ["^apache\.response\..*"]
        #host => "localhost"
        #port => "2003"
    }
}

A cada 5 segundos, o seguinte evento é criado:

{
    "@version" => "1",
    "@timestamp" => "2015-05-26T11:38:15.510Z",
    "message" => "ip-10-0-0-148",
    "apache.response.ip-10-0-0-145.401.count" => 1,
    "apache.response.ip-10-0-0-145.401.rate_1m" => 0.0,
    "apache.response.ip-10-0-0-145.401.rate_5m" => 0.0,
    "apache.response.ip-10-0-0-145.401.rate_15m" => 0.0,
    "tags" => [
        [0] "metric"
    ]
}
    
por 26.05.2015 / 14:23