リアルタイムイベントモニタリングを設定する

学習の目的

この単元を完了すると、次のことができるようになります。

  • イベントマネージャを使用してリアルタイムイベントモニタリングを設定する。
  • プロファイルと権限セットを使用してリアルタイムイベントモニタリングへのユーザアクセスを設定する。
  • イベントモニタリング固有のプラットフォームイベントに登録する。
  • 組織でのリアルタイムイベントの一般的な使用事例について説明する。
  • Streaming Monitor アプリケーションを使用して、リアルタイムイベントを使用や表示する方法を挙げる。

このモジュールの課題では Trailhead Playground に付属するデータを使用するため、このモジュール用の新しい Trailhead Playground を作成してください。次の手順に従って、Trailhead Playground を作成します。

Trailhead Playground のユーザ名とパスワードを取得する

Trailhead Playground を開くところから始めましょう。このページの一番下までスクロールして、[起動] をクリックします。組織に [ログイン情報を取得する] というタブが表示されている場合は、以下の手順に従います。 

表示されていない場合は、アプリケーションランチャー (アプリケーションランチャー) で、[Playground Starter] をクリックして手順に従います。Playground Starter アプリケーションが表示されない場合は、Trailhead ヘルプの「Trailhead Playground のユーザ名とパスワードの調べ方」を参照してください。

  1. [ログイン情報を取得する] タブをクリックして、ユーザ名をメモします。
  2. [パスワードをリセットする] をクリックします。ユーザ名に関連付けられているアドレスにメールが送信されます。
  3. メール内のリンクをクリックします。

新しいパスワードを入力し、確認して、[パスワードの変更] をクリックします。

リアルタイムイベントモニタリングを設定する

まず [設定] に移動して、[クイック検索] ボックスにイベントマネージャと入力します。Enterprise 環境と Unlimited 環境ではデフォルトで LogoutEvent プラットフォームイベントオブジェクトにアクセスできますが、残りのイベントには Shield: Event Monitoring にアクセスするためのライセンスが必要です。アクセスできないが試用したい場合は、Developer Edition 組織でリアルタイムイベントを有効にできます。Developer Edition 組織に Event Monitoring アドオンサブスクリプションがある場合は、リアルタイムイベントモニタリングが搭載されています。Trailhead Playground 組織でもアクセスできます。イベントを有効にするには、使用するイベントに移動して、ストリーミングまたはストレージを有効にします。 

[設定] の [イベントマネージャ] に、イベントとその名前、登録チャネル、種別、説明、そしてイベントがデータのストリーミング、データの保存、その両方のどれに該当するかが表示されています。

リアルタイムイベントモニタリングへのアクセスを有効にする

リアルタイムイベントモニタリングへのユーザアクセス権は、プロファイルと権限セットで設定できます。必要なユーザ権限は次のとおりです。

  • イベントを参照する: 「リアルタイムイベントモニタリングデータの表示」
  • トランザクションセキュリティポリシーを作成、編集、管理する: 「アプリケーションのカスタマイズ」
メモ

メモ

Trailhead Playground ではリアルタイムイベントモニタリングへのアクセスがすでに有効になっています。ただし、Salesforce 組織でリアルタイムイベントモニタリングへのユーザアクセスを設定する場合は、次の手順を実行します。

ユーザアクセスを設定する手順は、次のとおりです。

1.[設定] から、次のいずれかの手順を実行します。

    • [クイック検索] ボックスに権限セットと入力し、[権限セット] を選択します。
    • [クイック検索] ボックスにプロファイルと入力し、[プロファイル] を選択します。

2.権限セットまたはプロファイルを選択します。

3.権限セットとプロファイルのどちらを使用するかに応じて、次のいずれかの手順を実行します。

    • 権限セットまたは拡張プロファイルユーザインターフェースで、権限を選択します。[設定の検索] ダイアログボックスに、リアルタイムイベントモニタリングデータの表示と入力します。[編集] をクリックし、オプションを選択して、[保存] をクリックします。「アプリケーションのカスタマイズ」権限についてもこの手順を繰り返します。
    • 元のプロファイルユーザインターフェースで、プロファイル名を選択し、[編集] をクリックします。トランザクションセキュリティポリシーを作成する予定の場合は、[リアルタイムイベントモニタリングを表示][アプリケーションのカスタマイズ] を選択します。[保存] をクリックします。

リアルタイムイベントモニタリングを有効にするほか、リアルタイムイベントオブジェクトに対するユーザ権限も設定します。リアルタイムイベントモニタリングオブジェクトに機密データが含まれていることがあります。

イベントモニタリング固有のプラットフォームイベントに登録する

