メニュー
Amazon Elasticsearch Service
開発者ガイド (API バージョン 2015-01-01)

Kibana と Logstash

ここでは、Amazon ES で Kibana と Logstash を使用するための考慮事項について説明します。

Kibana

Kibana は Elasticsearch で稼働するように設計された、ポピュラーなオープンソースの可視化ツールです。Amazon Elasticsearch Service (Amazon ES) は、各 Amazon ES ドメインに、デフォルトの Kibana インストールを提供しています。Kibana へのリンクは、Amazon ES コンソールのドメインダッシュボードにあります。URL は、https://domain.region.es.amazonaws.com/_plugin/kibana/ です。このデフォルトの Kibana インストールでは、クエリが 60 秒でタイムアウトになります。

Kibana を使用してデータを可視化する方法については、Kibana ユーザーガイド」を参照してください。

以下のセクションでは、いくつかの一般的な Kibana ユースケースを取り上げます。

Kibana へのアクセスのコントロール

Kibana では、IAM ユーザーとロールがネイティブにサポートされていませんが、Amazon ES には Kibana へのアクセスを制御するためのいくつかのソリューションが用意されています。

ドメイン設定 アクセス制御のオプション
パブリックアクセス
VPC アクセス

プロキシを使用した Kibana から Amazon ES へのアクセス

注記

このプロセスは、ドメインでパブリックアクセスが使用されており、Kibana の Amazon Cognito 認証 を使用しない場合にのみ適用されます。「Kibana へのアクセスのコントロール」を参照してください。

Kibana は JavaScript アプリケーションであるため、リクエストの送信元はユーザーの IP アドレスです。IP ベースのアクセスコントロールは、膨大な数の IP アドレスをホワイトリストに登録する必要があるため、各ユーザーに Kibana へのアクセスを提供する方法として実用的とは言えません。1 つの回避策は、Kibana と Amazon ES の間にプロキシサーバーを配置することです。これにより、IP ベースのアクセスポリシーを追加し、唯一の IP アドレス (プロキシの IP アドレス) からのリクエストを許可できます。この設定を以下の図に示します。

  1. これはお客様の Amazon ES ドメインです。IAM は、このドメインへの承認済みアクセスを提供します。追加の IP ベースのアクセスポリシーは、プロキシサーバーへのアクセスを提供します。

  2. これは、Amazon EC2 インスタンスで実行されているプロキシサーバーです。

  3. 他のアプリケーションは、署名バージョン 4 の署名プロセスを使用して認証済みのリクエストを Amazon ES に送信できます。

  4. Kibana クライアントはプロキシを介して Amazon ES ドメインに接続します。

この種の設定を有効にするには、ロールと IP アドレスを指定するリソースベースのポリシーが必要です。ポリシー例を次に示します。

