Я запускаю 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