ローカル環境にてElasticStackの構築からデータ投入まで(Elasticsearch, Kibana, logstash)

ElasticSearch

環境

Docker Desktop 4.14.1
Engine 20.10.21
Compose v2.12.2

Elastic Stack(Elasticsearch、kibana、logstash)の構築

こちらからソースをcloneする

git clone https://github.com/deviantony/docker-elk
cd docker-elk
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
docker-elk-kibana-1          "/bin/tini -- /usr/l…"   kibana              running             0.0.0.0:5601->5601/tcp
docker-elk-logstash-1        "/usr/local/bin/dock…"   logstash            running             0.0.0.0:5044->5044/tcp, 0.0.0.0:9600->9600/tcp, 0.0.0.0:50000->50000/tcp, 0.0.0.0:50000->50000/udp
docker-elk-setup-1           "/entrypoint.sh"         setup               exited (0)

なぜかdocker-elk-setup-1だけが起動しない
ログを確認するもSetup has already run successfully on 2022-12-28 01:56:41+00:00. Skippingと書かれているがとりあえず無視する

他が起動されているのを確認できたら
localhost:5601へアクセスする
アカウント名とパスワードはそれぞれ下記を利用する
アカウント名はelastic
パスワードはchangeme

デフォルトユーザーのパスワードをリセットする

下記のコマンドを実行してパスワードをリセットする。

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 compose up -d logstash kibana

kibanaを日本語化にする

kibana/config/kibana.ymli18n.locale: ja-JPを記載する

---
## Default Kibana configuration from Kibana base image.
## https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/templates/kibana_yml.template.ts
#
server.name: kibana
server.host: 0.0.0.0
elasticsearch.hosts: [ http://elasticsearch:9200 ]

monitoring.ui.container.elasticsearch.enabled: true
monitoring.ui.container.logstash.enabled: true

## X-Pack security credentials
#
elasticsearch.username: kibana_system
elasticsearch.password: ${KIBANA_SYSTEM_PASSWORD}
# 下記を追記する
i18n.locale: ja-JP

日本語データの全文検索を可能にするためのプラグインを導入する

kibana/Dockerfileにインストールするプラグインを記載する

ARG ELASTIC_VERSION

# https://www.docker.elastic.co/
FROM docker.elastic.co/kibana/kibana:${ELASTIC_VERSION}

# Add your kibana plugins setup here
# Example: RUN kibana-plugin install <name|url>
+ RUN elasticsearch-plugin install analysis-icu
+ RUN elasticsearch-plugin install analysis-kuromoji

kibanaのコンテナを再起動してプラグインなどを反映させる

docker compose restart kibana

localhost:9200にアクセス

下記コマンドを実行して下記のようなレスポンスがあればElasticsearchの起動ができている。

curl localhost:9200 -u 'elastic:再設定したパスワード'
{
  "name" : "elasticsearch",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "wlcjqif3R_OwKS_rySZPQw",
  "version" : {
    "number" : "8.5.3",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "4ed5ee9afac63de92ec98f404ccbed7d3ba9584e",
    "build_date" : "2022-12-05T18:22:22.226119656Z",
    "build_snapshot" : false,
    "lucene_version" : "9.4.2",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

インデックスの作成とデータ投入

kibanaにアクセス→Management→devtoolsにて実施する
空のindexを作成する
作成するにはPUTメソッドを利用する

PUT job_offers

GET _cat/indices
yellow open job_offers 8TKDb8eeTWO--uStPgGfcw 1 1 0 0 225b 225b

データを投入する

# データ投入
PUT job_offers/_doc/1
{
  "job_name": "programmer",
  "date": "2023-01-01T15:00:00"
}

# 投入したデータを取得
GET job_offers/_doc/1

{
  "_index": "job_offers",
  "_id": "1",
  "_version": 1,
  "_seq_no": 0,
  "_primary_term": 2,
  "found": true,
  "_source": {
    "job_name": "programmer",
    "date": "2023-01-01T15:00:00"
  }
}

参考

https://n-presso.com/2022/07/08/elastic-stack%E3%82%92docker-compose%E3%81%A7%E5%BB%BA%E3%81%A6%E3%82%8B%E3%80%90elastic-search-kibana-logstash%E3%80%91/

コメント

タイトルとURLをコピーしました