Docker/K8S実践コンテナ開発入門@25日目

今回はElasticsearchとKibanaを構築してみます。

Elasticsearch, Kibana構築

Elasticsearch・・・検索エンジン、様々なデータ処理に役立つ
Kibana・・・Elasticserachの可視化ツール

まずは、書籍に従って「docker-compose.yaml」と「jvm.options」を作成します。
jvm.options」はHeapサイズを抑えて軽量な形で作成されるようにしています。

作成後は以下のコマンドでイメージをビルドします。
■コマンド

docker-compose up -d

起動後は正常に起動したかを以下の通り接続して確認してみます。

■URL
http://localhost:5601

f:id:lawrence-twin:20200525211001p:plain

「status red」となっており、うまくいっていないようです。
「docker-compose.yml」ないのvolumeマウント設定を削除してjvm.optionsの設定を無視して起動してみる。
うーん、うまくいくな。
f:id:lawrence-twin:20200525211214p:plain

色々悩んだところ、
jvm.optionsの設定が以下の通り誤っていました。

正:-XX:+UseConcMarkSweepGC
誤:-XX::UseConcMarkSweepGC

vscodeで入力していますが、構文チェックに引っかかってくれないんですね。
ともかく以下の通り接続することは確認できました。

fluentdの構築

fluentdコンテナは、Elasticsearchへ収集したログを転送できるようにするためのもの
こちらは「fluent.conf」で転送先を設定します。
また「Dockerfile」を作成したら以下のコマンドを実行します。


■コマンド

docker image build -t ch08/fluentd-elasticsearch:latest .

fluentd logging driverでコンテナのログを転送

この後、fluentd loggin driverでコンテナのログを転送します。
書籍に従って「docker-compose.yml」を修正し、echoというこの書籍専用アプリとfluentdを追加します。
修正後は再起動と接続確認をします。

■コマンド

//再起動
docker-compose up -d

//確認
curl http://localhost:8080

次にログの確認を行うために、以下のコマンドを実行

■コマンド

curl http://localhost:9200/_cat/indices?v
zsh: no matches found: http://localhost:9200/_cat/indices?v

エラーが出てうまくいかないですね。どうやら「?」が悪さをしているみたい。
色々調べてみるとquoteで囲ってあげれば解消されるとのことで再度以下の通り実行

■コマンド

curl 'http://localhost:9200/_cat/indices?v'
health status index             uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   .kibana           -Txh4uOtQI-b6VJ7Y9BayA   1   1          1            0      3.2kb          3.2kb
yellow open   logstash-20200525 OMTsNg0RTkSpXPDwr6ukhg   5   1         12            0     64.4kb         64.4kb

期待通りの結果が取得できました。
この「logstash-yyyymmdd」という部分にログ情報のインデックスが作成されているようです。

f:id:lawrence-twin:20200525223205p:plain

「Crate」というボタンを押すことで、以下の通りログの内容も確認できました。

f:id:lawrence-twin:20200525223259p:plain

続きは明日以降行います。