リアルタイムイベントモニタリングは、通常はログに記録される一部のイベントを取得し、プラットフォームイベントを使用してストリーミングします。つまり、登録者であれば、プラットフォームイベントの場合と同じ方法でイベントを使用できます。ただし、プラットフォームイベントとは異なり、すべてのリアルタイムイベントがトリガや宣言型ツールで登録されるわけではありません

リアルタイムイベントモニタリングを使用する場合は、Salesforce によって公開される標準イベントに登録して組織のアクティビティを監視できます。このデータには、ストリーミング API クライアントを使用して任意の外部データシステムから登録できます。

データは、公開/登録モデルを使用してストリーミングされます。Salesforce がストリーミングデータをイベント登録チャネルに公開し、使用する側のアプリケーションがそのイベントチャネルに対する登録またはリスンによってほぼリアルタイムにデータを取得します。ストリーミングイベントは最大 3 日間保持されます。リアルタイムイベントモニタリングのストリーミングイベントは、プラットフォームイベントの配信割り当てにカウントされません。システム保護制限が適用される場合があります。

メモ

メモ

過去 3 日以内のイベントデータをより効率よく取得および処理するには、ストリームの過去のイベントに登録するのではなく、Big Object からイベントを照会することをお勧めします。

EMP コネクタを使用して登録する

では、EMP コネクタを使用してプラットフォームイベントに登録する 1 つの方法を見てみましょう。

メモ

メモ

EMP コネクタは、無料のオープンソースのコミュニティサポートツールです。Salesforce は、CometD を使用してイベントを登録する方法の例としてこのツールを提供しています。独自の機能強化でこの EMP コネクタプロジェクトに貢献するには、https://github.com/forcedotcom/EMP-Connector のリポジトリにプル要求を送信してください。

前提条件

ストリーミングのリアルタイムイベントを有効にする

1.ストリーミングのリアルタイムイベントである ReportEventStream を有効にします。

  1. Playground の [設定] で、[クイック検索] ボックスにイベントマネージャと入力し、[イベントマネージャ] を選択します。
  2. [レポートイベント] で、ドロップダウンから [ストリーミングを有効化][ストレージを有効化] を選択します。

2.EMP コネクタプロジェクトファイルをダウンロードするために、ターミナルを開きます。

  1. Windows の場合は、ホーム画面の下部の [スタート] ボタンの横にある検索ボックスに CMD と入力します。
  2. Mac の場合は、[Command] ボタンとスペースバーを同時に押して、画面に検索バーを開きます。そして、ターミナルと入力してターミナルを検索します。左側のサイドバーの [ターミナル] をダブルクリックして、Mac のターミナルを開きます。

3.ターミナルで、次のコマンドを使用して GitHub のリポジトリをコピーします。

  1. git clone https://github.com/forcedotcom/EMP-Connector

4.Visual Studio Code で、[ファイル] | [フォルダを開く] をクリックします。

5.コピーした EMP コネクタのフォルダを選択します。

6.ブラウザの[Java Extension Pack] ページに移動します。

7.[インストール] をクリックします。

8.[Open Visual Studio Code (Visual Studio Code を開く)] をクリックします。

9.[インストール] をクリックします。

Visual Studio Code の [Java Extension Pack] ページ

10.[実行] | [構成を開く] をクリックします。

11.[Java] をクリックします。

12.Java 言語サーバを標準モードで実行するよう求めるプロンプトが表示されたら、[はい] を選択します。launch.json という新しいファイルが開きます。

13.launch.json で、"mainClass": "com.salesforce.emp.connector.example.LoginExample" という行と、この行の下の "projectName": "emp-connector" という行を見つけます。

14.カンマを追加して Enter キーを押し、新しい行に "args": "username password /event/ReportEventStream" というテキストをコピーします。

Visual Studio Code Java Extension Pack を表示するコードブロックで、“args”: “username password /event/ReportEventStream” が強調表示されています。

15.usernamepassword を各自の Playground ログイン情報に置き換えます。

メモ

メモ

一部のオペレーティングシステムでは、特定の文字が特別な機能と解釈されます。たとえば、macOS システムと Unix ベースのシステムでは、!、\、$ が特殊文字に該当します。パスワードに特殊文字が含まれる場合、クラスが正しく実行されない可能性があります。特殊文字の前に \\ を挿入してエスケープしてみてください。Mac では、test!password というパスワードが test\\!password と入力されます。

16.ファイルを保存します。

17.main/java/com/salesforce/emp/connector/example/LoginExample.java を見つけて右クリックし、[実行] を選択します。
Visual Studio Code のメニューの main/java/com/salesforce/emp/connector/example/LoginExample.java が展開され、[実行] ボタンにマウスのクリックが示されてます。

18.ターミナルウィンドウが開き、サブスクリプションが表示されます。
サブスクリプションに関連するコードを示す、Java Process Console のターミナルウィンドウ

