#docker #elasticsearch #centos7 #filebeat
Вопрос:
Я довольно новичок в докере и пытаюсь настроить ELK с помощью Filebeat. У меня есть контейнер для настройки файловой системы на машине 1, и я пытаюсь собрать журналы /mnt/logs/temp.log
(которые не являются журналами контейнеров) в контейнеры ELK на машине 2. Вот моя конфигурация файловой системы:-
filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
filebeat.autodiscover:
providers:
- type: docker
hints.enabled: true
hints.default_config:
type: container
paths:
- /mnt/logs/temp.log
processors:
- add_cloud_metadata: ~
output.elasticsearch:
hosts: '${ELASTICSEARCH_HOSTS:42.23.12.131:9042}'
Даже если я изменю конфигурацию filebeat.yml на приведенную ниже, она, похоже, не отправляет никаких журналов в ES:-
filebeat.inputs:
- type: log
paths:
- /mnt/logs/temp.log
output.elasticsearch:
hosts: ["42.23.12.131:9042"]
Может кто-нибудь, пожалуйста, помочь мне или указать мне на какие-либо статьи на сайте или документацию по этому поводу? Версия контейнера filebeat и ELK-7.14.0.
Редактировать: Файл docker-compose для ELK является:-
version: '2.2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
volumes:
- type: bind
source: ./elasticsearch/elasticsearch.yml
target: /usr/share/elasticsearch/config/elasticsearch.yml
read_only: true
- type: volume
source: elasticsearch
target: /usr/share/elasticsearch/data
environment:
ES_JAVA_OPTS: "-Xmx512m -Xms512m"
discovery.type: single-node
ports:
- "9200:9200"
- "9300:9300"
networks:
- elk
logstash:
image: docker.elastic.co/logstash/logstash:7.14.0
volumes:
- type: bind
source: ./logstash/config/logstash.yml
target: /usr/share/logstash/config/logstash.yml
read_only: true
- type: bind
source: ./logstash/pipeline.conf
target: /usr/share/logstash/pipeline.conf
read_only: true
ports:
- "5044:5044/udp"
- "9600:9600"
environment:
LS_JAVA_OPTS: "-Xmx512m -Xms512m"
networks:
- elk
depends_on:
- elasticsearch
kibana:
image: docker.elastic.co/kibana/kibana:7.14.0
volumes:
- type: bind
source: ./kibana/kibana.yml
target: /usr/share/kibana/config/kibana.yml
read_only: true
ports:
- "5601:5601"
networks:
- elk
depends_on:
- elasticsearch
networks:
elk:
driver: bridge
volumes:
elasticsearch:
Комментарии:
1. хост 1 и хост 2 с докером-составляют файл конфигурации или другим способом ?
2. @YLR хост2, т. е. стек elk, настраивается с помощью docker-compose, тогда как хост1, т. е. контейнер filebeat, настраивается, следуя этой статье:- elastic.co/guide/en/beats/filebeat/current/…
3. Хорошо, не могли бы вы отправить наш файл docker-compose по вашему вопросу, похоже, что host1 (FB 1) не может видеть эластичный вне стека docker-compose
4. @YLR Добавлен в основной пост.
Ответ №1:
В вашем файле docker-compose просто эти порты доступны за пределами контейнера (учитывая, что порт 9042-это тот, который вы настроили на стороне elasticsearch) :
ports: - "9200:9200" - "9300:9300"
Поэтому, если вы добавляете целевой порт 9042, он должен работать. Так что это должно выглядеть так :
ports: - "9200:9200" - "9300:9300" - "9042:9042"
Если это не порт 9042, который вы настроили в своем elasticsearch, это означает, что вам необходимо изменить конфигурацию в своем агенте обмена файлами, чтобы иметь правильный порт (возможно, 9200).