Я пытаюсь запустить logstash: последний контейнер, но конвейер выдает ошибку при запуске.
Когда я запускаю его напрямую с -f "/ path / to / pipe", все работает.
Когда я запускаю его из pipelines.yml , он говорит, что конвейер имеет неправильное форматирование в первой строке, первом столбце.
14: 39: 28.728 [LogStash :: Runner] ОШИБКА logstash.agent - Невозможно создать конвейер {: причина => "Ожидается один из #, вход, фильтр, вывод в строке 1, столбце 1 (байт 1 ) после "}
ПРИМЕЧАНИЕ. Еще до того, как у меня появился комментарий к первой строке, в котором говорилось, что ошибка - после комментария, поэтому доступ к файлу и путь к нему определенно верны.
Если у кого-то есть представление о том, как или почему я испытываю такое поведение, я открыт для предложений.
Внизу я включаю мои конфигурации.
pipelines.yml
- pipeline.id: log-pipeline
path.config: "/etc/logstash/pipelines/log_elastic_write.conf"
pipeline.workers: 1
log_elastic_write.conf
input {
kafka {
bootstrap_servers => "kafka:9092"
topics => ["logs"]
group_id => "logs_write"
auto_offset_reset => "earliest"
}
}
filter {
date {
match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss.SSSSSS" ]
timezone => "UTC"
}
}
filter {
json {
source => "message"
}
}
filter {
json {
source => "message"
target => "raw_message"
}
mutate {
rename => {"@timestamp" => "timestamp_message_received"}
}
mutate {
remove_field => [ "message" ]
rename => {"[raw_message][timestamp]" => "timestamp_message_sent"}
}
}
filter {
date {
match => ["timestamp_message_sent","yyyy-MM-dd HH:mm:ss.SSS"]
target => "timestamp_message_sent"
locale => "en"
}
}
filter {
mutate { remove_field => [ "raw_message" ] }
mutate { remove_field => [ "timestamp" ] }
}
output {
elasticsearch {
hosts => "ipelastic:82"
index => "logging"
}
}
entrypoint.sh
#!/usr/bin/env bash
echo 'Inspecting file structure'
find /etc/logstash/ -maxdepth 4 | grep -v git | grep -v idea
echo 'Setting up runtime and pipeline configuration files(entrypoint.sh):'
echo "---------- 'logstash.yml' ----------"
envsubst < "${LOGSTASH_DIR_TARGET}/${LOGSTASH_CONFIG_SOURCE}" > "${LOGSTASH_DIR_TARGET}/${LOGSTASH_CONFIG_TARGET}"
rm "${LOGSTASH_DIR_TARGET}/${LOGSTASH_CONFIG_SOURCE}"
echo "---------- 'pipelines.yml' ----------"
envsubst < "${LOGSTASH_DIR_TARGET}/${PIPELINES_CONFIG_SOURCE}" > "${LOGSTASH_DIR_TARGET}/${PIPELINES_CONFIG_TARGET}"
rm "${LOGSTASH_DIR_TARGET}/${PIPELINES_CONFIG_SOURCE}"
less "${LOGSTASH_DIR_TARGET}/${PIPELINES_CONFIG_TARGET}"
echo "---------- pipeline: elasticsearch logs ----------"
envsubst < "${PIPELINE_DIR_TARGET}/${LOG_WRITE_PIPELINE_SOURCE}" > "${PIPELINE_DIR_TARGET}/${LOG_WRITE_PIPELINE_TARGET}"
rm "${PIPELINE_DIR_TARGET}/${LOG_WRITE_PIPELINE_SOURCE}"
less "${PIPELINE_DIR_TARGET}/${LOG_WRITE_PIPELINE_TARGET}"
chmod a+rx "${LOGSTASH_DIR_TARGET}/${LOGSTASH_CONFIG_TARGET}"
chmod a+rx "${LOGSTASH_DIR_TARGET}/${PIPELINES_CONFIG_TARGET}"
chmod a+rx "${PIPELINE_DIR_TARGET}/${LOG_WRITE_PIPELINE_TARGET}"
logstash