まとめ
- あらかじめ用意するディレクトリは、 Docker でミニマムに ELK スタックに入門する記録 – oki2a24 とほぼ同じ。
data/logstash/pipeline/logstash.conf
data/nginx/log/
- Elasticsearch のデータは、 Docker でミニマムに ELK スタックに入門する記録 – oki2a24 では
data/elasticsearch
に保存していたが、トップレベル volumes として es_data という名前で定義した。 - 各 service に depends_on を設定した。
- elasticsearch: 何にも依存しないのでなし。
- kibana: elasticsearch がないと動かしても意味ないので、 elasticsearch を depends_on に設定した。
- logstash: elasticsearch がないと動かしても意味ないので、 elasticsearch を depends_on に設定した。
- nginx: ログを扱ってくれる logstash があらかじめ起動しておいて欲しいので、 logstash を depends_on に設定した。
コード
docker-compose.yml
version: "3"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.0.0
ports:
- "9200:9200"
- "9300:9300"
environment:
discovery.type: "single-node"
volumes:
- "es_data:/usr/share/elasticsearch/data"
kibana:
image: docker.elastic.co/kibana/kibana-oss:7.0.0
ports:
- "5601:5601"
environment:
ELASTICSEARCH_URL: "http://elasticsearch:9200"
depends_on:
- elasticsearch
logstash:
image: docker.elastic.co/logstash/logstash-oss:7.0.0
volumes:
- "./data/logstash/pipeline:/usr/share/logstash/pipeline"
- "./data/nginx/log:/var/log/nginx"
depends_on:
- elasticsearch
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- "./data/nginx/log:/var/log/nginx"
depends_on:
- logstash
volumes:
es_data:
driver: local
data/logstash/pipeline/logstash.conf
は Docker でミニマムに ELK スタックに入門する記録 – oki2a24 に記載の内容と同じ。
動作確認
docker-compose up -d
でコンテナを起動する。http://localhost/
にアクセスし、 "Welcome to nginx!" ページが表示されることを確認する。ll data/nginx/log/
などで、access.log
が更新されていることを確認する。http://localhost:9200/
にアクセスし、 Elasticsearch の情報が表示されることを確認する。http://localhost:9200/_cat/indices?v
へアクセスし、data/logstash/pipeline/logstash.conf
の output の index で定義した access_log1 が表示されることを確認する。- http://localhost:5601 にアクセスし、左サイドメニューの "Dev Tools" を開いて、 "Console" に
GET /access_log1/_search?pretty=true
を入力、緑色の "▶︎" をクリックして、右側に Nginx のアクセスログが表示されることを確認する。
http://localhost:9200/
で表示された内容。
{
"name" : "f0def733f5d1",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "javCc5CbRrK48SaLzRy_RA",
"version" : {
"number" : "7.0.0",
"build_flavor" : "oss",
"build_type" : "docker",
"build_hash" : "b7e28a7",
"build_date" : "2019-04-05T22:55:32.697037Z",
"build_snapshot" : false,
"lucene_version" : "8.0.0",
"minimum_wire_compatibility_version" : "6.7.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
http://localhost:9200/_cat/indices?v
で表示された内容。
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open access_log1 q1Cho1lYSiaExFrIV88Avg 1 1 23 0 37.2kb 37.2kb
green open .kibana_1 9A2zhlo8SbySvDQfFkHU9Q 1 0 0 0 283b 283b
おわりに
本投稿は Docker でミニマムに ELK スタックに入門する記録 – oki2a24 の続きとなります。
途中でちょっと調べたくなって、 elasticsearch-oss:7.0.0
の -e “discovery.type=single-node”
とは何か? – oki2a24 を残しました。
また、次のページが参考になりました、ありがとうございます!
以上です。