Normalizando o nome do vhost do verniz para statsd

1

A configuração

Estou coletando estatísticas do Varnish com Logstash , que é configurado para incrementar contadores statsd com base no vhost nos logs do servidor e código de resultado. Eu também tenho carbono criando sussurro arquivos para grafite .

Estou lendo os logs do varnishncsa que está configurado para adicionar vhost e solicitar disposição aos logs padrão:

VARNISHNCSA_LOG_FORMAT="%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\" %{Host}i %{Varnish:hitmiss}x"

Minha configuração do remetente do logstash tem esta aparência:

input {
  file {
    path => "/var/log/varnish/varnishncsa.log"
    type => varnish
  }
}

filter {
  grok {
    type => varnish
    pattern => "%{COMBINEDAPACHELOG} %{NOTSPACE:vhost} %{WORD:varnish_handling}"
    pattern => "%{COMBINEDAPACHELOG}"
  }

  mutate {
    rename => [ 'response', 'status' ]
  }
}

output {
  statsd {
    type => varnish
    host => "my-statsd-host"
    port => 8125
    sender => "%{@fields.vhost}"
    increment => "varnish.response.%{@fields.status}"
    increment => "varnish.handling.%{@fields.varnish_handling}"
  }
}

O problema

Centenas de contadores distintos estão sendo criados por carbono devido a variações no domínio inserido nos navegadores dos usuários. Então, por exemplo, eu tenho

www_mywebsite_com
WWW_MyWebsite_Com
www_mywebsite_net    <-- an alias
...etc...

Obviamente, estes são perdidos pelos meus gráficos, que apenas analisam as estatísticas sob o nome canônico do vhost.

O que eu gostaria é que algum processo de canonização ocorra de antemão. Eu posso escrever um script para pegar um domínio 'bruto' e cuspir um nome de 'vhost' real, mas não tenho certeza de como integrar isso. Eu coloco na configuração logstash, ou no statsd, ou carbono? Posso fazer algo com o recurso de agregação de armazenamento de carbono?

Atualização : trabalhei em torno dos piores casos executando o daemon agregador de carbono na frente do cache e adicionando regras a rewrite-rules.conf . No entanto, há pouquíssima documentação para esse arquivo, e não posso fazer coisas mais poderosas como quebrar tudo em letras minúsculas.

    
por Flup 02.05.2013 / 13:07

1 resposta

2

você pode diminuir um campo com o filtro mutate:

filter {
  mutate {
    lowercase => [ "fieldname" ]
  }
}

Logstash 1.1.13 Docs

Felicidades, Jan

    
por 04.07.2013 / 14:52