概要
Dockerのお勉強として、Dockerを利用して、ElasticsearchとKibanaの環境をつくって見たいと思います。
また、複数のコンテナを扱うため、docker-compose
を使用してみます。
Dockerの環境構築は下で記事でまとめました。 ugap.hatenablog.com
環境
- Docker 1.11.1
- docker-compose 1.7.1
構成
$ tree . ├── docker-compose.yml └── es_config ├── elasticsearch.yml ├── log4j2.properties └── scripts
docker-compose.yml
es: #--(1) image: elasticsearch:5 #--(2) ports: - "9200:9200" #--(3) - "9300:9300" #--(3) volumes: - "$PWD/es_config:/usr/share/elasticsearch/config" #--(4) environment: ES_JAVA_OPTS: "-Xms512m -Xmx512m" #--(5) ki: image: kibana:5 ports: - "5601:5601" links: - es environment: - ELASTICSEARCH_URL=http://192.168.33.10:9200
項番 | 説明 |
---|---|
(1) | elasticsearchの設定をesというサービス名で定義。 |
(2) | elasticsearch公式のdockerイメージのversion5を指定。 |
(3) | Elasticsearch で使用する HTTP用のデフォルトポートは9200、ノード間のコミュニケーション用に 9300を使用するため、ポートを公開する。 |
(4) | es_config というディレクトリとelasticsearchを動かすdockerコンテナ上の/usr/share/elasticsearch/config のパスを紐づけ。/usr/share/elasticsearch/config にはelasticsearchの設定ファイルelasticsearch.yml が置いてある。(中身は後述) |
(5) | デフォルトではヒープサイズが2gのようで、下げてあげないとエラーがでてしまうので、ここで設定する。 |
Kibanaの設定も同様の考え方なので省略します。
elasticsearch.ymlの設定
http.host: 0.0.0.0 #--(1) http.cors.enabled: true #--(2) http.cors.allow-origin: "*" #--(3)
項番 | 説明 |
---|---|
(1) | HTTPサービスをバインドするホストアドレス。 |
(2) | クロスドメイン通信を有効にする。 |
(3) | 許容するドメインを指定。(今回は*としていますが、セキュリティ上のリスクがあります。) |
実行
docker-composeを実行してみます。
$ docker-compose up -d
-d
オプションでバックグラウンド実行になります。
ブラウザでhttp://192.168.33.10:5601/
にアクセスしてみます。
うまく表示されました。
まとめ
docker-composeで複数のdockerコンテナを管理することができました。
elasticsearch、kibanaは様々なデータの解析・可視化をするのに注目されているOSSですが、設定できることがたくさんあるので、
一度つくった環境をどこでも作れるようにするansibleやdockerとのコラボが適しているなと思いました。
次はこの環境を利用して、何かKibanaで可視化してみたいと思います。