Я настраиваю контейнер Docker, но не могу настроить logstash для эластичного поиска, который работает в AWS.
Структура папок следующая
.
├── logstash
│ └── logstash.conf
├── docker-compose.yml
├── Dockerfile
├── file.jar
./logstash/logstash.conf выглядит так
(папка журнала в указанном ниже пути ввода будет автоматически создаваться параллельно файлу jar, когда мы запускаем сервер с помощью jar)
input {
file {
path => "/java_pro/log/*/*/*.log"
type => "json"
}
}
output {
elasticsearch {
hosts => [ "https://search-***********.es.amazonaws.com:443" ]
index => "logback-%{+YYYY-MM-dd}"
}
}
Докерфайл
FROM java:8
RUN mkdir -p /java_pro
WORKDIR /java_pro
COPY . /java_pro
EXPOSE 443
CMD java -jar file.jar
докер-compose.yml
version: "3"
services:
hub:
build: .
volumes:
- .:/java_pro
- static_volume:/java_pro
networks:
- rabbitmq-networks
rabbitmq:
image: "rabbitmq:3-management"
ports:
- "5672:5672"
- "15672:15672"
volumes:
- "rabbitmq_data:/data"
networks:
- rabbitmq-networks
environment:
- RABBITMQ_DEFAULT_USER=****
- RABBITMQ_DEFAULT_PASS=****
logstash:
image: docker.elastic.co/logstash/logstash:6.4.0
ports:
- "9200:9200"
command: logstash -f /etc/logstash/conf.d/logstash.conf
volumes:
- ./logstash/logstash.conf:/etc/logstash/conf.d
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- rabbitmq-networks
networks:
rabbitmq-networks:
driver: bridge
volumes:
rabbitmq_data:
static_volume:
Elasticsearch запущен и работает в AWS. Получение ошибки при запуске с использованием docker-compose up
No config files found in path {:path=>"/etc/logstash/conf.d/logstash.conf"}
Running health check to see if an Elasticsearch connection is working {:healthcheck_url=>http://elasticsearch:9200/, :path=>"/"}
Attempted to resurrect connection to dead ES instance, but got an error. {:url=>"http://elasticsearch:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch Unreachable: [http://elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch"}
Как устранить вышеуказанную ошибку и хотите отправить все журналы из приложения в elasticsearch с помощью logstash.




Вы смонтировали файл как имя каталога здесь:
volumes:
- ./logstash/logstash.conf:/etc/logstash/conf.d
Включить имя файла при монтировании одного файла:
volumes:
- ./logstash/logstash.conf:/etc/logstash/conf.d/logstash.conf:ro
Я также пометил его только для чтения, поскольку контейнер, скорее всего, не изменяет этот файл.
Он пытается подключиться к эластичному поиску по умолчанию. Вы можете попробовать смонтировать конфигурацию тома в расположение по умолчанию для logstash. например
- ./logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.confвам не нужна строкаcommandтогда