Event Monitoring Wave アプリケーションを使ってみた

はじめに

Summer'16正式リリースされましたが、有償オプションであるために、なかなか使う機会がない「Event Monitoring」と、イベントログの可視化ツール「Event Monitoring Wave アプリケーション」ですが、実際に使ってみたので詳細をレポートします。

Event MonitoringとEvent Monitoring Wave アプリケーション

  • Event Monitoring

「Event Monitoring」は、ユーザーのレポートのエクスポートや、ページの閲覧、ドキュメントのダウンロードなど、広範囲な操作のログをモニタリングすることができ、取得できるイベントタイプは下記34種類(Spring'17)です。

EventMonitoring13.png

  • Event Monitoring Wave アプリケーション

「Event Monitoring Wave アプリケーション」は、イベントモニタリングで取得したログを、可視化・分析するツールで、ライセンスは、「Event Monitoring」の一部とされ「Analytics Cloud」のライセンスが無くても使用可能です。

特徴は下記の通りです。

  1. イベント(ユーザーの操作、APIアクセス等)はEventLogFilesオブジェクトに格納される。
  2. EventLogFilesオブジェクトに格納されるのは、イベント発生の翌日のオフピーク時(Salesforceサーバーの負荷が低い時刻)
  3. EventLogFilesオブジェクトのレコードからEvent Monitoring Waveデータセットへのコピーは1日1回自動実行される(実行時間は設定で変更可能、停止させておくことも可能)
  4. データセットに保持出来る期間は最大30日間
  5. データセットに保持出来るデータは最大5000万件(オプションで1億件まで拡張可能)
  6. Wave Analyticsのアプリケーションは1つのみ定義可能
  7. 38個のデータセットは固定で変更不可能
  8. ダッシュボードはカスタマイズ、新規作成可能

EventMonitoring1.png

ここで注意が必要なのは、イベント発生から、EventLogFilesオブジェクトに格納されるまで最大24時間、EventLogFilesオブジェクトに格納されてから、Waveのデータセットに入るまで最大24時間かかることです。
リアルタイムに監視するには向いていないことが分かります。

Event Monitoring Wave アプリケーションの設定

設定は下記の手順で行います。
詳細な手順は下記ヘルプページを参照してください。
https://help.salesforce.com/articleView?id=bi_app_admin_wave.htm

  1. 「Event Monitoring Wave アプリケーションとのインテグレーション」を有効にし、権限セットライセンスを割り当て、権限セットを作成して割り当てる

    Salesforce社とEvent Monitoringを契約するとライセンスが有効になりますので、設定画面から「Event Monitoring Wave アプリケーションとのインテグレーション」を有効化し、権限セットライセンスを割り当て、権限セットを割り当てます。


  2. Event Monitoring Wave アプリケーションの作成

    「Event Monitoring Wave アプリケーションとのインテグレーション」を有効化すると、右上のアプリケーション「Wave Anarytics」というアプリケーションが出てきますが、開いても何も出てきません。
    「アプリケーション作成」からウィザード(下記イメージ)に従ってWaveアプリケーションを作成すると、ダッシュボードやデータセットが自動的に作成されます。

    下記イメージのようダッシュボードが作成されます。
    これがいわゆる「事前作成済みダッシュボード」です。

    事前作成済みダッシュボードでは下記のことが確認できます。

  3. Event Monitoring Wave 日次データフローをスケジュール

   データフローの時刻設定は1日1回、任意の時刻に実行するようにスケジュール可能です。


EventMonitoring6.png

Event Monioring Wave アプリケーション画面

実際のWaveアプリ画面は下記イメージのようになります。
これは、Chatterに「Koala.jpg」という画像ファイルを添付して、プレビューし、ダウンロードしたときの「File」ログです。

EventMonitoring8.pngEventMonitoring7.png

タイムスタンプはGMTで格納されており、ユーザー名、ユーザープロファイル、ファイル名、ファイル種別、操作(保存、プレビュー、ダウンロード)が記録されているのが分かります。

EventLogFiles オブジェクト

さて、Waveでの表示は上記のようになりますが、EventLogFilesオブジェクトの中身はどうなっているのでしょうか?
Dataloaderでダウンロードしてみました。

EventMonitoring9.png

イベントタイプ毎に1レコードとなっていて、ログファイルの形式がCSVであることが分かります。
一番右側のLOGFILEが、イベントタイプ毎のイベント内容が集約されているCSVファイルの実体ですが、Base64でエンコードされているため、直接見ることができません。

Event Log File の可視化

上記のように、EvenLogFileオブジェクトはイベントタイプ毎に集約されてCSV化されています。
これをイベント毎に見る方法として、「Salesforce Event Log Browser」というツールが用意されています。
下記URLから、システム管理者アカウントでログインすると、日付を指定してイベントタイプ毎のCSVをダウンロードすることが可能です。

https://salesforce-elf.herokuapp.com/

下記イメージは「Salesforce Event Log Browser」で検索した結果画面です。

EventMonitoring10.png左側のActionのアイコンで、CSVファイルをダウンロードできます。
このツールでダウンロードしたCSVを見てみます。
これは、上記の「koala.jpg」をChatterに画像ファイル添付、プレビュー、ダウンロードしたときのログです。
「Event Monitoring Wave アプリケーション」の最下部に表示されているRaw log data と同内容となります。

EventMonitoring11.pngまとめ

「Event Monitoring」及び、「Event Monitoring Wave アプリケーション」の要点は下記のようになります。

  • ログはユーザーの操作や、APIでのアクセス等、かなり細かいところまで記録される
  • EventLogFilesオブジェクト、Waveのデータセットに格納されるまでの時間を考えるとリアルタイム性が無い
  • ログファイルを見るにはツールが必要
  • ユーザーの異常操作が発生したときのアラート機能が無い

実際に、システム管理者として、特定のデータのダウンロードや、操作内容を追跡するには、ログファイルの見方や、Waveダッシュボードの使い方などの運用スキルが必要となります。
ログファイルを外部に取り出し、解析し、アラートを出すようなインテグレーションをSOAP/RestAPIを使って開発することで、運用の生産性を上げることが可能となります。