【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
という名前のフォルダを作成します。その中にconfig
とpipeline
という名前のサブフォルダを作成します。次に、以下のlogstash.yml
とlogstash.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