7
6

More than 1 year has passed since last update.

DockerでElastic Stack 8.2環境の構築

Posted at

背景

様々なログのデータをデータベースに集積して可視化して解析する用途に「Elastic Stack」を使用していますがDockerで手軽に最新のElastic Stack環境を作成するメモ書きです。

Elastic Stack

詳しくは公式ページの案内にありますが簡潔すると以下の様な機能構成になります。

  • Elasticsearch
     データの集積と検索と分析を担います。
  • Logstash
     データをElasticsearchに投入する際のパイプライン機能を担います。
  • Kibana
     データの可視化で様々なチャートやグラフなどで表現機能を担います。

以前はこれらの頭文字をとって「ELK Stack」とも呼ばれていました。

基本機能はオープンソースで無料で使用出来ますが、一部に有料ライセンス機能があります。
はじめは試用期間を試して後で無効にする事もできます。

動作環境

ホスト側

  • OS:Ubuntu Server 20.04.4LTS
  • Docker CE version 20.10.16
  • docker compose version v2.6.0

コンテナ側

  • Elastic Stack 8.2.2

Docker環境の準備

以下のページにて紹介していますので参考にしてみて下さい。

ファイアウォール設定(重要)

グローバルIPアドレス環境で構築した場合にはElastic Stackの各サービスがインターネット外部に漏洩してしまうので必ずファイアウォール(セキュリティグループ等)の設定を事前に行いましょう。
今回の場合ではTCP/5601番を作業端末側だけに限定して開放します。
Elastic Stackを狙ったサイバー攻撃は世界中から頻繁に来ていますので数秒たりとも外部開放はしないように。

Elastic Stackの構築

今回は手軽にDocker Composeで最新のElastic Stackが構築出来る以下のリポジトリを利用します。

Githubから取得

必要となる基本のファイルをGithubから入手します。

$ git clone https://github.com/deviantony/docker-elk.git
$ cd docker-elk

Docker Composeでコンテナ環境を起動

$ docker compose up -d
$ docker compose ps
NAME                         COMMAND                  SERVICE             STATUS              PORTS
docker-elk-elasticsearch-1   "/bin/tini -- /usr/l…"   elasticsearch       running             0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9200->9200/tcp, :::9300->9300/tcp
docker-elk-kibana-1          "/bin/tini -- /usr/l…"   kibana              running             0.0.0.0:5601->5601/tcp, :::5601->5601/tcp
docker-elk-logstash-1        "/usr/local/bin/dock…"   logstash            running             0.0.0.0:5000->5000/tcp, 0.0.0.0:5000->5000/udp, 0.0.0.0:5044->5044/tcp, 0.0.0.0:9600->9600/tcp, :::5000->5000/tcp, :::5000->5000/udp, :::5044->5044/tcp, :::9600->9600/tcp
docker-elk-setup-1           "/entrypoint.sh"         setup               running             9300/tcp

Elastic Stackのログイン画面

環境にもよりますが数分待つとWebブラウザからElastic Stackのログイン画面が表示出来ます。
DockerホストのIPアドレス番号とポート番号はKibanaの5601番を指定します。

 「http://127.0.0.1:5601」

標準のアカウント名は「elastic」パスワードは「changeme」に設定されているので一端はログインして動作確認をしておきます。

パスワードの初期化と新規作成

標準のアカウントのパスワードをリセットして新規作成します。
使用される3つのアカウントについて実施します。
各コマンド実行時に表示される新しいパスワードを別途記録しておきます。

$ docker compose exec elasticsearch bin/elasticsearch-reset-password --batch --user elastic
$ docker compose exec elasticsearch bin/elasticsearch-reset-password --batch --user logstash_internal
$ docker compose exec elasticsearch bin/elasticsearch-reset-password --batch --user kibana_system

新規パスワード設定

環境設定ファイル「.env」に先程作成した新規パスワードに修正変更します。

docker-elk/.env
ELASTIC_PASSWORD='elasticの新規パスワード'
LOGSTASH_INTERNAL_PASSWORD='logstashの新規パスワード'
KIBANA_SYSTEM_PASSWORD='kibanaの新規パスワード'

Docker Compose 再起動

docker composeでLogstashとKibanaを再起動します。

$ docker compose up -d logstash kibana

新しいパスワードでElastic Stackに再ログイン出来る事を確認します。

日本語化

Elastic Stackの画面を日本語にする場合には設定ファイルを修正します。

kibana/config/kibana.yml
i18n.locale: "ja-JP"

docker composeでKibanaを再起動します。

$ docker compose restart kibana
7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6