IDCFクラウドとYahoo!ビッグデータインサイトでイベントデータを活用する方法(Event Webhook)

はじめに

先日、SendGridはIDCFクラウドとの提携を発表しましたが、今回はIDCFクラウドおよびYahoo!ビッグデータインサイト(以下、YBI)と組み合わせてSendGridのイベントデータを活用する方法についてご紹介します。YBIはIDCフロンティア様が提供するデータ分析プラットフォームです。

イベントデータとは

SendGridは、メール配信に関わる様々なイベント(メールの送信、バウンス、開封、クリック、配信停止、迷惑メール報告など)を通知するEvent Webhookという機能を提供しています。SendGridではイベントデータの保存期間は1週間なので、実際の運用ではEvent Webhookで通知されるイベントデータをどこかに保存する必要があります。

イベントデータの保存方法

本ブログでは、過去に様々なイベントデータの活用方法をご紹介してきました。

準備

今回ご紹介する方法を試すには、以下のサービスでアカウント作成が必要です。

最終的な構成

冒頭に掲載した構成で構築します。最終的にはYBIにイベントデータが格納されます。セットアップは図の右側から順に進めていきます。

セットアップ

Yahoo!ビッグデータインサイトの準備

YBIでは特にセットアップは必要ありません。ここで必要なのは、API Keyの確認のみです。YBIのダッシュボードにログインして、My ProfileでAPI Keyを確認します。API Keyの確認にはパスワードの入力が必要となります。後で説明しますが、このAPI KeyをFluentdに設定します。

YBIのAPI Keyを確認する

Fluentdのセットアップ

Fluentdはオープンソースのデータコレクターです。SendGridのイベントデータを受け、YBIにデータを転送します。FluentdはIDCFクラウドの仮想マシン上で実行します。今回は、CentOS 7.1(64bit)の仮想マシンを作成します。

IDCFクラウドで仮想マシンの作成

IPアドレスのファイアウォール設定とポートフォワード設定で、TCPポート8888番を仮想マシンに転送するよう設定します。このIPアドレスとポート番号は後でSendGrid側に設定するのでメモしておきます。

IDCFクラウドのファイアウォール設定

IDCFクラウドのポートフォワード設定

仮想マシンのコンソールにログインして、rubyの開発環境、fluentd、Treasure Dataプラグイン(fluent-plugin-td)をインストールします。YBIに対するデータの登録はTreasure Dataプラグインを利用して行います。

# yum install gcc ruby-devel.x86_64 -y
# gem install fluentd --no-ri --no-rdoc
# fluent-gem install fluent-plugin-td

fluentdの設定ファイルのひな形を作成して、設定ファイルを編集します。

# fluentd --setup ./fluent
# vi ./fluent/fluent.conf

設定ファイル(fluent.conf)の末尾に次の設定を追記します。

<match td.*.*>
    type tdlog
    endpoint ybi.jp-east.idcfcloud.com
    apikey <API_KEY>
    buffer_type file
    buffer_path /root/fluent
    use_ssl true
    auto_create_table
    flush_interval 5s
</match>

主なパラメータの意味は次の通りです。

  • <match td.*.*>
    「td」で始まるリクエストとマッチしたものをYBIにデータを転送します。
  • apikey
    <API_KEY>部分には、先ほどYBIのダッシュボードで確認したAPI Keyを設定します。
  • auto_create_table
    YBI側にデータベースやテーブルがない場合、自動的に作成します。非常に便利な機能です。

その他のパラメータについてはYBIのドキュメントを参照してください。設定ファイルを編集したら、fluentdを起動します。fluentdは標準設定で、http(ポート8888番)で待ち受けます。

# fluentd -c ./fluent/fluent.conf -vv

SendGridのEvent Notificationのセットアップ

最後に、SendGridのWebポータルでEvent Webhookの設定(ログインが必要)を行います。「HTTP POST URL」に次のように設定します。

http://xxx.xxx.xxx.xxx:8888/td.sendgrid.event

URLのIPアドレスとポート番号は、先ほどIDCFクラウドで確認したものを設定します。
パスの「td.sendgrid.event」部分は、次のように使用されます。

  • td:fluentdの<match>設定で一致するものが転送処理対象となります
  • sendgrid:YBI内でデータベース名として使用されます。任意の文字列に変更できます
  • event:YBI内でテーブル名として使用されます。任意の文字列に変更できます

SendGridのEvent Notification設定

設定を保存したら、「Test Your Integration」ボタンを選択してサンプルイベントを送信します。

Event Webhookのテスト

設定がうまくいっていれば、YBIにデータベースおよびテーブルが作成され、サンプルのイベントが保存されます。

確認

再びYBIのダッシュボードを確認します。Databaseの配下に「sendgrid」というデータベース、「event」というテーブルが作成されます。テーブルを選択すると、先ほど送信したサンプルのイベントを確認することができます。

データの確認

さいごに

いかがでしたか?YBIのようなデータベース分析プラットフォームを利用すると、簡単な設定のみでSendGridのイベントデータを保存できます。保存したイベントデータは、ユーザのエンゲージメント分析、バウンスのトラッキング、パフォーマンス分析など、様々な用途に活用できます。是非お試しください!