Docker for Mac 環境で簡単に ELK Stack をビルドする1

INDEX

  1. 背景
  2. 当時のログ可視化環境作り
  3. 本当に楽になったログ可視化環境作り
  4. いまどきの手順ざっくりメモ
    1. Docker for Mac のインストール
    2. Kitematic (Docker Toolbox) のインストール
    3. Docker Image の検索とインストール
    4. ELK を触ってみる
    5. Kibana の起動確認
    6. Elasticsearch の起動確認
    7. Terminal へのアクセス
    8. Logstash の起動確認

背景

先ポストで書いたように、2015年頃に Elasticsearch, Logstash, Kiban あわせて ELK Stack なるものを知って、自分の検証環境の簡易 Syslog サーバとしてみたり、自宅監視用の NetfFlow コレクタにしたりしていました。
visualizing netflow version 9 on ELK

当時のログ可視化環境作り

当時こんな記事はありませんでしたが、いまほど「可視化」が流行っておらず、無料のものは殆ど使い物にならない印象でした。
NetFlow コレクター(無料・フリー版)の比較検討【2016決定版】

その時の手順はというと、

  • Linux (自分はCentOS) をたてる
  • firewalld/iptables, selinux などなどの基本設定
  • Java をインストール
  • ELK をそれぞれインストールする
  • それぞれの conf ファイルをいじいじする(ドキュメント読む&ググる&試行錯誤)
  • 自動起動、自動停止、Index 整理のためのシェルスクリプトを書いたり、パフォーマンス周りのチューニング(ドキュメント読む&ググる&試行錯誤)
  • そうこうしているうちに新しいバージョンの ELK が出てきてアップデート…
    などと、わりとお勉強色が強く、非効率的な作業が多かったです。

本当に楽になったログ可視化環境作り

Docker や Vagrant といった、Infrastructure as a Code の潮流による、スタック化されたアプリケーションがある程度簡易に利用できるようになりました。
vagrant and elk stack installation

いまどきの手順ざっくりメモ

Docker の基本的な概念や用語については割愛します。まずそちらからという方は以下等をご参照ください。
Dockerについて基本から最近追加された機能までまとめ

Docker for Mac のインストール

2016年末まで、Mac への正式サポートがなかったため、ググると混乱する可能性があります。公式サイトが英語ですが最も正確です。
Get started with Docker for Mac

2017年1月でバージョンは 1.12.1
docker version

Kitematic (Docker Toolbox) のインストール

楽をするために、Mac のメニューバーのクジラアイコンから、Kitematic をインストールしましょう。
GUI で、好きな Docker イメージをインストールしたり、設定変更したりできるようになります。

menu

kitematic by docker というページにリダイレクトされます。
注意)現在、Kitematic は Docker Toolbox に吸収されたようです。
Docker for mac と Kitematic でGUIから環境構築

Kitematic のダウンロードを指示に従って進めますと、DockerHub アカウントとの連携を促されますが、しなくとも大丈夫です。

Docker Image の検索とインストール

ここまでお読みいただくと既にお分かりかと思いますが、ここから例えば+NEWを押して、検索窓からelk docker-elk などと検索してみます。


たくさん出てきますね。

ELK を触ってみる

例えば以下の Docker Image を入れてみます。
これを選択した理由は、ダウンロード数が多く、説明分に latest から古いバージョンまで利用できる旨が説明されていたためです。
sebp/elk
+CREATE を押すとダウンロードとデプロイが開始されます。数分かかることもあります。

完了後

右上Settings>Generalから、各種バージョン等が指定されていることがわかります。
Settings>General

Settings>Portsでは、このコンテナとローカルホスト (Mac) が通信するための設定が記述されています。
Settings>Ports

Kibana の起動確認

http://localhost:32770/ へアクセスします。
本来の Kibana へは、:5601 がデフォルトですが、ここでは、PAT が設定されており、`localhost:32770’ をブラウザからたたきます。

Elasticsearch の起動確認

同様に、http://localhost:32769が 従来における localhost:9200 へのアクセスで、Elasticsearch のプロセスが起動していることの確認となります。

Terminal へのアクセス

EXEC をクリックすると、ターミナルアクセスができるようになります。
bash が使えます。

Logstash の起動確認

logstash,kibana,elasticsearchにまつわるものはoptディレクトリにあります。

cd opt/logstashしていただいて、以下のようなチュートリアルにある標準出力が出ればOKです。
Timestamp + hostname + 標準出力に入力した string
となります。

1
2
3
4
5
6
7
8
root@38ef067ec9de:/opt/logstash# ./bin/logstash -e 'input { stdin { } } output { stdout {} }'
hello world
Sending Logstash's logs to /opt/logstash/logs which is now configured via log4j2.properties
The stdin plugin is now waiting for input:
[2017-01-25T10:04:59,971][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>500}
[2017-01-25T10:04:59,987][INFO ][logstash.pipeline ] Pipeline main started
2017-01-25T10:05:00.012Z 38ef067ec9de hello world
[2017-01-25T10:05:00,090][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9601}

長くなったので次へ続く

ƒ