Нормализация имени хоста из лака для statsd

Настройка

Я собираю статистику из Varnish с Logstash, который настроен для увеличения счетчиков statsd на основе vhost в журналах сервера и кода результата. У меня также есть углерод, создающий шепотные архивы для графита.

Я читаю логи из varnishncsa, который настроен на добавление vhost и запрос расположения в стандартные логи:

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

Мой конфиг logstash shipper выглядит так:

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}"
  }
}

Эта проблема

Сотни различных счетчиков создаются углеродом из-за изменений в домене, введенном в браузеры пользователей. Так, например, у меня есть

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

Очевидно, что тогда они пропускаются моими графиками, которые смотрят только статистику под каноническим именем vhost.

Я хотел бы, чтобы какой-то канонизирующий процесс произошел заранее. Я могу написать скрипт, чтобы взять "сырой" домен и выложить "реальное" имя хоста, но я не уверен, как это интегрировать. Я положил это в конфигурации logstash, или в statsd, или carbon? Могу я сделать что-нибудь с функцией накопления углерода?

Обновление: я обошел худшие случаи, запустив демон-агрегатор carbon перед кэшем и добавив правила в rewrite-rules.conf, Тем не менее, для этого файла очень мало документации, и я не могу сделать более мощные вещи, такие как разбить все на строчные.

1 ответ

Вы можете в нижнем регистре поле с фильтром mutate:

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

Logstash 1.1.13 Документы

Ура, янв

Другие вопросы по тегам