KibanaとAmazon Elasticsearch Serviceの連携方法について
はじめに
Kibanaはデータ集約と可視化についてのオープンソースツールです。Amazon Elasticsearch ServiceとKibanaを利用すると、リアルタイムのデータ検索や、可視化、分析、インサイトを行うことができます。本記事では、まずAmazon Elasticsearch ServiceとKibanaについて紹介し、その後、Amazon Elasticsearch Serviceにあるチュートリアルを基にこれらの連携について紹介します。
Amazon Elasticsearch Service
Amazon Elasticsearch Serviceは、AWSクラウドで Elasticsearch を大規模かつ簡単にデプロイ、保護、実行するフルマネージド型サービスです。Amazon Elasticsearch Serviceでは、オープンソースの Elasticsearch APIやフルマネージド型としてのKibana、Logstashとその他のAWSサービスとの統合、組み込みのアラート、SQLクエリをサポートしています。
Amazon Elasticsearch Serviceの利点を以下に示します。
- 簡単な管理 - ハードウェアプロビジョニングや、ソフトウェアのインストールとパッチ適用、障害復旧、バックアップ、モニタリングを含む、管理タスクを簡素化してくれます。また、Amazon Elasticsearch Serviceがサポートしている組み込みのイベントモニタリングとアラートを利用すると、データの変更に関する通知を受け取り、問題に事前に対処することができます。
- スケーラビリティ - Amazon Elasticsearch Serviceでは、1つのクラスターにつき、最大3PBのデータを保存することができます。また、APIコールを1回実行する、もしくはAWSコンソールで数回のクリックを行うだけでクラスターのスケールアップ / ダウンが可能です。
- 可用性 - Amazon Elasticsearch Serviceの設計では、マルチ アプリケーションゾーン(AZ)配置を採用しています。これにより、同じリージョン内の3つのAZ間でデータをレプリケートできます。
- セキュリティ - Amazon Elasticsearch Serviceでは、Amazon VPCや、AWS KMS、Amazon Cognito、AWS IAMが利用できます。Amazon VPCでは、ネットワークの隔離ができます。AWS KMSでは、データの暗号化やデジタル署名に使用するキーを簡単に作成できるため、保存時または転送中のデータを暗号化することができます。Amazon CognitoおよびAWS IAMでは、Amazon CognitoとAWS IAMポリシーによる認証とアクセスコントロールの管理ができます。また、 Amazon Elasticsearch Serviceは、HIPAAに適合しており、PCI DSS、SOC、ISO、FedRamp標準に準拠しています。
- コスト効率性 - Amazon Elasticsearch Serviceでは、実際に消費したリソースに対してのみ料金が発生します。料金システムは2つあります。一方は、前払いや長期契約がないオンデマンド料金で、もう一方は、1年または3年の長期契約によるコスト削減が可能なリザーブドインスタンス料金です。
Kibana
Kibanaは、Elasticsearch と緊密に統合された、オープンソースのデータの集約および可視化ツールです。主なユースケースとしては以下のものが挙げられます。
- ログと時系列の分析
- インフラメトリックとコンテナのモニタリング
- アプリケーションのモニタリング
- 地理空間データ分析と可視化
- セキュリティ分析
- オペレーショナルインテリジェンス
Kibanaの利点を以下に示します。
- インタラクティブチャート - 大量のログデータをインタラクティブにナビゲートできる、直感的なチャートとレポートが提供されます。特定のデータのサブセットの拡大または縮小や、レポートをドリルダウンしてデータから実用的なインサイトを抽出するといったことができます。
- マッピング - Kibanaに備わっている地理空間機能では、データ上に地理情報をシームレスに重ねることができる上に、結果をマップ上に可視化することができます。
- 構築済みの集計とフィルター - Kibanaの構築済みの集計とフィルターを使用することで、ヒストグラムや上位N件のクエリ、トレンドなどのさまざまな分析を簡単に実行できます。
- ダッシュボード - ダッシュボードとレポートを設定し、他のユーザーと共有するという作業が簡単にできます。ダッシュボードでは、各種のチャートやグラフ、メトリック、検索、マップを組み合わせて、1つのウィンドウに表示できます。
Kibanaは無料で利用することができ、Amazon Elasticsearch Serviceでは、フルマネージド型サービスとしてドメインと共に自動的にデプロイされ、クラスターを管理するための作業が自動的に行われます。
Amazon Elasticsearch ServiceとKibanaの連携
ここでは、Amazon Elasticsearch Service のチュートリアルにおけるAmazon Elasticsearch ServiceとKibanaを利用したカスタマーサポートコールの可視化について紹介します。
問題の想定
カスタマーサポートコールの分析における手動のワークフローは、以下のようになります。
- 従業員が通話記録を聴く
- 各問合せの件名をメモする
- 顧客とのやり取りが肯定的 / 否定的の判断をする
このプロセスは、ビジネスのように多くの問い合わせを把握する必要がある場合は、大きな時間的リソースと労力を要します。これに、完全なトランスクリプトの作成の作業を追加すると、作業量は膨大となります。
解決手段
Amazon Elasticsearch ServiceとKibana、Amazon S3、Amazon Transcribe、Amazon Comprehendを利用すると、わずかなコード量で上記のプロセスを自動化できます。具体的には、次のことプロセスが自動化できます。
]
- 問い合わせの完全なトランスクリプトを作成する
- トランスクリプトからキーワードと問い合わせ内容の全体的な感情(肯定的 / 否定的 / 中立 / 混在)を取得する
- データ検索と可視化を行う
※これには、各々のAWSサービスを使用することで、合計2USD未満の料金が発生します。
プロセスの自動化を行う手順
こちらのチュートリアルでは、次の手順で進められます。ただし、多くの通話記録が手元にない場合を想定したデータの追加については、割愛します。
1. 事前準備
このチュートリアルを始める前に、次の2つを作成しておく必要があります。
- Amazon S3バケット
- Amazon Elasticsearch Serviceドメイン
2. サンプルコードのコピー
このチュートリアルには、サンプルコードが用意されており、それを「call-center.py」という新しいファイルに貼り付けます。「call-center.py」と同様のディレクトリにMP3ファイルを配置し、コードを実行します。
コード中には、次の内容を実行するものが書かれています。
- MP3の音声ファイルをAmazon S3バケットにアップロードする
- 音声ファイルのURLをAmazon Transcribeに送信し、書き起こしジョブの完了を待機する
- 書き起こしジョブの完了後、トランスクリプトを抽出し、5000文字に切り捨て、キーワードと感情の分析のためにAmazon Comprehendへ送信する
- 完全なトランスクリプトやキーワード、感情、現在のタイムスタンプをJSONドキュメントに追加し、そのインデックスをAmazon Elasticsearch Serviceに作成する
3. データの分析と可視化
Amazon Elasticsearch Serviceに配置したデータの可視化を行うために、Kibanaに移動します。インデックスパターンを使用して分析対象を絞り込みやタイムフィルタフィールドといった、各種設定を行った後、可視化の作成が可能となります。そこで、3つのグラフを作成します。
- 感情別の割合を示す円グラフ
- 種類別の数を示す水平棒グラフ
- 日付別の数を示す垂直棒グラフ
これら3つの可視化したグラフは、Kibanaのダッシュボードに追加することができます。
以上の手順が完了した方は、不要な料金が発生しないようにAmazon S3バケットとAmazon Elasticsearch Serviceドメインの削除をおすすめします。
まとめ
本記事では、まずAmazon Elasticsearch Serviceの概要や利点、Kibanaの概要やユースケース、利点を紹介しました。その後、Amazon Elasticsearch Serviceのカスタマーサポートコールの可視化のチュートリアルを基に、Amazon Elasticsearch ServiceとKibanaの連携方法を紹介しました。Kibanaによるデータの可視化は、直感的にわかるGUIで行うことができます。ぜひ、データ分析にAmazon Elasticsearch ServiceとKibanaの利用を検討してみてください。