Трубопровод Logstash не запускается из pipelines.yml - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь запустить 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
...