🐡

Linux環境にElasticsearchを導入

2022/12/07に公開約4,700字

概要

https://www.elastic.co/jp/downloads/elasticsearch

kibanaを利用したい事で出来たので、まずはElasticsearchを導入する事に。

Javaは梱包されている物を利用する。

ES_JAVA_HOMEで任意のJavaを指定出来るが設定したら起動出来なかった。

インストールしたバージョンは Elasticsearch 8.5.2

準備

SHAをインストール

sudo yum install perl-Digest-SHA

確認

shasum --version

インストール

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.2-x86_64.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.2-x86_64.rpm.sha512
shasum -a 512 -c elasticsearch-8.5.2-x86_64.rpm.sha512
sudo rpm --install elasticsearch-8.5.2-x86_64.rpm

セキュリティ自動構成情報が表示される。

表示されるパスワードをメモしておく。
The generated password for the elastic built-in superuser is : XXXXXXXXXXXX

--------------------------- Security autoconfiguration information ------------------------------

Authentication and authorization are enabled.
TLS for the transport and HTTP layers is enabled and configured.

The generated password for the elastic built-in superuser is : XXXXXXXXXXXX

If this node should join an existing cluster, you can reconfigure this with
'/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token-here>'
after creating an enrollment token on your existing cluster.

You can complete the following actions at any time:

Reset the password of the elastic built-in superuser with 
'/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'.

Generate an enrollment token for Kibana instances with 
 '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'.

Generate an enrollment token for Elasticsearch nodes with 
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'.

-------------------------------------------------------------------------------------------------

systemctl 設定

設定ファイルの再読込

sudo systemctl daemon-reload

サービス自動起動有効

sudo systemctl enable elasticsearch.service

elasticsearch.ymlを編集

ブラウザからアクセスしたいのでnetwork.hostを編集

sudo vi /etc/elasticsearch/elasticsearch.yml

ネットワークホストの設定

#network.host: 192.168.0.1
network.host: IPアドレス

起動/確認

起動

sudo systemctl start elasticsearch.service

ステータス確認

sudo systemctl status elasticsearch.service

Elasticsearch 接続確認

curlコマンド

sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200

パスワードを聞かれるので、インストール完了後に表示されたパスワードを入力する。
The generated password for the elastic built-in superuser is : XXXXXXXXXXXX

応答が返される。

{
  "name" : "localhost",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "P0t8-SaUQs2bqDaSgyqlfA",
  "version" : {
    "number" : "8.5.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "a846182fa16b4ebfcc89aa3c11a11fd5adf3de04",
    "build_date" : "2022-11-17T18:56:17.538630285Z",
    "build_snapshot" : false,
    "lucene_version" : "9.4.1",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

ブラウザ

https://サーバーIPアドレス:9200にアクセス

ユーザー名、パスワードを聞かれるので入力する。

  • ユーザー名:elastic
  • パスワード:The generated password for the elastic built-in superuser is : XXXXXXXXXXXX

設定

elasticsearch.service

sudo vi /usr/lib/systemd/system/elasticsearch.service

メモリロックを設定

LimitMEMLOCK=infinity
sudo systemctl daemon-reload

elasticsearch.yml

sudo vi /etc/elasticsearch/elasticsearch.yml

メモリロックを設定

コメントを外す

#bootstrap.memory_lock: true
bootstrap.memory_lock: true

停止/確認

sudo systemctl stop elasticsearch.service
sudo systemctl status elasticsearch.service

ユーザー関連

ユーザー一覧表示

curl -k --user elastic:パスワード -X GET "https://localhost:9200/_security/user?pretty"

パスワード再発行

cd /usr/share/elasticsearch/bin/
sudo ./elasticsearch-reset-password -u ユーザー名

ユーザー追加

curl -k --user elastic:パスワード -X POST "https://localhost:9200/_security/user/ユーザー名?pretty" -H 'Content-Type: application/json' -d '{"password" : "ユーザーパスワード", "roles" : [ "superuser" ]}'

ユーザー削除

curl -k --user elastic:パスワード -X DELETE "https://localhost:9200/_security/user/削除ユーザー"

任意のJavaを設定したら起動に失敗

下記のメッセージが表示されて起動に失敗。

could not find java in ES_JAVA_HOME at /usr/lib/jvm/java-11-openjdk/bin/java

Javaのバージョンが合っていないのか、関連するモジュールが足りないのか。

おとなしく梱包されているJavaを利用する。

ES_JAVA_HOMEにパスを設定

sudo vi /etc/sysconfig/elasticsearch
#ES_JAVA_HOME=
ES_JAVA_HOME=/usr/lib/jvm/java-11-openjdk

Kibanaインストール

Linux環境にKibanaを導入

Discussion

ログインするとコメントできます