みなさんこんにちは。配信/インフラチームの佐々木と申します。adstirの配信サーバの開発とインフラを担当しております。
今回はAmazon Elasticsearch ServiceとKibanaを利用したデータの可視化について書きたいと思います。
ElasticsearchとKibanaについて
両方とも有名なミドルウェアなので詳細な説明は省きますが、端的に言うとElasticsearchは全文検索エンジンでKibanaがそれを可視化するためのWEB-GUI(中身はNode.js)になります。
ポイントとしてはElasticsearchもKibanaもオープンソースで公開されているのですが、両方ともAWSのマネージドサービスとしても提供されているため、構築と運用の負担が非常に軽いという点があります。(もちろんEC2を利用する事もできますし、AWS以外の環境でも利用は可能です。) 開発元が同一なため親和性が高く、今後はバージョンも統一されていくようです(現在は5.x) Kibanaは以前のバージョンではダッシュボードは黒をベースとしたUIでしたが、このバージョンは非常にカラフルなデザインになっております。
ちなみに余談ですが正しくは"ElasticSearch"ではなく"Elasticsearch"となります。ですがちょっと長いのでこのブログではESと略させていただきます。
データのフロー
ESはWEB-APIとして動作するのですが、Fluentdでプラグインが用意されているためそれを利用するケースが多いです。 直接POSTしても良いのですが、Fluentdを利用した方が簡単かつフレキシブルに使えます。流れとしては
Fluentd -> ES -> Kibana
となりますが、データをS3に保存する場合は以下のような流れが良さそうです。
Fluentd -> S3 -> Lambda -> ES -> Kibana
今回は前者の手順を記載いたします。
構築手順
1. AmazonESとKibanaのセットアップ
セットアップ自体は非常に簡単で、ものの数分で終わります。(作成の待ち時間がそれなりにありますが)AWSさまさまと言ったところです。
ESのダッシュボードでCreate a new domainをクリックします。
Domain名とバージョンを指定しNextをクリックします。
インスタンス数やスペックなどを指定しNextをクリックします。
最後にアクセスポリシーを設定し、Confirm and createをクリックします。
10分程度待てば作成が完了します。同時にKibanaも使える状態になっています。
2. Fluentd設定
下準備としてはFluentdとfluent-plugin-aws-elasticsearch-serviceをインストールしている必要があります。送信先にESのURLを指定します。
1 2 3 4 5 6 7 |
### 略 type "aws-elasticsearch-service" ### 略 <endpoint> url #(設定したESのURL) region #(ESが存在するリージョン) </endpoint> |
3. ES設定
簡単な使い方をするのであれば設定は特に必要ありません。データがインサートされればそのまま使えるようになります。
4.Kibana設定
まずIndexの設定をする必要があります。ManagementでIndex Patternsをクリックします。
作成したインデックスのパターンを入力し、Createをクリックします。
登録したインデックスのデータは、Discoverから確認できます。この例ではscore_Xというランダム数値のデータを使用しています。
次にインデックスからグラフを作成します。今回は折れ線グラフを作成しますので、VisualizeでLine chartを選択します。
Y-Axisに対象のデータを登録し、X-AxisでDate Histogramを選択すれば時系列の折れ線グラフが出来ます。設定したらSaveをクリックします。
あとはDashboardで作成したグラフを貼り付けます。KibanaはDashboardが自由にカスタマイズ出来、例えばWEBサーバのレイテンシを確認しながら生のログを見るといった使い方が出来ます。
以上が構築手順になります。
最後に
弊社ではアドテクエンジニアを募集しております。広告技術に興味がある方・経験がある方のご応募をお待ちしております。また広告以外の部署やエンジニア以外の職種でも募集しておりますので、興味がある方はぜひご応募くだされば幸いです。
弊社コーポレートサイト
http://united.jp/recruit/information/
Wantedly
https://www.wantedly.com/companies/united/projects/