{ "Version": "2012-10-17", "Statement": [ { "Resource": "arn:aws:es:us-west-2:111111111111:domain/recipes1/analytics", "Principal": { "AWS": "arn:aws:iam::111111111111:role/allowedrole1" }, "Action": [ "es:ESHttpGet" ], "Effect": "Allow" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Condition": { "IpAddress": { "aws:SourceIp": [ "123.456.789.123" ] } }, "Resource": "arn:aws:es:us-west-2:111111111111:domain/recipes1/analytics" } ] }

プロキシサーバーを実行する EC2 インスタンスを Elastic IP アドレスを使用して設定することをお勧めします。これにより、必要に応じてインスタンスを置き換え、各インスタンスに同じパブリック IP アドレスをアタッチできます。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「Elastic IP アドレス」を参照してください。

プロキシサーバーおよび Kibana の Amazon Cognito 認証 を使用している場合、redirect_mismatch エラーを回避するため、Kibana と Amazon Cognito の設定の追加が必要になることがあります。次の nginx.conf の例を参照してください。

server { listen 443; location /login { proxy_pass https://$cognito_host/login; proxy_cookie_domain $cognito_host $proxy_host; proxy_redirect https://$kibana_host https://$proxy_host; } location / { proxy_pass https://$kibana_host; proxy_redirect https://$cognito_host https://proxy_host; proxy_cookie_domain $kibana_host $proxy_host; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } } $cognito_host=your-cognito-domain-name.auth.us-west-2.amazoncognito.com $kibana_host=search-your-es-domain.us-west-2.es.amazonaws.com $proxy_host=your-proxy-server.us-west-2.compute.amazonaws.com

WMS マップサーバーを使用するように Kibana を設定する

ライセンス制限により、Elasticsearch 5.x 以上を使用する Amazon ES ドメインでのデフォルトの Kibana インストールには、タイルマップの可視化に対応するマップサーバーが含まれていません。Web Map Service (WMS) マップサーバーを使用できるように Kibana を設定するには、以下の手順を使用します。

WMS マップサーバーを使用できるように Kibana を設定するには:

  1. Kibana を開きます。Kibana へのリンクは、https://console.aws.amazon.com/es/ のドメイン概要にあります。

  2. [Management] を選択します。

  3. [Advanced Settings] を選択します。

  4. [visualization:tileMap:WMSdefaults] を見つけ、[edit] ボタンを選択してデフォルト値を変更します。

  5. enabledtrue に変更し、url を有効な WMS マップサーバーの URL に変更します。

  6. (オプション) [visualization:tileMap:WMSdefaults] を見つけ、[edit] ボタンを選択してデフォルト値を変更します。

  7. (オプション) "layers": "0" を変更し、表示するマップレイヤーのカンマ区切りリストにします。レイヤーは、マップサービスによって異なります。多くの場合は、デフォルト値の 0 が適切です。

  8. [save] ボタンを選択します。

新しいデフォルト値を可視化に適用するには、Kibana の再ロードが必要になることがあります。

注記

マップサービスは多くの場合、ライセンス料や制限事項を伴います。マップサーバーを指定する際には、このような点を考慮する必要があります。テストを行うには、アメリカ地質調査所のマップサービスが便利です。

Kibana ローカルサーバーを Amazon ES に接続する

独自の Kibana インスタンスを設定するために時間をかけた場合は、Amazon ES から提供されるデフォルトの Kibana の代わりに (または追加で) 独自のインスタンスを使用することもできます。

ローカルの Kibana サーバーを Amazon ES に接続するには:

  • config/kibana.yml に以下の変更を加えます。

    kibana_index: ".kibana-5" elasticsearch_url: "http://elasticsearch_domain_endpoint:80"

http プレフィックスを使用して、ポート 80 を明示的に使用する必要があります。

Logstash プラグインを使用した、データの一括読み込み

Logstash は、bulk API を使用して S3 プラグインでデータを Amazon ES ドメインにアップロードする場合に便利です。サービスは、Elasticsearch が提供する、その他の標準 Logstash 入力のプラグインをすべてサポートします。Amazon ES では、2 つの Logstash 出力プラグイン (標準の Elasticsearch プラグイン、Logstash イベントに署名して Amazon ES にエクスポートする logstash-output-amazon-es プラグイン) がサポートされています。

Amazon ES とのやりとりを有効にするには、Logstash のローカルインスタンスをインストールして、Logstash 構成ファイルに次の変更を加える必要があります。

設定フィールド 入力 | 出力プラグイン 説明
bucket Input Amazon ES ドメインに読み込むデータを格納している Amazon S3 バケットを指定します。このサービスエンドポイントは、Amazon Elasticsearch Service コンソールダッシュボードにあります。
region Input Amazon S3 バケットが存在する AWS リージョンを指定します。
hosts 出力 ターゲット Amazon ES ドメイン用にサービスエンドポイントを指定します。
ssl 出力 Amazon ES への接続に SSL を使用するかどうかを指定します。

この例では、以下を行うために Logstash を設定しています。

  • 出力プラグインを Amazon ES サービスエンドポイントに指定する

  • 入力プラグインを S3 の wikipedia-stats-log バケットに指定する

  • SSL を使用して Amazon ES に接続する

input{ s3 { bucket => "wikipedia-stats-log" access_key_id => "lizards" secret_access_key => "lollipops" region => "us-east-1" } } output{ elasticsearch { hosts => "search-logs-demo0-cpxczkdpi4bkb4c44g3csyln5a.us-east-1.es.example.com" ssl => true } }

注記

前述の例のサービスリクエストには、署名する必要があります。リクエストの署名については、「Amazon ES リクエストへの署名」を参照してください。署名して Amazon ES に Logstash イベントをエクスポートするには、logstash-output-amazon-es 出力プラグインを使用します。手順については、「README」を参照してください。