19.イベントメッセージを生成するために、イベントを起動するアクションを実行します。ReportEventStream の場合は、Playground で任意のレポートを実行します。

  1. Playground でレポートを作成するには、アプリケーションランチャーアイコン をクリックしてレポートと入力します。
  2. [レポート] をクリックします。
  3. [新規レポート] をクリックします。
  4. [ケース] を選択して、[次へ] をクリックします。
  5. [実行] をクリックします。

20.レポートを実行後、EMP コネクタがイベント通知を受信し、コンソールに出力します。出力は次のようになります。

{
"schema": "mn_C9tvH0ofZbpxU2XthsQ",
"payload": {
"EventDate": "2020-11-18T22:39:26.000Z",
"Description": null,
"EvaluationTime": 0.0,
"NumberOfColumns": 7,
"Operation": "ReportRunAndNotificationSent",
"DashboardId": null,
"LoginHistoryId": "0YaB000003NcnpbKAB",
"Name": "Total Cases Created",
"IsScheduled": false,
"ColumnHeaders": "[OWNER, ACCOUNT.NAME, SUBJECT, CREATED_DATE, AGE, OPEN, CLOSED]",
"Format": "Tabular",
"CreatedById": "005B0000006xcmjIAA",
"OwnerId": "005B00000078z7S",
"SessionKey": "+Tned3rTsZ5a1hBA",
"PolicyOutcome": null,
"Records": "{\"totalSize\":26,\"rows\":[{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLqIAM\",\"500B00000062HLqIAM\",\"001B000001KYEVsIAP\"]},{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLrIAM\",\"500B00000062HLrIAM\",\"001B000001KYEVxIAP\"]},{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLsIAM\",\"500B00000062HLsIAM\",\"001B000001KYEVxIAP\"]},{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLtIAM\",\"500B00000062HLtIAM\",\"001B000001KYEVyIAP\"]},{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLuIAM\",\"500B00000062HLuIAM\",\"001B000001KYEVyIAP\"]},{\"datacells\":[\"005B00000078z7SIAQ\",\"500B00000062HLvIAM\",\"500B00000062HLvIAM\",\"001B000001KYEVyIAP\"]}]}",
"EventIdentifier": "92b7815d-acfd-465e-9b1b-54d3a2833571",
"DisplayedFieldEntities": "Account,Owner,Case",
"RelatedEventIdentifier": null,
"ExecutionIdentifier": "cb56d782-ee73-44c5-b4b6-10a9e014b6ae",
"RowsProcessed": 26.0,
"RowsReturned": null,
"ReportId": null,
"Sequence": 1,
"DashboardName": null,
"EventSource": "Lightning",
"SourceIp": "Salesforce.com IP",
"Scope": "organization",
"Username": "rburgle@force.com",
"UserId": "005B00000078z7SIAQ",
"CreatedDate": "2020-11-18T22:39:36.796Z",
"ExportFileFormat": null,
"LoginKey": "B9AyV/N2mnoXMyXc",
"PolicyId": null,
"GroupedColumnHeaders": null,
"QueriedEntities": "Case",
"SessionLevel": "STANDARD"
},
"event": { "replayId": 127201 }
}


この出力の行 7 (NumberOfColumns) と行 19 (totalSize) にレポートのサイズに関する情報が示されています。行 30 はログインしたクライアントの IP アドレスです。行 10 はログイン履歴で、ユーザセッションを追跡して、ユーザアクティビティと特定の一連のレポートイベントを関係付けることができます。行 18 はイベントに関連付けられているトランザクションポリシーの結果 (ユーザが 2 要素認証要求を承認したか却下したか) です。

この例のイベントからわかるとおり、ユーザのアクティビティにまつわる断片をつなぎ合わせて全容を知ることができます。LoginHistoryID が同じ他のイベントを探し、見つかったイベントをたどってユーザの元の認証を突き止めれば、特定の一連のレポートイベントに関するアクティビティを追跡できます。また、PolicyOutcome を確認することも一案です。ポリシーをトリガした操作の実行がブロックされた場合、無効なパスワードが何度も入力された場合、認証アプリケーションで 2 要素承認要求が却下された場合は、そのユーザが認証されていない情報にアクセスしようとしたことを示す危険信号である場合があります。 

リアルタイムイベントをストリーミングする

前述のとおり、リアルタイムイベントはプラットフォームイベントを使用してストリーミングされ、関連する任意のクライアントアプリケーションで使用できます。監視にサードパーティアプリケーションを使用している場合は、リアルタイムイベントに登録して、そこで評価できます。イベントを検証する優れた方法となるのが、Salesforce Labs の Streaming Monitor アプリケーションです! Streaming Monitor では、イベントの種別を選択し、lighting-emp-api コンポーネントを使用して多数のイベントに登録することができます。詳細は、Salesforce のストリーミング機能に関するブログ投稿を参照してください。

リソース

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる