Назад | Перейти на главную страницу

Нормализация имени vhost из varnish для statsd

Установка

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

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

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

Конфигурация моего отправителя logstash выглядит так:

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 или в углерод? Могу я что-нибудь сделать с функцией агрегации хранилища углерода?

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

вы можете строчные буквы с помощью фильтра изменения:

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

Logstash 1.1.13 Документы

Ура, янв