【Elastic】Elasticsearch、Logstash、KibanaのDockerコンテナの作成と実行

【Elastic】Elasticsearch、Logstash、KibanaのDockerコンテナの作成と実行

2023-09-04

2024-08-13

docker-compose.ymlの作成

version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.9.0
    environment:
      - discovery.type=single-node
    volumes:
      - esdata:/usr/share/elasticsearch/data
    ports:
      - 9200:9200

  logstash:
    image: docker.elastic.co/logstash/logstash:8.9.0
    volumes:
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
      - ./logstash/pipeline:/usr/share/logstash/pipeline
    ports:
      - 5044:5044
    depends_on:
      - elasticsearch

  kibana:
    image: docker.elastic.co/kibana/kibana:8.9.0
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch

volumes:
  esdata:

もしログファイルをマウントしたい場合は、次のコードを使用する

volumes:
  - ./logstash/logs:/usr/share/logstash/logs

logstash.ymlとlogstash.confの作成

docker-compose.ymlと同じディレクトリにlogstashという名前のフォルダを作成します。その中にconfigpipelineという名前のサブフォルダを作成します。次に、以下のlogstash.ymllogstash.confファイルをそれぞれのフォルダに保存します。

ファイル構造

/my_project
  docker-compose.yml
  /logstash
    /config
      logstash.yml
    /pipeline
      logstash.conf
  • logstash/config/logstash.yml
http.host: "0.0.0.0"
path.config: /usr/share/logstash/pipeline
  • logstash/pipeline/logstash.conf
input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["elasticsearch:9200"]
  }
  stdout {
    codec => rubydebug
  }
}

以下は、テキストファイルの内容を読み取り、標準出力(stdout)に出力する基本的なLogstashの設定です

input {
  file {
    path => "/path/to/your/file.txt"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}

output {
  stdout { codec => rubydebug }
}

Dockerコンテナの起動

docker-compose up

起動中のすべてのコンテナの停止と削除

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

Dockerコンテナのログの表示

docker logs <your-container-id>

または

docker-compose logs logstash

Dockerコンテナの停止

docker-compose down

コンテナの再起動

docker-compose up

起動中のDockerコンテナに入る

docker exec -it <container-id> /bin/bash

または

docker exec -it <container-id> /bin/sh

Recommend