Свободный бит не может отправить журналы в свободный докер из-за EADDRNOTAVAIL - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь настроить стек EFK с беглым битом в док-контейнерах. Несмотря на то, что я мог перемещать журналы от беглого к эластичному поиску, когда я пытался интегрировать бегло, я столкнулся с проблемами с этим. Это точное сообщение об ошибке:

непредвиденная ошибка error_class = Errno :: EADDRNOTAVAIL error = "Адрес не доступен - bind (2) для порта \" fluent-bit \ "24224"

Службы в моем файле docker-compose file

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:${TAG}
    ports:
      - '9200:9200'
      - '9300:9300'
    volumes:
      - type: bind
        source: ./config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    networks:
      - efk_1
  fluentd:
    image: fluent/fluentd:${FLBV}
    ports:
      - '24224:24224'
    volumes:
      - type: bind
        source: ./config/fluent.conf
        target: /fluentd/etc/fluent.conf
        read_only: true
    networks:
      - efk_1
    depends_on:
      - elasticsearch
  fluent-bit:
    image: fluent/fluent-bit:${FBITV}
    ports:
      - '2020:2020'
    volumes:
      - type: bind
        source: ./config/fluent-bit.conf
        target: /fluent-bit/etc/fluent-bit.conf
        read_only: true
      - type: bind
        source: ./sample_logs
        target: /var/log
    networks:
      - efk_1
    depends_on:
      - fluentd

Ранее я непосредственно передавал журналы из fluent-bit вasticsearch, как это, без использования конфигурации fluentd в любом месте:

[SERVICE]
    Flush   2
    Log_Level   debug

[INPUT]
    Name    tail
    Path    /var/log/log.txt

[OUTPUT]
    Name    es
    Match   *
    Host    elasticsearch
    Port    9200

Это успешно подтолкнуло логи кasticsearch, но теперь я добавил fluentd между ними, поэтому fluent-bit отправит логи в fluentd, который затем переместится наasticsearch.

fluent-bit conf:

[SERVICE]
    Flush   2
    Log_Level   debug

[INPUT]
    Name    tail
    Path    /var/log/log.txt

[OUTPUT]
    Name    forward
    Match   *
    Host    fluentd

fluentd conf:

<source>
    @type forward
    bind fluent-bit
</source>

<match **>
    @type stdout
</match>

Это дает мне ошибки, так как они не могут определить адрес, даже если они являются частью одной и той же сети докеров.

Вот ошибки, которые я получаю:

fluent-bit_1 |[2019/11/06 10:31:02] [ошибка] [io] Не удалось установить TCP-соединение: fluentd: 24224 (соединение отклонено)

и

fluentd_1 |2019-11-06 10:31:02 +0000 [error]: # 0 непредвиденная ошибка error_class = Errno :: EADDRNOTAVAIL error = "Адрес недоступен - bind (2) для порта \" fluent-bit \ "24224"

Может кто-нибудь помочь мне узнать, где я совершаю ошибку?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Я создал следующую конфигурацию: docker-compose.yaml

version: "3.7"

services:
  fluentd:
    image: fluent/fluentd:v1.7.4-1.0
    ports:
      - '24224:24224'
    volumes:
      - type: bind
        source: ./config/fluent.conf
        target: /fluentd/etc/fluent.conf
        read_only: true
  fluent-bit:
    image: fluent/fluent-bit:0.14
    ports:
      - '2020:2020'
    volumes:
      - type: bind
        source: ./config/fluent-bit.conf
        target: /fluent-bit/etc/fluent-bit.conf
        read_only: true
      - type: bind
        source: /var/log/
        target: /var/log/
    depends_on:
      - fluentd

fluent.conf

<source>
  @type forward
  bind 0.0.0.0
  port 24224
</source>

<match test>
  @type stdout
</match>

fluent-bit.conf

[SERVICE]
    Flush   2
    Log_Level   debug

[INPUT]
    Name    tail
    Path    /var/log/syslog
    Tag     test

[OUTPUT]
    Name    forward
    Match   *
    Host    fluentd

Inэти конфиги бегло бегают и бегло умеют отправлять системный журнал

0 голосов
/ 06 ноября 2019

Я думаю, что ваша конфигурация fluentd должна выглядеть следующим образом:

<source>
  type forward
  bind 0.0.0.0
  port 24224
</source>

<match fluent_bit>
  type stdout
</match>

Как и в документах

Вероятно, у fluentd должен быть чистый IP, а не имя хоста в поле привязки.

См. выпуск и описание ошибки .

...