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

logstash: есть ли способ просмотреть полную текущую конфигурацию при использовании нескольких файлов конфигурации в /etc/logstash/conf.d?

Я запускаю logstash 1.5.0.1, и у меня есть несколько файлов конфигурации в моем /etc/logstash/conf.d папка:

 01-input-source-one.conf
 02-input-source-two.conf
 10-filter-one.conf
 11-filter-two.conf
 20-output-one.conf
 21-output-two.conf

После изменения файла конфигурации я тестирую, используя /opt/logstash/bin/logstash agent -f /etc/logstash/conf.d --configtest.

Если есть проблема с одним из моих файлов конфигурации, я получаю сообщение, которое ссылается на номер строки в объединенном файле следующим образом:

Error: Expected one of #, ", ', } at line 331, column 13 (byte 15167) after filter {

Иногда, но не всегда, после ошибки отображается фрагмент кода, который помогает мне найти правильный файл, но номер строки в ошибке по-прежнему не приносит мне никакой пользы.

Кто-нибудь знает, есть ли способ просмотреть объединенный файл конфигурации?

Это также может быть полезно при устранении проблем с конфигурацией, которые не являются результатом синтаксической ошибки (которая передает --configtest) но результат проблемы с заказом.

Спасибо!

Да, запустить его в интерактивном режиме из командной строки. Однако он будет генерировать много другой информации.

/opt/logstash/bin/logstash --debug -f /etc/logstash/conf.d

Или запустите следующее, чтобы просто протестировать и увидеть скомпилированную конфигурацию

/opt/logstash/bin/logstash --debug --debug-config -t -f /etc/logstash/conf.d/

Вы, вероятно, захотите использовать выход, это также дает вам все фильтры Grok и т. Д.

кошка -n /etc/logstash/conf.d/*

Это напечатает содержимое всех файлов в этой папке по порядку с номерами строк как один непрерывный файл, поэтому номер строки в отладке logstash будет коррелирован.

Остерегайтесь, по крайней мере, в версии 6.3.0 я обнаружил, что если вы укажете -f или --path.config как каталог, он будет включать все файлы в этом каталоге (даже включая такие вещи, как файлы README).

Убедитесь, что вы указали ... / conf.d / *. Conf в аргументах командной строки (если они используются), а также в pipelines.yml.

В моем развертывании именно так я могу отлаживать свою конфигурацию (версия 6.3.0 - обратите внимание, что аргументы немного отличаются от того, что было предоставлено выше)

/usr/share/logstash/bin/logstash \
  --path.settings /etc/logstash/enrichment/ \
  --debug --config.debug -t

(Обратите внимание, что мне нужно установить --path.settings, потому что у меня работает несколько экземпляров logstash)

Так что вы мог получить конфигурацию, которую получит logstash, а затем добавить номера строк ....

/usr/share/logstash/bin/logstash \
  --path.settings /etc/logstash/enrichment/ \
  --debug --config.debug -t 2>&1 \
  | grep -v '^\[' \
  | cat -n

Но это довольно медленно, но полезно знать, если что-то более быстрое не работает, например:

cat /etc/logstash/enrichment/conf.d/*.conf | cat -n

Просто не забудьте запросить тот же набор файлов, который запрашивает logstash; указание .../conf.d является не то же самое, что и указание .../conf.d/*.conf