カテゴリー
Linux

Docker Compose でミニマムに ELK スタックに入門する記録

まとめ

  • あらかじめ用意するディレクトリは、 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.confDocker でミニマムに ELK スタックに入門する記録 – oki2a24 に記載の内容と同じ。

動作確認

  1. docker-compose up -d でコンテナを起動する。
  2. http://localhost/ にアクセスし、 "Welcome to nginx!" ページが表示されることを確認する。
  3. ll data/nginx/log/ などで、 access.log が更新されていることを確認する。
  4. http://localhost:9200/ にアクセスし、 Elasticsearch の情報が表示されることを確認する。
  5. http://localhost:9200/_cat/indices?v へアクセスし、 data/logstash/pipeline/logstash.conf の output の index で定義した access_log1 が表示されることを確認する。
  6. http://localhost:5601 にアクセスし、左サイドメニューの "Dev Tools" を開いて、 "Console" に GET /access_log1/_search?pretty=true を入力、緑色の "▶︎" をクリックして、右側に Nginx のアクセスログが表示されることを確認する。 Kibana での確認

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 を残しました。

また、次のページが参考になりました、ありがとうございます!

以上です。

コメントを残す