Adobe Analytics

Adobe Analytics: データフィードをGoogle Compute EngineのLinuxインスタンスにSFTP転送する

こんにちは、CTOの権です。
もはやWeb解析だけの時代は終わり、様々なデバイス・チャネルからの顧客データを集めて分析して最適化して行くというのをやろうとすると、やはり出てくるのがビッグデータの処理。

というわけで、今回からはAdobe AnalyticsやCRMなどからあらゆるデータをGoogle Cloud Platform上に集約して繋げて分析して、ディープラーニングして最適化して、自動的にセグメント分けして、などなどの施策を実施するための技術的なメモを連載して行こうかなと思ってます。

なぜGoogle Cloud Platformなのかというと、無料トライアルが12ヶ月あるのと、常時無料使用プランもあるので、クラウド初心者エンジニアでも試しやすいという点です。

まずは、Adobe Analyticsのデータフィードファイルを、Google Compute Engine上のLinuxVMインスタンスにSFTPで転送する事から始めてみます。

やるべき事は
1. Google Compute EngineでLinuxVMインスタンスを立てる。
2. VMにAdobe Analyticsのデータフィード受け取り用のLinuxユーザーを追加する
3. Adobe Analyticsのデータフィード配信設定を作成する
4. Adobeの公開鍵を.sshディレクトリに設置する
です。

Google Compute EngineでLinuxVMインスタンスを立てる

まずは受け皿となるGCEを用意します。
Google Cloud Platformをまだ使っていない場合は、まずは無料トライアルから始めましょう。

Google Cloud Platform無料トライアル
https://cloud.google.com/free/?hl=ja

GCP登録後、[Compute Engine] > [VMインスタンス] を開き、インスタンスを追加します。
常時無料プランの下記スペックで試します。

マシンタイプ: f1-micro
ゾーン: us-west1-a
ディスク: 標準の永続ディスク 30GB (CentOS7)
ファイアウォール: HTTP,HTTPSを許可
外部IP: 固定IP

固定IPだと、インスタンスを削除して未使用状態のまま保持してると課金されてしまうようですので、注意しましょう。

あと、GCPをコマンドラインで管理出来るCloud SDKをPCにインストールしておきます。
ローカルPCのターミナルから、VMにsshでログインしたりファイル転送する事が出来ます。

Cloud SDK
https://cloud.google.com/sdk/?hl=ja

Adobe Analyticsのデータフィード受け取り用のLinuxユーザーを追加する

VMにログインして、datafeedユーザーを追加します。

$ sudo useradd datafeed
$ sudo passwd datafeed #パスワードを設定

任意でデータフィードファイルアップロード用のディレクトリを作っておきます。
私はfilesというディレクトリを作りました。
また、.sshディレクトリも作成しておきます。
.sshディレクトリのパーミッションは700にします。

$ su - datafeed
Password: #パスワードを入力
$ mkdir files
$ mkdir .ssh
$ chmod 700 .ssh

Adobe Analyticsのデータフィード配信設定を作成する

データフィード設定の前に、VMインスタンスのIPアドレスを調べておきます。
Compute Engineの管理画面で見るか、またはCloud SDKのgcloudコマンドで調べます。

構文は、gcloud compute instances list [インスタンス名]です。

mac:~ $ gcloud compute instances list myvmtest
NAME      ZONE        MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
myvmtest  us-west1-a  f1-micro                   10.***.*.*   35.***.***.**  RUNNING

IPアドレスをメモしたらデータフィードの設定に進みます。

1. Adobe Analyticsにログインし、[管理者] > [データフィード]を開きます。
2. [+追加]ボタンを押して、データフィードを作成します。
3. データフィード設定を入力します。

■フィード情報
データフィード名: 任意の名前をつけます。
レポートスイート: データフィードを配信する対象RSを選択
メールアドレス: 配信完了や失敗の通知メールを受けとるメアドを入力
フィード間隔: 1時間または毎日を選びます。今回は単発で試すので[毎日]を選択。
遅延処理: 配信時間を意図的に遅らせたい場合は遅延時間を選びます。今回は[遅延なし]を選択。
開始日と終了日: データフィードの対象期間を選択。[連続フィード]を選ぶと、終了日なしでずっと配信され続けます。

今回は単発テストなので、開始日終了日を昨日(2017-05-17)にしました。

■宛先
タイプ: SFTP
ホスト: VMインスタンスのIPアドレス
パス: データフィードをアップロードするディレクトリ(ホームディレクトリからの相対パスで指定)
ユーザー名: さっきVMで作ったdatafeed用のユーザー名

ここに表示されている[RSA鍵をダウンロード]をクリックして、公開鍵をダウンロードしておきます。

