Мы только что переключились с 2.X на 5.X, и я пытаюсь выяснить, как использовать переменные окружения в файлах конфигурации конвейера.Как использовать переменные среды в Logstash 5.X?
В 2.X, следующие работали:
export HOSTNAME
Затем начните Logstash с флагом линии --allow-env
команды. Файл конфигурации трубопровода выглядит следующим образом:
filter {
mutate {
add_field => { "some_field" => "${HOSTNAME}"}
}
}
В документации сказано, что --allow-env
флаг больше не требуется.
Я попытался заменить mutate
фильтром environment
, но не повезло.
Я попытался отредактировать файл startup.options
. Добавлено HOSTNAME
как обычная переменная окружения, и добавила ее между частью read-EOM
, но без каких-либо положительных результатов.
Что, кажется, работает сейчас, если я добавлю следующую часть в файл /usr/share/logstash/bin/logstash.lib.sh
, но я уверен, что если я должен отредактировать это.
HOSTNAME="the-name-of-the-host"
export HOSTNAME
Так что мой вопрос: что упускаю из виду? Каков надлежащий способ разрешить использование переменных окружения в файлах конфигурации конвейера Logstash?
Примечание:
Как Alcanzar описано, что это работает, если я бегу Logstash вручную. Однако мы хотели бы запустить его с systemctl
, поэтому он должен быть автоматически запущен демоном при запуске. В 2.X он отлично работал с файлом /etc/init.d/logstash
, но, как описывает documentation10, этого больше нет. Файлы, которые я должен изменить: /etc/logstash/startup.options
и /etc/logstash/logstash.yml
.
Да, вы совершенно правы в этом. Я забыл упомянуть, что мы хотели бы запустить его с помощью команды systemctl. В документации упоминается файл '/ etc/logstash/startup.options' и'/etc/logstash/logstash.yml', поэтому я добавил точную строку кода, о которой вы говорили ранее, но без везения. – Letokteren
Я думаю, возможно, это расскажет вам, как настроить переменные среды для systemd - http: // serverfault.com/questions/413397/how-to-set-environment-variable-in-systemd-service - я не использую systemd, но информация выглядит твердой – Alcanzar