從未與 EventBridge 直接整合的 APM 擷取警示
AWS 事件偵測與回應支援使用 Webhook 從未與 Amazon EventBridge 直接整合的第三方 APM 擷取警示。
您可以部署 CloudFormation 範本,或手動設定整合。設定整合之前,請確認您的帳戶中已建立 AWS 服務連結角色 (SLR) AWSServiceRoleForHealth_EventProcessor。
選項 1:使用 CloudFormation 範本
CloudFormation 範本可用來簡化建立整合基礎結構的程序,須有此基礎結構才能從未與 Amazon EventBridge 整合的 APM 將警示擷取至 AWS 事件偵測與回應。
部署此 CloudFormation 範本之前的考量事項
-
此解決方案使用 API Gateway Lambda 授權方,比較從 APM 隨承載傳遞的機密權杖與 AWS Secrets Manager 中的權杖。如果權杖不相符,則會傳回具有明確拒絕的政策。如需詳細資訊,請參閱 Lambda 授權方。
-
在 AWS 共同責任模式下,您須負責確保使用符合組織安全需求的身分驗證方法。我們建議您使用 AWS Secrets Manager 或類似的服務,而不要將 API 金鑰或授權權杖等敏感資訊儲存為硬式編碼變數。如需詳細資訊,請參閱使用 AWS Secrets Manager 建立和管理機密。
-
如需實作雜湊訊息驗證碼 (HMAC) 的其他範例,請參閱 aws-samples Github 頁面上的 receive-webhooks
。如需實作權杖授權的詳細資訊,請參閱 API Gateway 文件中的 TOKEN 授權方 Lambda 函式範例。 -
解決方案會在 API Gateway 中使用 RateLimit、BurstLimit 和 Quota 來控制請求數量。這些工具會限制在既定時間內可以處理的請求數量。這有助於防止系統過載,並保持服務穩定。如需有關節流的詳細資訊,請參閱《API Gateway 開發人員指南》。
-
請考慮使用 AWS Web Application Firewall (WAF) 來保護 API Gateway 免受已知的不良 IP 位址威脅。這可降低攻擊者利用假造請求封鎖真實的日誌事件,造成請求大量湧入 API 的風險。
-
AWS Secrets Manager 權杖值應儲存在您的應用程式效能監控 (APM) 工具中,作為 HTTP 標頭。務必確實定期輪換權杖,這是安全最佳實務。
-
透過此 CloudFormation 範本部署的資源會產生其他成本 (例如 Lambda 和 EventBridge)。如需這些服務定價的詳細資訊,請參閱 AWS 定價
。 -
整合測試完成後,從
TransformLambdaFunction(Lambda 函式) 移除 logger.info() 陳述式,以防止承載出現在 Amazon CloudWatch Logs 中。 -
在 AWS 事件偵測與回應需要從中擷取警示的每個 AWS 帳戶和區域中部署此 CloudFormation 範本。
準備 CloudFormation 範本:
注意:整合步驟是使用 Dynatrace 作為範例,但此範本可用於可將承載傳送至 API Gateway 的任何 APM。
-
下載並開啟 CloudFormation 範本
。 -
在範本中尋找
APIGWUsagePlan。檢閱為RateLimit、BurstLimit和Quota Limit設定的值,這些值預設為 20、50 和 2000。根據您的需求調整值。 -
在範本中尋找
AuthorizerLambdaFunction。此 Lambda 函式作為身分驗證機制的範例。它會從稱為authorizationToken的標頭擷取權杖值,該標頭傳遞自您的 APM。您可以修改此程式碼,以符合組織的安全政策和 APM 需求。 -
在範本中尋找
TransformLambdaFunction。將字典路徑raw_json["detail"]["ProblemTitle"]取代為從 APM 隨 JSON 承載傳送之警示名稱的路徑。對於 Dynatrace,將此項保持不變。
部署 CloudFormation 範本:
-
在您的目標帳戶和 AWS 區域 中開啟 CloudFormation 主控台。
-
選擇建立堆疊、使用新資源 (標準)。
-
選取選擇現有範本、上傳範本檔案、選擇檔案,然後上傳您儲存在本機上的 CloudFormation 範本。
-
-
指定堆疊詳細資訊:
-
輸入堆疊名稱 (範例:
DynatraceIntegrationForIDR)。 -
APMNameParameter (範例
Dynatrace)。 -
選擇下一步。
-
-
設定堆疊選項:
-
捲動至頁面底部並勾選方塊,以允許 CloudFormation 使用自訂名稱建立 IAM 資源。
-
-
檢閱和建立:
-
驗證參數值的設定正確無誤,然後選擇提交。
-
-
CloudFormation 堆疊會部署必要的資源,以將 APM 事件整合到 AWS 事件偵測與回應。等到 CloudFormation 堆疊狀態顯示為 CREATE_COMPLETE。
-
CloudFormation 堆疊會建立下列資源,假設範例值
Dynatrace已輸入參數中,且在 US-EAST-1 區域中執行。-
機密名稱:DynatraceMySecretTokenName (將根據機密金鑰 APMSecureToken 建立隨機機密值)
-
API Gateway 資源:
-
API 名稱:Dynatrace-AWSIncidentDetectionResponse-APIGW
-
階段名稱:Dynatrace-Stage-Prod
-
授權方:Dynatrace-APIGW-Authorizer
-
用量計劃:APIGW_Throttling_Plan
-
-
Lambda 函式:
-
授權函式:Dynatrace-AWSIncidentDetectionResponse-Lambda-Authorizer
-
轉換函式:Dynatrace-AWSIncidentDetectionResponse-Lambda-Transform
-
-
自訂 EventBus 名稱:Dynatrace-AWSIncidentDetectionResponse-EventBus
-
IAM 角色:
-
TransformLambdaExecutionRole: IDR-TransformLambdaExecutionRole-us-east-1
-
AuthorizerLambdaExecutionRole: IDR-AuthorizerLambdaExecutionRole-us-east-1
-
-
-
記錄 Webhook URL 和權杖值:
-
開啟 API Gateway 主控台,然後選擇隨 CloudFormation 堆疊一併建立的 API 名稱。
-
從左側導覽中選擇「階段」,使用 + 號展開階段名稱,然後選擇 POST。記錄調用 URL。在 APM 中將此 URL 設定為目的地,以將警示事件的 Webhook 傳送至該處。
-
開啟 AWS Secrets Manager 主控台,然後選擇隨 CloudFormation 堆疊一併建立的機密名稱。(範例:DynatraceMySecretTokenName。)
-
在「機密值」索引標籤中,選擇擷取機密值。您將看到的機密金鑰為 APMSecureToken。記錄機密值。請勿將此機密值提供給任何人。
-
-
整合測試
部署堆疊之後,從您的 APM 傳送測試承載來測試整合:
-
瀏覽至 Lambda 主控台,然後選取
APMNameParameter-AWSIncidentDetectionResponse-Lambda-Transform函式。選擇監控索引標籤。 -
在指標圖中尋找成功的調用。
-
選擇檢視 Amazon CloudWatch Logs,以查看測試承載的日誌串流或任何錯誤。
將您的事件匯流排 ARN 與 AWS 事件偵測與回應共用
-
開啟 Amazon EventBridge 主控台。選取事件匯流排。
-
複製隨 CloudFormation 堆疊一起建立的自訂事件匯流排的 ARN,範例:
arn:aws:events:us-east-1:123456789123:event-bus/Dynatrace-AWSIncidentDetectionResponse-EventBus。-
將此 ARN 新增至 警示擷取問卷 - 概觀 的「第三方 APM 警示」區段中的「EventBridge 事件匯流排 ARN」欄位。
-
-
在上線過程中,AWS 事件偵測與回應會在此自訂事件匯流排上建立受管 EventBridge 規則,以擷取您的 APM 警示。
選項 2:手動整合
使用下列步驟來設定與 AWS 事件偵測與回應的整合。
-
建立 Amazon API Gateway 以接受來自 APM 的承載。
-
定義 Lambda 函式以使用身分驗證權杖進行授權。
-
執行下列其中一項:
-
(建議方法) 建立 EventBridge 自訂事件匯流排,名為
$YourApmName-AWSIncidentDetectionResponse-EventBus。 -
(替代方法) 使用預設 EventBridge 事件匯流排,而不使用自訂事件匯流排。
-
-
定義轉換 Lambda 函式來將 AWS 事件偵測與回應識別碼附加至您的承載。您也可以使用此函式來篩選出您要傳送至 AWS 事件偵測與回應的事件。
-
API Gateway 必須調用轉換 Lambda 函式,該函式將會轉換 API Gateway 傳遞的承載。
-
轉換 Lambda 函式必須在上面第 3 點定義的事件匯流排中寫入轉換後的事件。
-
-
設定您的 APM,以將通知傳送至從 API Gateway 產生的 URL。