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 {

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

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

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

Спасибо!

4
задан 3 September 2015 в 21:59
3 ответа

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

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

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

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

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

2
ответ дан 3 December 2019 в 03:56

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

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

0
ответ дан 3 December 2019 в 03:56

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

Убедитесь, что вы указали ... / conf.d / *. conf в аргументах командной строки (если они используются), а также в конвейерах .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

0
ответ дан 3 December 2019 в 03:56

Теги

Похожие вопросы