Статус заглушки Nginx для Logstash

Я скомпилировал Nginx с модулем состояния заглушки и хочу, чтобы данные обрабатывались Logstash и отправлялись в ElasticSearch. Я использую модуль Logstash http_poller для получения статуса каждые 10 секунд.

См. http://nginx.org/en/docs/http/ngx_http_stub_status_module.html. Вот как выглядят данные при извлечении из модуля состояния заглушки Nginx:

Active connections: 291 
server accepts handled requests
 16630948 16630948 31070465 
Reading: 6 Writing: 179 Waiting: 106 
Как я могу преобразовать данные в формат, удобный для ElasticSearch? Я пробовал многострочный фильтр и некоторые шаблоны grok, но пока безуспешно.


person KBoek    schedule 12.05.2016    source источник


Ответы (2)


Вывод статуса заглушки такой же, как и у nginx_status (вероятно, и у apache).

Я собираю эту информацию и для elasticsearch, но использую collectd. Вы также можете просто использовать collectd или посмотреть на плагин nginx, который поставляется с ним, чтобы узнать код и то, как они его анализируют.

если вы хотите использовать collectd, который я рекомендую: получите его через apt-get или загрузите исходный код с collectd.org для получения последней версии. (вам нужна версия 4.2 или выше)

vi /etc/collectd/collectd.conf

Убедитесь, что LoadPlugin nginx раскомментирован. Добавьте или отредактируйте следующую строку.

<Plugin nginx>
        URL "http://status.yourhost.com/stub_status"
</Plugin>

Затем вам нужно получить данные в logstash;

Это все объясняется здесь.

https://www.elastic.co/guide/en/logstash/current/plugins-codecs-collectd.html

Я считаю, что источник для плагина здесь:

https://github.com/collectd/collectd/blob/463fb2d44339625aae269e07f2773ee4f158faa8/src/nginx.c

person CareFree    schedule 12.05.2016

Для всех, кому интересно: я нашел этот модуль, это намного упрощает! https://github.com/lindsayevans/nginx-json-status-module

person KBoek    schedule 12.05.2016