Elastic StackのX-Packを試す(インストール編)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

検証時のX-Packのバージョンはbeta1です。
GAリリース時は仕様が変わっている可能性もございますのでご注意ください。

こんにちは、藤本です。
Elastic Stackもベータバージョンまでリリースされました。これからはGAリリースに向けてバグフィックスが主なアップデートとなっていくことでしょう。

全6回で X-Pack をおさらいがてら機能を試しつつ、新機能を確認していきます。

今回は初回ということで、X-Pack の概要の確認と、インストール関連を試してみました。

X-Packを試すシリーズのその他のエントリは以下をご参照ください。

X-Pack

Elastic Stack 5以前は有償プラグインとして、Marvel、Shield、Watcher、Graphを個別プロダクトとして提供していました。それぞれ個別にインストール、アップグレードが必要だったところをひとまとめに取り扱えるように1つにパッケージ化されたのが、X-Packです。またX-PackからReportingという機能も加わりました。

  • Security(旧Shield)
    • Elasticsearch/Kibanaのユーザー認証/認可
    • 通信の暗号化
    • 監査ログ
  • Monitoring(旧Marvel)
    • Elasticsearchクラスタの正常性、パフォーマンスモニタリング
    • Kibanaの正常性、パフォーマンスモニタリング
  • Alerting and Notification(旧Watcher)
    • 柔軟な条件のインデックス監視
    • Elasticsearchクラスタ監視
    • 通知
  • Graph
    • データ間の(潜在的な)関連性の可視化
  • Reporting(新機能)
    • Kibanaダッシュボードのスナップショット(PDF化)

インストール

事前準備

X-Packを利用する場合、Elasticsearchの5系をインストールしておいてください。Monitoring、Graph、Reportingに関してはKibanaのプラグイン機能となりますので、Kibana 5系もインストールしておいてください。

今回試した環境は以下となります。

  • OS : CentOS 7(7.2.1511)
  • Elasticsearch : 5.0.0-beta1
  • Kibana : 5.0.0-beta1

ElasticsearchへのX-Packインストール

elasticsearch-pluginコマンドでX-Packプラグインをインストールします。

RPMでインストールしている場合、/usr/share/elasticsearch/bin/elasticsearch-pluginになります。

# /usr/share/elasticsearch/bin/elasticsearch-plugin install x-pack
-> Downloading x-pack from elastic
[=================================================] 100%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessClassInPackage.com.sun.activation.registries
* java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission setContextClassLoader
* java.lang.RuntimePermission setFactory
* java.security.SecurityPermission createPolicy.JavaPolicy
* java.security.SecurityPermission getPolicy
* java.security.SecurityPermission putProviderProperty.BC
* java.security.SecurityPermission setPolicy
* java.util.PropertyPermission * read,write
* java.util.PropertyPermission sun.nio.ch.bugLevel write
* javax.net.ssl.SSLPermission setHostnameVerifier
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed x-pack

プラグインインストール後は再起動が必要です。

# systemctl restart elasticsearch

X-Packをインストール後はSecurityが有効になっています。Elasticsearchへのリクエストはベーシック認証が必須となります。

# curl 'localhost:9200?pretty'
{
  "error" : {
    "root_cause" : [
      {
        "type" : "security_exception",
        "reason" : "missing authentication token for REST request [/?pretty]",
        "header" : {
          "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
        }
      }
    ],
    "type" : "security_exception",
    "reason" : "missing authentication token for REST request [/?pretty]",
    "header" : {
      "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
    }
  },
  "status" : 401
}

初期ユーザーはユーザー名がelastic、パスワードがchangemeです。

# curl -u elastic 'localhost:9200?pretty'
Enter host password for user 'elastic':
{
  "name" : "5-mmWGx",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "8OQKs8fiSJSMfoFebG06uA",
  "version" : {
    "number" : "5.0.0-beta1",
    "build_hash" : "7eb6260",
    "build_date" : "2016-09-20T23:10:37.942Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.0"
  },
  "tagline" : "You Know, for Search"
}

ベーシック認証でアクセスできました。

Kibanaへのインストール

kibana-pluginコマンドでX-Packプラグインをインストールします。

RPMでインストールしている場合、/usr/share/kibana/bin/kibana-pluginになります。

# /usr/share/kibana/bin/kibana-plugin install x-pack
Attempting to transfer from x-pack
Attempting to transfer from https://artifacts.elastic.co/downloads/kibana-plugins/x-pack/x-pack-5.0.0-beta1.zip
Transferring 56941922 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete

プラグインインストール後は再起動が必要です。

# systemctl restart kibana

KibanaもSecurityが有効になっています。Kibanaにアクセスするとログイン画面が表示されます。

Webブラウザを起動し、http://<hostname or ipaddress>:5601/へアクセスします。

Kibana

Elasticsearchと同じくelasticユーザーでログインします。

Kibana 2

標準のKibanaと比べて、GraphMonitoringReporting、ユーザー情報やLogoutといったSecurityのUIが追加されています。

Kibana

X-Packの有効化・無効化

X-Packをインストールするとデフォルトでは全ての機能が有効化されます。Elasticsearch、KibanaではX-Packの機能単位で有効/無効を切り替えることができます。例えば、検証時点でSecurityによるベーシック認証が煩わしいという時はそれぞれの設定ファイルで無効設定することにより、モジュールが読み込まれなくなります。

X-Pack無効化

今回はSecurity機能を無効化します。elasticsearch.ymlに無効化設定を追記します。

ドキュメントではelasticsearch.ymlkibana.ymlを修正と書いていますが、elasticsearch.ymlだけ記述すれば、Kibanaでも無効化されるようです。

# vi /etc/elasticsearch/elasticsearch.yml
### add following line
xpack.security.enabled: false

xpack.security.enabledsecuritymonitoringgraphwatcherreportingにすることでそれぞれの機能を無効化設定することができます。

設定を追記したら、Elasticsearchを再起動します。

# systemctl restart elasticsearch

ベーシック認証なしでElasticsearchへAPIを発行します。

# curl 'localhost:9200?pretty'
{
  "name" : "5-mmWGx",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "8OQKs8fiSJSMfoFebG06uA",
  "version" : {
    "number" : "5.0.0-beta1",
    "build_hash" : "7eb6260",
    "build_date" : "2016-09-20T23:10:37.942Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.0"
  },
  "tagline" : "You Know, for Search"
}

認証なしでAPIが返ってきました。

次にKibanaへアクセスしてみます。

Kibana

左ペインのメニューからユーザー情報が削除され、管理画面のUser、Roleといったリンクもなくなりました。あれ?Graphも消えてる?

まとめ

いかがでしたでしょうか?

X-Packにより有償プラグインを簡単に利用開始できるようになりました。次回からはX-Packの各機能の始め方と新機能を触ってみたいと思います。