Как запустить несколько конвейеров в logsta sh с использованием стека Elasti c (ELK) на базе Docker и Compose - PullRequest
0 голосов
/ 30 апреля 2020

Я использую this_repo , чтобы начать запуск ELK с Docker.

. Мой вопрос касается образа logsta sh в файле docker:

Когда я работаю локально, у меня есть 3 файла

#general settings
logstash.yml
#pipeline setting
pipeline.yml
#a pipe line configuration
myconf.conf1

когда я хочу использовать несколько конвейеров, я использую файл pipe.yml для управления всеми различными конвейерами, которые я запускаю

# Example of my pipeline.yml
- pipeline.id: my-first-pipeline
  path.config: "/etc/logstash/my-first-pipeline.config"
  pipeline.workers: 2
- pipeline.id: super-swell-pipeline
  path.config: "/etc/logstash/super-swell-pipeline.config"
  queue.type: persisted

В репо, который я использую в качестве руководства I могу только найти logsta sh .yml и я не понимаю, как мне добавить конвейеры. единственный работающий конвейер - это по умолчанию "main", который по умолчанию запускает только logsta sh .conf Я пробовал разные конфигурации, все поля

Как я могу добавить pipe.yml в docker? или как лучше всего использовать несколько конвейеров с этим docker -композитным файлом?

благодарен за любую помощь

docker -compose / logsta sh из репозитория:

  logstash:
    build:
      context: logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./logstash/config/logstash.yml
        target: /usr/share/logstash/config/logstash.yml
        read_only: true
      - type: bind
        #can be either a host path or volume name.
        source: ./logstash/pipeline
        #is the container path where the volume is mounted
        target: /usr/share/logstash/pipeline
        read_only: true
    ports:
      - "5000:5000/tcp"
      - "5000:5000/udp"
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch

DockerFILE:

ARG ELK_VERSION

# https://www.docker.elastic.co/
FROM docker.elastic.co/logstash/logstash:${ELK_VERSION}

# Add your logstash plugins setup here
# Example: RUN logstash-plugin install logstash-filter-json

logsta sh .yml

## Default Logstash configuration from Logstash base image.
## https://github.com/elastic/logstash/blob/master/docker/data/logstash/config/logstash-full.yml
#
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]

## X-Pack security credentials
#
xpack.monitoring.enabled: false
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: changeme

1 Ответ

1 голос
/ 30 апреля 2020

Вам также необходимо смонтировать файл pipelines.yml в контейнер. По умолчанию Logsta sh ищет возможный файл pipelines.yml /usr/share/logstash/config/ (в той же папке, в которую вы уже смонтировали файл logsta sh .yml).

Обратите внимание, что вам также необходимо обновить текущий локальный файл pipelines.yml, указав правильные пути конвейеров внутри контейнера . Чтобы быть точным, вам нужно изменить

path.config: "/etc/logstash/my-first-pipeline.config"

на

path.config: "/usr/share/logstash/pipeline/my-first-pipeline.config"

Также ознакомьтесь с этими официальными руководствами по бегу Logsta sh с Docker и настройкой нескольких конвейеров:

Я надеюсь, что смогу вам помочь!

РЕДАКТИРОВАТЬ:

Официальный документация вызывает файл pipe s .yml вместо pipe.yml

...