inFablic

Fablic開発者ブログ

クラスタ構成のElasticsearchにX-Packを導入する方法

X-Pack

はじめまして、エンジニアの宮本です。

今回、携わっている新規プロジェクトで初めてElasticsearchを構築することになり、モニタリングにX-Pack(旧Marvel)を入れたのですが、クラスタ構成での設定例が少ない様に思えたので、紹介させていただきます。今後Elasticsearchを導入される方の参考になれば幸いです。

概要

以下の様な構成の場合、どの様に設定すべきか説明させていただきたいと思います。

f:id:infablic:20170605161220p:plain

  • Elasticsearch cluster
    • 各instanceにはelasticsearch5.xがインストールしています。
    • master/data node 3台のクラスター構成です。
    • 認証で使用するuser/passは、デフォルトの elastic, changeme とさせていただきます。
  • Kibana instance
    • 1つのインスタンスの中にKibana5.xとElasticsearch5.xをインストールしています。
    • Kibanaは、local内のElasticsearchのindexを参照します。
    • このインスタンスのhost名を仮に kibana.example.com とさせていただきます。

では、詳細に入っていきましょう。

Kibana instance側の設定

まずはじめに、Kibana instanceの設定から行います。

ElasticsearchにX-Packをインストール

以下のコマンドでインストールを行います。

$ES_HOME/bin/kibana-plugin install x-pack

デフォルトだと$ES_HOMEは /usr/share/elasticsearch になります。

Elasticsearch設定変更

elasticsearch.yml にX-Packの設定を追加します。

# X-Pack configure
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.security.enabled: false
xpack.monitoring.enabled: false
  • action.auto_create_index: X-Pack内で使用するindexを自動的に作成します。
  • xpack.security.enabled: KibanaにLogin画面を表示させたい場合は true を設定します。
  • xpack.monitoring.enabled: 無料で済ませたいので、Kibana instance側の設定は false にします。

ファイルを書き換えたら、elasticsearchを restart または reload で変更内容を反映させます。

KibanaにX-Packをインストール

以下のコマンドでインストールを行います。

$KIBANA_HOME/bin/kibana-plugin install x-pack

デフォルトだと$KIBANA_HOMEは /usr/share/kibana になります。

以上でKibana instance側の設定は終了になります。

Elasticsearch cluster側の設定

続いて、各node instanceの設定を行なっていきます。こちらでは、モニタリング情報をKibana instanceに送信する設定になります。

BASICライセンス取得

X-Packを使用するためには、ライセンス登録を行う必要があります。 こちらのページでライセンスを取得しましょう。尚、BASICライセンスは無料で取得できますが、注意点もいくつかあります。

  • 対応可能なクラスタは、1つだけです。
  • モニタリング情報の保存期間は7日間のみになります。

ライセンス登録

取得した、ライセンスjsonファイルをnode instanceに保存し、ライセンス登録を行います。

  • コマンド
curl -XPUT -u elastic:changeme 'http://localhost:9200/_xpack/license?acknowledge=true' -H "Content-Type: application/json" -d @/path/to/basiclicense.json
  • レスポンス
{"acknowledged":true,"license_status":"valid”}

上記の様なレスポンスが返ってきたら成功です。念の為、ライセンス情報を確認しましょう。

  • コマンド
curl -XGET 'http://localhost:9200/_xpack/license'
  • レスポンス
{
  "license" : {
    "status" : "active",
    "uid" : "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type" : "basic",
    "issue_date" : "2017-06-06T00:00:00.000Z",
    "issue_date_in_millis" : 0000000000000,
    "expiry_date" : "2018-06-06T23:59:59.999Z",
    "expiry_date_in_millis" : 0000000000000,
    "max_nodes" : 100,
    "issued_to" : "Fablic Developer (Fablic,Inc.)”,
    "issuer" : "Web Form",
    "start_date_in_millis" : 0000000000000
  }
}

"type" : "basic", になっているか確認しましょう。

X-Packのインストール

Kibana instance側で行っていただいた時と同じコマンドで実行できます。

$ES_HOME/bin/kibana-plugin install x-pack

Elasticsearch設定変更

elasticsearch.yml にX-Packの設定を追加します。

# X-Pack configure
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.security.enabled: false
xpack.monitoring.enabled: true
xpack.graph.enabled: true
xpack.watcher.enabled: true
xpack.monitoring.exporters:
  id1:
    type: http
    host: ["http://kibana.example.com:9200"]

ここで、注目していただきたいのが xpack.monitoring.exporters の部分になります。

こちらでKibana instance側にモニタリング情報を送ることができます。より堅牢に行いたい場合は以下の様に認証やSSLの設定も行うことも可能です。

xpack.monitoring.exporters:
  id1:
    type: http
    host: ["http://kibana.example.com:9200"]
    auth:
      username: remote_monitor
      password: changeme
    ssl:
      certificate_authorities: [ "/path/to/ca.crt" ]

これで設定は以上になります。Kibanaにアクセスして Monitoring のメニューが表示されているか確認しましょう。

monitoring-cluster

最後に

Monitoringにはドキュメントの状態やノードの状態、検索のパフォーマンス等が簡単に確認することができます。今後運用する上では大変便利なものですのでオススメします。 みなさん、X-Packを入れて快適な運用ライフを送りましょう。

参考URL