■データ列の定義
エスケープ文字を削除: チェック入れる
列テンプレート: 選択しない。
圧縮形式: gzip
パッケージタイプ: 単一のファイル
マニフェスト: マニフェストファイル

今回はとりあえず全部のカラムを取り出すので、[すべてを追加]をクリックして、全カラムを選択します。

パッケージタイプはデフォルトの「複数ファイル」を選ぶとデータファイルが分割されてしまうので、「単一のファイル」を選んでおくと、全ページビューのデータがhit_data.tsvという一つのファイルにまとまります。
ただしトラフィックが膨大なレポートスイートだと、ファイルが大きすぎて大変なので、「複数のファイル」で良いです。
分割された場合、配信されたファイル名はマニフェストファイルに載っているので、それを見て処理をする事になります。

そしてここまでで入力したら、保存しないで公開鍵の設置に進みます。
[保存]はまだしません。
※さきに保存してしまうと、SFTP接続が失敗してエラーになります。

Adobeの公開鍵を.sshディレクトリに設置する

データフィード作成画面からダウンロードした公開鍵[private_sftp_key-2013-10.pub]をVMに転送します。

gcloud compute copy-filesコマンド または、 scpを使い慣れてるならgcloud beta compute scpコマンドで転送します。

mac:~ $ gcloud beta compute scp private_sftp_key-2013-10.pub myvmtest:~/ --zone us-west1-a

アップロードしたファイルを、datafeedユーザーの.sshディレクトリにauthorized_keysというファイル名で設置します。

mac:~ $ gcloud compute ssh myvmtest
$ sudo su
$ mv private_sftp_key-2013-10.pub /home/datafeed/.ssh/authorized_keys
$ cd /home/datafeed/.ssh/
$ chown datafeed:datafeed authorized_keys
$ chmod 600 authorized_keys

そしてsshd_configを修正して、sshdを再起動します。

$ vim /etc/sshd/sshd_config

下記の2行のコメントを外して有効化します。

RSAAuthentication yes
PubkeyAuthentication yes

そしてsshdの設定をテストをして、問題なければサービスを再起動

$ /usr/sbin/sshd -t
$ service sshd restart

それからデータフィード管理画面に戻って[保存]ボタンをクリックします。

しばらくするとデータフィード配信完了のメールが来て、指定したディレクトリにデータフィードファイルが配信されていればOKです。

$ ls files
exturedev_2017-05-17.tar.gz  exturedev_2017-05-17.txt

今回はAdobeのデータフィードファイルをGCEのVMインスタンスにSFTPでアップロードする方法について説明しました。
次回は、データフィードファイルを展開して、BigQueryに取り込んでクエリを実行する方法などについて書いてみようと思います。

続き: Adobe Analytics: データフィードをGoogle BigQueryのテーブルにロードする

関連記事

  1. Adobe Analytics

    Adobe Analytics: Webサイト内で発生したJavascriptエラーの内容をAdob…

    こんにちは、CTOの権です。今日は、Webサイト内で発生したJSエ…

  2. Adobe Analytics

    Adobe Analytics:セグメントの落とし穴:意図しないデータが混ざる①

    Adobe Analyticsの便利な機能のセグメント。便利なのですが…

  3. Adobe Analytics

    Adobe Analyticsと「どこどこJP」のAPIを連携する

    こんにちは、CTOの権です。弊社Webサイトでは「どこどこJP」を…

  4. Adobe Analytics

    Adobe Analytics: VisitorAPIでSafariでもクロスドメイン計測をする

    こんにちは、CTOの権です。今回はAdobe Analytic…

  5. Adobe Analytics

    Adobe Analytics:ワークスペース:セグメント比較機能の紹介

    Adobe Summitで発表されていたSegment IQ機能が実は…

  6. Adobe Analytics

    Adobe Analytics: カスタムリンク計測を1行で書く

    こんにちは、CTOの権です。Adobe Analytics の…

最近の記事

  1. Adobe Analytics: BigQueryにロードし…
  2. Adobe Analytics: データフィードをBigQu…
  3. Adobe Analytics: データフィードをGoogl…
  4. Adobe Analytics: データフィードをGoogl…
  5. Google Analytics: アプリSDKのclien…
  1. Adobe Analytics

    Adobe Analytics: VisitorAPIでSafariでもクロスド…
  2. Ad Hoc Analysis

    Adobe Analytics: Ad Hoc Analysisでセグメントの条…
  3. Adobe Target

    Adobe Target: スマホアプリ上でABテストをする
  4. Adobe Analytics

    Adobe Analytics: データフィードをGoogle BigQuery…
  5. Google Analytics

    Google Tag Manager上でGoogle Analyticsのcli…
PAGE TOP