エンジニアリング

Kibanaのspaceに移行する

##spaceに移行する##

Kibana 6.5より、ダッシュボードや可視化、その他の保存済みのオブジェクトをspaceを使用して整理できるようになりました。さらにセキュリティ機能を使用して特定のspaceにアクセス権を持つロールを制御することもできるようになりました。これにより、Kibanaの同じインスタンスを多数のユーザーで共有しつつ、各ユーザーが保存済みオブジェクトのサブセットを使用できます。

spaceをサポートするKibanaにバージョンをアップグレードすると、既存の保存済みオブジェクトはすべて"Default"というspaceに入っています。その後、以下に紹介する方法を使用してspace間でオブジェクトを移動することができます。

##保存済みオブジェクトをspace間で移動する##

保存済みオブジェクトを1つのspaceから別のspaceに移動するには、Kibanaの[Import/Export]UIを使用します。[Import/Export]UIを使用して保存済みオブジェクトを移動する場合、関連する保存済みオブジェクトが自動的に移動しない点に留意してください。ダッシュボードとすべての依存するオブジェクトをspace間で移動させる場合は、"ダッシュボードをspaceからspaceへ移動させる"を参照してください。

たとえばあるインデックスパターンを1つのspaceから別のspaceに移動させる場合、[Management] > [Saved Objects]を開き、移動させる保存済みオブジェクトを選択してください。[Export]をクリックすると、出力したJSONの保存先を選択できます。

Export Saved ObjectI

次にspaceセレクターで、別のspaceを選択します。

Change Space

spaceの変更操作を終えたら、[Management] > [Saved Objects]に戻ります。保存済みオブジェクトは各spaceごとに完全に独立しています。先ほどエクスポートしたインデックスパターンはここでは表示されていません。先ほどエクスポートしたインデックスパターンをインポートするには、[Import]をクリックして、前回JSONを保存した場所を表示します。

Import Saved Object

これでインポートしたインデックスパターンが表示されるようになりました。 現在2つのインデックスパターンがありますが、どちらもElasticsearchの同じインデックス用のものです。各spaceで保存されたオブジェクトは独立しており、いずれかのインデックスパターンに変更を加えても、もう一方のインデックスパターンに変更が適用されることはありません。元のspaceにインデックスパターンを置いておきたくない場合、削除することもできます。コピー先のspaceにインデックスパターンがあるので、問題ありません。

##spaceに複数テナントを統合する##

Kibanaのユーザー同士を隔離する目的で複数のテナントを持ち、それぞれのElasticsearchインデックスでKibanaを使用していた場合は、[Export/Import]UIで1つのテナントに統合し、spaceによる"住み分け"を行うことができます。1つのテナントからすべての保存済みオブジェクトをエクスポートするには、[Management] > [Saved Objects]に進み、ヘッダーのチェックボックスをクリックして全オブジェクトを選択し、[Export]をクリックします。

Export all Saved Objects

次に、JSONの保存先をたずねる画面が表示されます。

エクスポート先のspaceがまだ作成されていない場合は、保存済みオブジェクトをエクスポートしてからエクスポート先となるKibanaのインスタンスに移動し、エクスポートするspaceを作成して選択します。[Management] > [Saved Objects]に進み、[Import]を選択して保存したJSONファイルを指定します。この操作で、選択した保存済みオブジェクトをspaceにインポートすることができます。

##spaceから別のspaceへ、ダッシュボードを移動する##

個別の保存済みオブジェクトを移動させる場合は、Kibanaの[Import]/[Export]UIを使用するだけでした。しかし、ダッシュボードと、その関連の可視化や保存済みの検索、インデックスパターンなどをすべて移動させたい場合、この方法は最適とは言えません。ダッシュボードを別のspaceに移動させる場合は、Dashboard Import/Export APIsを使用します。

###ダッシュボードのエクスポート###

ダッシュボードをエクスポートする場合、はじめにダッシュボードのIDを特定する必要があります。エクスポートするダッシュボードを開き、URLを確認します。URLの中で、/app/kibana#/dashboard/?の間にある識別子がIDです。以下のURLで、強調表示されている部分がダッシュボードIDです。

http://localhost:5601/s/marketing/app/kibana#/dashboard/<b>d203dd90-deac-11e8-869e-d73106bbd5ad</b>?_g=()

ダッシュボードのspaceについても、URLを使用して識別子を確認することができます。spaceの識別子は、URLの/s//app/kibana#dashboardの間にあります。URLに/s/が入っていない場合は、Defaultのspaceということになります。APIも含め、すべてのKibanaのURLのspace識別子は/s/{spaceID}という形式を用い、相互に区別しています。ただし、Defaultのspaceでは例外で、このようなプリフィックスが入りません。以下のURLで、強調表示されている部分がspaceの識別子です。

http://localhost:5601/s/<b>marketing</b>/app/kibana#/dashboard/d203dd90-deac-11e8-869e-d73106bbd5ad?_g=()

ダッシュボードのIDがわかったので、以下と類似のCURLコマンドを{spacePrefix}/api/kibana/dashboards/export?dashboard={dashboardID}に対して使用してGETリクエストを実行します。これでmarketingスペースからIDd203dd90-deac-11e8-869e-d73106bbd5adのダッシュボードをエクスポートし、ダッシュボードと依存するオブジェクトをexport.jsonファイルに保存できます。

curl -u elastic:changeme http://localhost:5601/s/marketing/api/kibana/dashboards/export?dashboard=d203dd90-deac-11e8-869e-d73106bbd5ad > export.json

同様に、次のCURLはDefaultのspaceからIDd203dd90-deac-11e8-869e-d73106bbd5adのダッシュボードをエクスポートし、export.jsonファイルに保存します。

curl -u elastic:changeme http://localhost:5601/api/kibana/dashboards/export?dashboard=d203dd90-deac-11e8-869e-d73106bbd5ad > export.json

###ダッシュボードをインポートする###

さて、最も難しい作業が無事に終わりました。これで新しいspaceにダッシュボードをインポートすることができます。まずインポート先のspaceのURLに含まれる識別子を特定し、URLに表示されるspaceプリフィックスを構築します。spaceセレクターを使用してダッシュボードの移動先となるspaceを選択し、URLをエクスポートの際と同じ要領で確認します。

これで、先ほど保存したexport.jsonを使用し、 <{spacePrefix}/api/kibana/dashboards/import に対するPOSTリクエストを実行する準備が整いました。次のCURLコマンドで、ダッシュボードを"sales"spaceにインポートできます。

curl -H “Content-Type: application/json” -H “kbn-xsrf: true” -u elastic:changeme http://localhost:5601/s/sales/api/kibana/dashboards/import --data-binary @export.json

同じ要領で、"Default"spaceにダッシュボードをインポートする場合は次のCURLコマンドを使用します。

curl -H “Content-Type: application/json” -H “kbn-xsrf: true” -u elastic:changeme http://localhost:5601/api/kibana/dashboards/import --data-binary @export.json

ダッシュボードのインポートが完了し、元のspaceにダッシュボードを保持する必要がないと感じる場合は、削除することができます。

##はじめましょう##

Kibanaのspaceは、ダッシュボードや可視化を整理したり、グループ化する際に非常に役立ちます。より多くのユーザーでKibanaを使用できるようにしたり、ワークフローを実装するなどさまざまな目的に使えます。お気に入りのspace活用法を見つけて、ぜひフォーラムで共有してください。