事件追蹤
本文說明如何在 Microsoft Dynamics 365 Fraud Protection 中使用事件追蹤。
Microsoft Dynamics 365 Fraud Protection 中的事件追蹤功能可讓您建立可在入口網站外部延伸且可運作的實時遙測平臺。 每個事件都會由用戶層級或系統層級動作排程或觸發。 您可以訂閱您感興趣的事件,並將事件承載轉送至 Azure 事件中樞 或 Azure Blob 記憶體。 您也可以同時從多個事件追蹤會話要求事件。 然後,系統會依時間順序傳遞事件。
事件可以匯總,並用來定義可用來監視和管理服務成本和使用量的計量。 事件也可以用來開發使用事務數據的自定義報告,或維護系統記錄,以用於在詐騙保護入口網站中採取的動作(例如,「使用者 A 編輯 清單 B ,日期 C」)。 當您使用 Microsoft Power Automate 和 Azure Logic Apps 中提供的 Azure 事件中樞 連接器時,您也可以使用傳送至 Azure 事件中樞 的數據來警示或高度自定義的工作流程。 同樣地,使用 Azure Blob 記憶體,您可以建立新的訂用帳戶,將所有歷程記錄數據複製到冷記憶體帳戶,以進行進一步分析。
如果您的詐騙保護實例有多個環境,您可以使用環境切換器來尋找每個環境的事件追蹤。 如果環境有子環境,則針對父環境訂閱的事件追蹤會自動包含所有子環境相同的事件。
注意
事件追蹤客戶必須擁有其他 Azure 服務的訂用帳戶,例如事件中樞或 Blob 記憶體。 如需詳細資訊,請連絡您的 Microsoft 帳戶主管。 如果您有 Azure 全域管理員認證,請登入 Azure 入口網站 以判斷可用的訂用帳戶。
開始使用
若要開始使用事件追蹤功能,請遵循下列步驟。
在 [詐騙保護] 入口網站中,選取 [數據],然後選取 [ 事件追蹤]。
選取 [ 新增訂用帳戶]。
輸入訂用帳戶顯示名稱。
選取儲存位置:
- 針對事件中樞:輸入 Azure 金鑰保存庫 中事件中樞實例的 連接字串。 Azure 金鑰保存庫 應該位於與詐騙保護訂用帳戶相同的租使用者中。 將詐騙保護應用程式的秘密存取權授與 Azure 金鑰保存庫。 在詐騙保護入口網站中,輸入來自 Azure 金鑰保存庫 的秘密標識碼 URL。 如需詳細資訊,請參閱取得事件中樞 連接字串。
- 針對 [Blob 儲存體:在 Azure 金鑰保存庫 中輸入 Azure Blob 儲存體 帳戶的 連接字串。 Azure 金鑰保存庫 應該位於與詐騙保護訂用帳戶相同的租使用者中。 將詐騙保護應用程式的秘密存取權授與 Azure 金鑰保存庫。 在詐騙保護入口網站中,輸入來自 Azure 金鑰保存庫 的秘密標識碼 URL,以及事件追蹤數據所在的容器名稱。 如需詳細資訊,請參閱 檢視帳戶存取密鑰。
選取測試連線。 成功測試連線之後,會顯示從 Azure 金鑰保存庫 中 連接字串 擷取的帳戶相關信息。 對於 Azure 事件中樞,此只讀資訊包括事件中樞命名空間和事件中樞名稱。 針對 Azure Blob 儲存體,會顯示 儲存體 帳戶名稱。 確認此資訊符合您想要使用的記憶體帳戶。 如果沒有成功的連線測試,就不會啟用 [ 建立] 按鈕。
選取事件並檢閱 JSON 承載的描述和範例。 然後選取 [建立],以儲存訂用帳戶。 事件會立即從該時間點傳送至事件中樞實例。 如果您選取 [Blob 儲存體],則複製程式會開始寫入所有歷程記錄數據,且所有事件都會每隔 30 分鐘發佈至您的容器。
返回詐騙保護入口網站,檢視事件/Hr.計量的計數,並確定數據已傳送至事件中樞和 Blob 儲存體。 Events /Hr 和 Failures/Hr 計量會顯示過去 24 小時內的平均值。
提示
如需事件中樞的其他監視,請移至 Azure 入口網站,並設定計量。 如需詳細資訊,請參閱 Azure 監視器中的 Azure 事件中樞 計量。
選擇性:從事件中樞設定您自己的輸入管線至 Power BI。 如需如何開始開發自定義報表的資訊,請參閱 使用Power BI。
選擇性:從 Power Automate 連線 至事件中樞,以定義自定義工作流程。 如需詳細資訊,請參閱 使用LogicApps或Power Automate。
事件結構描述
事件追蹤目前有五種支持的分類:交易事件、追蹤事件、評量事件、稽核事件和監視事件。
交易式事件
使用交易式事件,使用評量和非評估 API 呼叫中可用的數據來建立自定義計分卡和自動化工作流程。 您也可以使用 Blob 記憶體,從歷程 API 呼叫複製數據,為您的企業建立數據倉儲。 此事件的承載包含每個 API 呼叫的整個要求和回應。
命名空間:FraudProtection.Observe。<API 名稱> 或 FraudProtection.Assessment。<API 名稱>
{
"uniqueId": "unique event id and used to deduplicate events",
"request": {
//API request payload
},
"response": {
//API response payload
},
"name": "FraudProtection.Observe.AccountLabel",
"version": "1.0",
"metadata": {
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"timestamp": "2020-09-25T03:46:53.3716978Z"
}
}
追蹤事件
您可以使用追蹤事件來報告和監視包含 Trace() 傳回類型之所有規則的效能。 此事件的承載包含標準化欄位,例如觸發事件的規則名稱、與該規則的評估類型相互關聯的事件類型、相互關聯標識符等。接著,您可以使用 Trace() 傳回類型的 key:value 組傳送自定義屬性,以包含來自範例承載、風險分數和自定義欄位的變數。 如需如何在規則中使用 Trace() 來觸發這些事件的詳細資訊,請參閱 規則語言指南中的觀察函 式。
命名空間:FraudProtection.Trace.Rule。
{
"name": "FraudProtection.Trace.Rule",
"version": "1.0",
"metadata":
{
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"timestamp": "2020-06-10T23:43:33.4526859Z"
}
"ruleName": "Risk Score Policy",
"eventType": "Purchase",
"correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
"eventId": "e75e703c-1e54-4d41-af4b-a4c1b8866f02",
"attributes":
{
"example": "ManualReview” //key:value pairs defined in the Trace() return type
}
}
評定事件
評定和相關聯的標籤和觀察事件可以追蹤至事件中樞和 Blob。
命名空間:FraudProtection.Assessments。
{
"request": "",
"response": "",
"eventId": "uniqueId",
"assessmentApiName": "<your assessment api name>",
"assessmentName": "<your assessment name>"
}
命名空間:FraudProtection.CaseManagement.Events。
案例管理決策狀態和案例管理所做的標籤。
{
"name": "FraudProtection.CaseManagement.Events",
"version": "1.0",
"metadata": {
"tenantId": "<your tenantID>",
"timestamp": "2020-09-25T03:46:53.3716978Z"
},
"assessmentId": "<your assessment uniqueId>",
"assessmentName": "<your assessment name>",
"caseId": "uniqueId of the case record",
"queueId": "uniqueId of the queue the case was routed to",
"queueName": "name of the queue the case was routed to",
"eventType": "<your assessment uniqueId>",
"eventId": "<your assessment transaction uniqueId>",
"creationDate": "creation datetime",
"reviewStartDate": "review start datetime",
"reviewedDate": "reviewed datetime",
"decision": "decision of the review agent",
"reason": "decision reason",
"reasonNote": "decision note",
"agentId": "uniqueId of the review agent",
"agentName": "name of the review agent",
"status": "status of the decision",
"fraudFlag": "fraud flag (label) of the decision"
}
命名空間:FraudProtection.Observations。
{
"request": "",
"primaryEventId": "<assessment event id>",
"observationApiName": "<your observation api name>",
"observationName": "<your observation name>",
"observationEventId": "<your observation event id>",
"assessmentApiName": "<your assessment api name>",
"assessmentName": "<your assessment name>"
}
命名空間:FraudProtection.Labels。
{
"request": "",
"labelEventId": "",
"assessmentApiName": "<your assessment api name>",
"assessmentName": "<your assessment name>"
}
稽核事件
使用稽核事件來追蹤入口網站動作並開發稽核記錄。 稽核事件目前支持規則、清單、速度及外部呼叫的新/編輯/刪除作業。
命名空間:FraudProtection.Audit。
"audit": {
"entityId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"entityName": "Manual Review Rule",
"entityType": "Rule",
"operationName": "NewRule",
"userId": "user@contoso.com"
},
"name": "FraudProtection.Audit",
"version": "1.0",
"metadata": {
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"timestamp": "2020-06-10T23:43:33.4526859Z"
}
稽核記錄存取
有兩種方式可以存取稽核記錄。 您可以設定事件追蹤,也可以藉由建立客戶支援票證來要求傳送自動產生的稽核記錄。 如果您決定不使用事件追蹤,而是提交支援票證,支援票證會路由傳送至詐騙保護工程小組。 小組會擷取記錄,並將其提供給您。 稽核記錄會擷取並儲存在您布建環境的相同地理位置中。 記錄在擷取之後便無法編輯,記錄保留期間為365天。 超過 365 天的記錄會自動刪除。
您可以使用稽核記錄來追蹤產生的五個事件。 這些事件包括:
- 使用者第一次被指派給詐騙保護角色。
- 現有的使用者角色已更新。
- 系統會移除特定使用者的所有角色指派。
- 使用者接受FCRA同意。
- 使用者更新交易接受助推器 (TAB) 設定。 這些設定的任何變更都會被視為更新。
活動記錄事件
使用活動記錄事件來取得執行詐騙保護中某些動作的詳細記錄、時間及位置。 例如,您可以看到誰對規則進行最後一次變更。 結果符合 活動記錄 搜尋結果。
命名空間:FraudProtection.ActivityLog。
{
"eventId": "0c6e1948-75a9-4513-bb4c-4828c9a8ab05",
"operationType": "Create",
"resourceType": "Decision rule",
"resourceId": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"resourceName": "Rule Test",
"userId": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff"
}
“userID” 後面接著作業和特定資源類型欄位。
監視事件
您可以使用監視事件來自定義報告和警示 API 和外部呼叫效能,以及詐騙保護入口網站中可用的報告。 下列每個事件都提供每個服務的延遲和錯誤見解。
命名空間:FraudProtection.Monitoring.RequestLatencyMsDistribution。
針對 API 呼叫,要求計數和延遲分配會在此事件中每隔 20 秒傳送一次。 這些事件包括 startTime 和 endTime 欄位,可決定匯總期間和維度名稱和值,這些字段可用來視需要篩選計量。
{
"Index": [
1
],
"BucketSamples": [
2
],
"NumberOfBuckets": 10000,
"BucketSize": 10,
"MinimumValue": 0,
"CounterName": "RequestLatencyMsDistribution",
"DimensionNames": [
"EnvironmentId",
"TenantId",
"ApiName",
"ExperienceType",
"IsTestRequest",
"RequestType",
"HttpRequestStatus",
"HttpStatusCode"
],
"DimensionValues": [
"aaaabbbb-0000-cccc-1111-dddd2222eeee",
"aaaabbbb-0000-cccc-1111-dddd2222eeee",
"v1.0/Observe/Create",
"N/A",
"False",
"REALTIME",
"Success",
"200"
],
"StartTime": "2020-06-22T23:43:20",
"EndTime": "2020-06-22T23:43:40",
"Samples": 2,
"Min": 3,
"Max": 7,
"name": "FraudProtection.Monitoring.RequestLatencyMsDistribution",
"version": "1.0",
"metadata": {
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"timestamp": "2020-06-22T23:43:20.0947542Z"
}
}
[ 範例 ] 欄位代表每個 API 的要求計數。
命名空間:FraudProtection.Monitoring.ExternalCalls
此事件包含從規則觸發之外部呼叫檔>之每個外部呼叫<連結的延遲 (以毫秒為單位) 和 HTTP 狀態代碼。 也會提供觸發呼叫之規則和子句的其他維度。
針對外部呼叫,延遲(以毫秒為單位)和 HTTP 狀態代碼計量會隨此事件中的每個要求一起傳送。 如果您有興趣調查個別通話的效能,也會提供觸發呼叫之規則的其他維度,以改善疑難解答體驗。
{
"name": "FraudProtection.Monitoring.ExternalCalls",
"version": "1.0",
"metadata": {
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"timestamp": "2020-06-10T23:43:33.4526859Z"
},
"externalCallName": "SampleExternalCall",
"requestStatus": "Success",
"httpStatusCode": 200,
"correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
"latencyMs": 123,
"assessment": "PURCHASE",
"rule": "SampleRule",
"clause": "SampleClause"
}
命名空間:FraudProtection.Errors.ExternalCalls
此事件會記錄每個失敗外部呼叫的錯誤,而且對於偵錯任何您可能會看到外部呼叫效能的問題都很有用。 系統會記錄呼叫的完整要求和回應,以及觸發呼叫的來源延遲和規則和子句。
{
"name": "FraudProtection.Errors.ExternalCalls",
"version": "1.0",
"metadata": {
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"timestamp": "2020-06-10T23:43:33.4526859Z"
},
"externalCallName": "SampleExternalCall",
"requestStatus": "ResponseFailure",
"httpStatusCode": 404,
"correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
"latencyMs": 123,
"assessment": "PURCHASE",
"rule": "SampleRule",
"clause": "SampleClause",
"response": "{}",
"requestUri": "https://samplewebsite/sample",
"requestBody": "{}"
}