Elasticsearch + Kibana 8.11を再インストール

Elasticsearchを再インストールしたときの覚書。

環境: CentOS Stream 9, Elasticsearch 8.11.3, Kibana 8.11.3


1.Elasticsearchをインストール

dnf用RPMレポジトリを公式サイトを参考に追加する。
参考: Install Elasticsearch with RPM | Elasticsearch Guide [8.11] | Elastic

enabled=1にしておく。
# less /etc/yum.repos.d/elastic.repo

別コンソールでログを確認しながら作業する。
# journalctl -f

dnfでインストール。
# dnf install elasticsearch

superuser"elastic"のパスワードがコンソールに表示されるので、shellの環境変数として保存する。
# less ~/.bash_profile

export ELASTIC_PASSWORD="your_password"

再読み込みして環境変数一覧表示
# source ~/.bash_profile
# printenv

設定変更。
NginxからリバースプロキシするからSSLは無効にする。
Elastic AgentのためにAPI Keyを有効にする。
# less /etc/elasticsearch/elasticsearch.yml

xpack.security.authc.api_key.enabled: true

xpack.security.http.ssl:
  enabled: false
#  keystore.path: certs/http.p12

メモリ使用量を2GBに設定。
# less /etc/elasticsearch/jvm.options

-Xms2g
-Xmx2g

Elasticsearch起動して確認。
# systemctl start elasticsearch
# systemctl status elasticsearch

Elasticsearchにアクセスして確認。
# curl -u elastic:$ELASTIC_PASSWORD http://localhost:9200

{
  "name" : "hoge.jp",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "XCJhMXw...BPvw",
  "version" : {
    "number" : "8.11.3",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "64cf052f3b...cb88aca7e739d9a",
    "build_date" : "2023-12-08T11:33:53.634979452Z",
    "build_snapshot" : false,
    "lucene_version" : "9.8.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

Nginxからリバースプロキシを設定しておく。
(自社サーバーのIPアドレスしか接続許可しない)
参考: Elasticsearch + KibanaをインストールしてNginxからリバースプロキシ

他のサーバーから接続確認。
# curl -u elastic:password https://search.hoge.jp

自動起動ON。
# systemctl enable elasticsearch



2.Kibanaをインストール

dnf用RPMレポジトリを公式サイトを参考に追加する。
参考: Install Kibana with RPM | Kibana Guide [8.11] | Elastic

dnfでインストール。
# dnf install kibana

設定ファイルを確認。
server.publicBaseUrlを設定する。
(Nginxのリバースプロキシを設定済み)
# less /etc/kibana/kibana.yml

server.publicBaseUrl: "https://kibana.hoge.jp"

KibanaからElasticsearchに接続するためのトークン作成。
# /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

エラー

Unable to create enrollment token for scope [kibana]

ERROR: Unable to create an enrollment token. Elasticsearch node HTTP layer SSL configuration is not configured with a keystore, with exit code 73

SSLを無効したので、手動でElasticsearchに接続する設定を追加する。
参考: Set up minimal security for Elasticsearch | Elasticsearch Guide [8.11] | Elastic

設定ファイル編集。
# less /etc/kibana/kibana.yml

elasticsearch.username: "kibana_system"

keysotreにパスワードを追加する。
# /usr/share/kibana/bin/kibana-keystore create
# /usr/share/kibana/bin/kibana-keystore add elasticsearch.password

確認。
# /usr/share/kibana/bin/kibana-keystore list

Elasticsearchの"kibana_system"ユーザーのパスワード変更。
# /usr/share/elasticsearch/bin/elasticsearch-reset-password -i -u kibana_system

Kibanaを起動。
# systemctl start kibana

自動起動ONになっているか確認。
# systemctl list-unit-files -t service

ブラウザでアクセスして確認。

ログに下記のWARNINGが出る。

Dec 23 10:11:50 hoge.jp kibana[150237]: [2023-12-23T10:11:50.851+09:00][WARN ][plugins.fleet] xpack.encryptedSavedObjects.encryptionKey is not configured, agent uninstall tokens are being stored in plain text

公式サイトを参考に暗号化キーを生成する。
参考: Secure saved objects | Kibana Guide [8.11] | Elastic
# /usr/share/kibana/bin/kibana-encryption-keys generate

表示された値を設定ファイルに記載する。
# less /etc/kibana/kibana.yml

xpack.encryptedSavedObjects.encryptionKey: fd10ad4...ca301f1
xpack.reporting.encryptionKey: 11771...dd8b
xpack.security.encryptionKey: d1d...4b547a

Kibana再起動。
# systemctl restart kibana



【関連記事】