

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Beispiel: Integrieren Sie Benachrichtigungen von Datadog und Splunk
<a name="example_integrating_notifications"></a>

Dieses Beispiel enthält detaillierte Schritte zur Integration von Benachrichtigungen von Datadog und Splunk in AWS Incident Detection and Response.

**Topics**
+ [Schritt 1: Richten Sie Ihr APM als Eventquelle in Amazon ein EventBridge](#example_integrating_notifications_step1)
+ [Schritt 2: Erstellen Sie einen benutzerdefinierten Event-Bus](#example_integrating_notifications_step2)
+ [Schritt 3: Erstellen Sie eine AWS Lambda Funktion für die Transformation](#example_integrating_notifications_step3)
+ [Schritt 4: Erstellen Sie eine benutzerdefinierte EventBridge Amazon-Regel](#example_integrating_notifications_step4)

## Schritt 1: Richten Sie Ihr APM als Eventquelle in Amazon ein EventBridge
<a name="example_integrating_notifications_step1"></a>

Richten Sie jede von Ihnen APMs als Eventquelle in Amazon EventBridge in Ihrem AWS-Konto ein. Anweisungen zur Einrichtung Ihres APM als Ereignisquelle finden Sie in den [Anweisungen zur Einrichtung der Ereignisquelle für Ihr Tool bei EventBridge Amazon-Partnern](https://console.aws.amazon.com/events/home#/partners).

Indem Sie Ihr APM als Ereignisquelle einrichten, können Sie Benachrichtigungen von Ihrem APM in einen Event-Bus in Ihrem AWS-Konto aufnehmen. Nach der Einrichtung kann AWS Incident Detection and Response den Incident-Management-Prozess starten, wenn der Event-Bus ein Ereignis empfängt. Dieser Vorgang fügt Amazon EventBridge als Ziel zu Ihrem APM hinzu.

## Schritt 2: Erstellen Sie einen benutzerdefinierten Event-Bus
<a name="example_integrating_notifications_step2"></a>

Es hat sich bewährt, einen benutzerdefinierten Eventbus zu verwenden. AWS Incident Detection and Response verwendet den benutzerdefinierten Event-Bus, um transformierte Ereignisse aufzunehmen. Eine AWS Lambda Funktion transformiert das Partner-Event-Bus-Ereignis und sendet es an den benutzerdefinierten Event-Bus. AWS Incident Detection and Response installiert eine verwaltete Regel, um Ereignisse aus dem benutzerdefinierten Ereignisbus aufzunehmen.

Sie können den Standard-Event-Bus anstelle eines benutzerdefinierten Event-Busses verwenden. AWS Incident Detection and Response ändert die verwaltete Regel so, dass sie aus dem Standard-Event-Bus statt aus einem benutzerdefinierten einspeist.

**Erstellen Sie einen benutzerdefinierten Event-Bus in Ihrem AWS Konto:**

1. Öffnen Sie die EventBridge Amazon-Konsole unter [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)

1. Wählen Sie **Busse**, **Eventbus**.

1. Wählen Sie unter **Benutzerdefinierter Eventbus** die Option **Erstellen** aus.

1. Geben Sie unter Name einen Namen für Ihren Event-Bus **ein**. Das empfohlene Format ist **APMName- AWSIncidentDetectionResponse-EventBus**.

   Verwenden Sie beispielsweise eine der folgenden Optionen, wenn Sie Datadog oder Splunk verwenden:
   + **Datadog:** Datadog-AWSIncidentDetectionResponse-EventBus
   + **Splunk:** Splunk-AWSIncidentDetectionResponse-EventBus

## Schritt 3: Erstellen Sie eine AWS Lambda Funktion für die Transformation
<a name="example_integrating_notifications_step3"></a>

Die Lambda-Funktion transformiert Ereignisse zwischen dem Partner-Event-Bus in Schritt 1 und dem benutzerdefinierten (oder standardmäßigen) Event-Bus aus Schritt 2. Die Lambda-Funktionstransformation entspricht der verwalteten Regel AWS Incident Detection and Response.

**Erstellen Sie eine AWS Lambda Funktion in Ihrem Konto AWS**

1. Öffnen Sie die [Seite Funktionen](https://console.aws.amazon.com/lambda/home#/functions) auf der AWS Lambda Konsole.

1. Wählen Sie **Funktion erstellen**.

1. Wählen Sie die Registerkarte **Autor von Grund auf neu**.

1. Geben Sie unter **Funktionsname** einen Namen im folgenden Format ein`APMName-AWSIncidentDetectionResponse-LambdaFunction`.

   Im Folgenden finden Sie Beispiele für Datadog und Splunk:
   + **Datadog:** Datadog-AWSIncidentDetectionResponse-LambdaFunction
   + **Splunk:** Splunk-AWSIncidentDetectionResponse-LambdaFunction

1. Geben Sie für **Runtime** **Python 3.10** ein.

1. Behalten Sie die Standardwerte für die übrigen Felder bei. Wählen Sie **Funktion erstellen**.

1. Ersetzen Sie auf der **Codebearbeitungsseite** den standardmäßigen Lambda-Funktionsinhalt durch die Funktion in den folgenden Codebeispielen.

   Beachten Sie die Kommentare, die in den folgenden Codebeispielen mit \$1 beginnen. Diese Kommentare geben an, welche Werte geändert werden müssen.

   Vorlage für den **Datadog-Transformationscode:**

   ```
   import logging
   import json
   import boto3
   
   logger = logging.getLogger()
   logger.setLevel(logging.INFO)
   
   # Change the EventBusName to the custom event bus name you created previously or use your default event bus which is called 'default'.
   # Example 'Datadog-AWSIncidentDetectionResponse-EventBus'
   EventBusName = "Datadog-AWSIncidentDetectionResponse-EventBus" 
   
   def lambda_handler(event, context):
       # Set the event["detail"]["incident-detection-response-identifier"] value to the name of your alert that is coming from your APM. Each APM is different and each unique alert will have a different name. 
       # Replace the dictionary path, event["detail"]["meta"]["monitor"]["name"], with the path to your alert name based on your APM payload. 
       # This example is for finding the alert name for Datadog.
       event["detail"]["incident-detection-response-identifier"] = event["detail"]["meta"]["monitor"]["name"] 
       logger.info(f"We got: {json.dumps(event, indent=2)}")
       
       client = boto3.client('events')
       response = client.put_events(
        Entries=[
                 {
                  'Detail': json.dumps(event["detail"], indent=2),
                  'DetailType': 'ams.monitoring/generic-apm', # Do not modify. This DetailType value is required.
                  'Source': 'GenericAPMEvent', # Do not modify. This Source value is required.
                  'EventBusName': EventBusName # Do not modify. This variable is set at the top of this code as a global variable. Change the variable value for your eventbus name at the top of this code.    
                }
        ]
       )
       print(response['Entries'])
   ```

   Codevorlage für die **Splunk-Transformation**:

   ```
   import logging
   import json
   import boto3
   
   logger = logging.getLogger()
   logger.setLevel(logging.INFO)
   
   # Change the EventBusName to the custom event bus name you created previously or use your default event bus which is called 'default'. 
   # Example Splunk-AWSIncidentDetectionResponse-EventBus
   EventBusName = "Splunk-AWSIncidentDetectionResponse-EventBus" 
   
   def lambda_handler(event, context):
       # Set the event["detail"]["incident-detection-response-identifier"] value to the name of your alert that is coming from your APM. Each APM is different and each unique alert will have a different name. 
       # replace the dictionary path event["detail"]["ruleName"] with the path to your alert name based on your APM payload. 
       # This example is for finding the alert name in Splunk.
       event["detail"]["incident-detection-response-identifier"] = event["detail"]["ruleName"]
       logger.info(f"We got: {json.dumps(event, indent=2)}")
       
       client = boto3.client('events')
       response = client.put_events(
       Entries=[
                {
                 'Detail': json.dumps(event["detail"], indent=2),
                 'DetailType': 'ams.monitoring/generic-apm', # Do not modify. This DetailType value is required.
                 'Source': 'GenericAPMEvent', # Do not modify. This Source value is required.
                 'EventBusName': EventBusName # Do not modify. This variable is set at the top of this code as a global variable. Change the variable value for your eventbus name at the top of this code. 
               }
           ]
       )
       print(response['Entries'])
   ```

1. Wählen Sie **Bereitstellen**.

1. Fügen Sie der Lambda-Ausführungsrolle die **PutEvents**Berechtigung für den Event-Bus hinzu, an den Sie die transformierten Daten senden:

   1. Öffnen Sie die [Seite „Funktionen“](https://console.aws.amazon.com/lambda/home#/functions) in der AWS Lambda Konsole.

   1. Wählen Sie die Funktion und dann auf der Registerkarte **Konfiguration** die Option **Berechtigungen** aus.

   1. Wählen Sie unter **Ausführungsrolle** **den Rollennamen** aus, um die Ausführungsrolle in der AWS Identity and Access Management Konsole zu öffnen.

   1. Wählen Sie unter **Berechtigungsrichtlinien** den Namen der vorhandenen Richtlinie aus, um die Richtlinie zu öffnen.

   1. Wählen **Sie unter In dieser Richtlinie definierte Berechtigungen** die Option **Bearbeiten** aus.

   1. Wählen Sie auf der Seite des **Richtlinien-Editors** die Option **Neue Aussage hinzufügen** aus:

   1. Der **Policy-Editor** fügt eine neue leere Anweisung hinzu, die der folgenden ähnelt  
![\[Screenshot des JSON-Richtlinieneditors in der IAM-Konsole.\]](http://docs.aws.amazon.com/de_de/IDR/latest/userguide/images/iam-add-new-statement.png)

   1. Ersetzen Sie die neue automatisch generierte Anweisung durch Folgendes:

      ```
      {
        "Sid": "AWSIncidentDetectionResponseEventBus0",
        "Effect": "Allow",
        "Action": "events:PutEvents",
        "Resource": "arn:aws:events:{region}:{accountId}:event-bus/{custom-eventbus-name}"
      }
      ```

   1. Die **Ressource** ist der ARN des benutzerdefinierten Event-Busses, in dem Sie erstellt haben, [Schritt 2: Erstellen Sie einen benutzerdefinierten Event-Bus](#example_integrating_notifications_step2) oder der ARN Ihres Standard-Event-Busses, wenn Sie den Standard-Event-Bus in Ihrem Lambda-Code verwenden.

1. Überprüfen und bestätigen Sie, dass der Rolle die erforderlichen Berechtigungen hinzugefügt wurden.

1. Wählen Sie **Diese neue Version als Standard festlegen** und wählen Sie dann **Änderungen speichern** aus.

**Was ist für eine Payload-Transformation erforderlich?**

Die folgenden JSON-Schlüssel/Wert-Paare sind für Event-Bus-Ereignisse erforderlich, die von AWS Incident Detection and Response erfasst werden.

```
{
    "detail-type": "ams.monitoring/generic-apm",
    "source": "GenericAPMEvent"
    "detail" : {
        "incident-detection-response-identifier": "Your alarm name from your APM",
    }
}
```

Die folgenden Beispiele zeigen ein Ereignis aus einem Partner-Event-Bus vor und nach seiner Transformation.

```
{
    "version": "0",
    "id": "a6150a80-601d-be41-1a1f-2c5527a99199",
    "detail-type": "Datadog Alert Notification",
    "source": "aws.partner/datadog.com/Datadog-aaa111bbbc",
    "account": "123456789012",
    "time": "2023-10-25T14:42:25Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
      "alert_type": "error",
      "event_type": "query_alert_monitor",
      "meta": {
        "monitor": {
          "id": 222222,
          "org_id": 3333333333,
          "type": "query alert",
          "name": "UnHealthyHostCount",
          "message": "@awseventbridge-Datadog-aaa111bbbc",
          "query": "max(last_5m):avg:aws.applicationelb.un_healthy_host_count{aws_account:123456789012} \u003c\u003d 1",
          "created_at": 1686884769000,
          "modified": 1698244915000,
          "options": {
            "thresholds": {
              "critical": 1.0
            }
          },
        },
        "result": {
          "result_id": 7281010972796602670,
          "result_ts": 1698244878,
          "evaluation_ts": 1698244868,
          "scheduled_ts": 1698244938,
          "metadata": {   
            "monitor_id": 222222,
            "metric": "aws.applicationelb.un_healthy_host_count"
          }
        },
        "transition": {
          "trans_name": "Triggered",
          "trans_type": "alert"
        },
        "states": {
          "source_state": "OK",
          "dest_state": "Alert"
        },
        "duration": 0
      },
      "priority": "normal",
      "source_type_name": "Monitor Alert",
      "tags": [
        "aws_account:123456789012",
        "monitor"
      ]
    }
}
```

Beachten Sie, dass vor der Transformation des Ereignisses der APM `detail-type` angegeben wird, von dem die Warnung stammt, dass die Quelle von einem Partner-APM stammt und der `incident-detection-response-identifier` Schlüssel nicht vorhanden ist.

Die Lambda-Funktion transformiert das obige Ereignis und platziert es in den benutzerdefinierten oder standardmäßigen Ziel-Event-Bus. Die transformierte Nutzlast enthält jetzt die erforderlichen Schlüssel:Wert-Paare.

```
{
    "version": "0",
    "id": "7f5e0fc1-e917-2b5d-a299-50f4735f1283",
    "detail-type": "ams.monitoring/generic-apm",
    "source": "GenericAPMEvent",
    "account": "123456789012",
    "time": "2023-10-25T14:42:25Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
      "incident-detection-response-identifier": "UnHealthyHostCount",
      "alert_type": "error",
      "event_type": "query_alert_monitor",
      "meta": {
        "monitor": {
          "id": 222222,
          "org_id": 3333333333,
          "type": "query alert",
          "name": "UnHealthyHostCount",
          "message": "@awseventbridge-Datadog-aaa111bbbc",
          "query": "max(last_5m):avg:aws.applicationelb.un_healthy_host_count{aws_account:123456789012} \u003c\u003d 1",
          "created_at": 1686884769000,
          "modified": 1698244915000,
          "options": {
            "thresholds": {
              "critical": 1.0
            }
          },
        },
        "result": {
          "result_id": 7281010972796602670,
          "result_ts": 1698244878,
          "evaluation_ts": 1698244868,
          "scheduled_ts": 1698244938,
          "metadata": {
            "monitor_id": 222222,
            "metric": "aws.applicationelb.un_healthy_host_count"
          }
        },
        "transition": {
          "trans_name": "Triggered",
          "trans_type": "alert"
        },
        "states": {
          "source_state": "OK",
          "dest_state": "Alert"
        },
        "duration": 0
      },
      "priority": "normal",
      "source_type_name": "Monitor Alert",
      "tags": [
        "aws_account:123456789012",
        "monitor"
      ]
    }
}
```

Beachten Sie, dass `detail-type` es jetzt ist`ams.monitoring/generic-apm`, Quelle ist jetzt`GenericAPMEvent`, und unter Detail gibt es ein neues Schlüssel/Wert-Paar:. `incident-detection-response-identifier`

 Im vorherigen Beispiel wird der `incident-detection-response-identifier` Wert aus dem Namen der Warnung unter dem Pfad übernommen. `$.detail.meta.monitor.name` Die Namenspfade für APM-Warnungen unterscheiden sich von APM zu APM. Die Lambda-Funktion muss so geändert werden, dass sie den Alarmnamen aus dem richtigen JSON-Pfad für das Partnerereignis übernimmt und ihn für den `incident-detection-response-identifier` Wert verwendet.

Jeder eindeutige Name, der auf dem festgelegt ist, `incident-detection-response-identifier` wird dem AWS-Incident Detection and Response-Team beim Onboarding zur Verfügung gestellt. Ereignisse, die einen unbekannten Namen für haben, werden `incident-detection-response-identifier` nicht verarbeitet.

## Schritt 4: Erstellen Sie eine benutzerdefinierte EventBridge Amazon-Regel
<a name="example_integrating_notifications_step4"></a>

Für den in Schritt 1 erstellten Partner-Event-Bus ist eine EventBridge Regel erforderlich, die Sie erstellen. Die Regel sendet die gewünschten Ereignisse vom Partner-Event-Bus an die in Schritt 3 erstellte Lambda-Funktion.

Richtlinien zur Definition Ihrer EventBridge Regel finden Sie unter [ EventBridge Amazon-Regeln](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html).

1. Öffnen Sie die EventBridge Amazon-Konsole unter [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)

1. Wählen Sie **Regeln** und dann den Partner-Event-Bus aus, der Ihrem APM zugeordnet ist. Im Folgenden finden Sie Beispiele für Eventbusse von Partnern:
   + **Datadog**: war. partner/datadog.com/eventbus-Name
   + **Splunk**: aws. partner/signalfx.com/RandomString

1. Wählen Sie **Regel erstellen**, um eine neue EventBridge Regel zu erstellen.

1. Geben Sie als Regelname einen Namen im folgenden Format `APMName-AWS Incident Detection and Response-EventBridgeRule` ein und wählen Sie dann **Weiter** aus. Im Folgenden finden Sie Beispielnamen:
   + **Datadog:** Datadog-AWSIncidentDetectionResponse-EventBridgeRule
   + **Splunk:** Splunk-AWSIncidentDetectionResponse-EventBridgeRule

1. Wählen Sie **als **Ereignisquelle** AWS-Ereignisse oder EventBridge Partnerereignisse** aus.

1. Behalten Sie die Standardwerte „**Beispielereignis**“ und „**Erstellungsmethode**“ bei.

1. Wählen Sie für **Ereignismuster** Folgendes aus:

   1. **Quelle des Ereignisses:** EventBridge Partner.

   1. **Partner:** Wählen Sie Ihren APM-Partner aus.

   1. **Ereignistyp:** Alle Ereignisse.

   Im Folgenden finden Sie Beispiele für Ereignismuster:

   **Beispiel für ein Datadog-Ereignismuster**  
![\[Beispiel für ein Datadog-Ereignismuster.\]](http://docs.aws.amazon.com/de_de/IDR/latest/userguide/images/datadog-event-pattern.png)

   **Beispiel für ein Splunk-Ereignismuster**  
![\[Beispiel für ein Splunk-Ereignismuster.\]](http://docs.aws.amazon.com/de_de/IDR/latest/userguide/images/splunk-event-pattern.png)

1. Wählen Sie für **Ziele** Folgendes aus:

   1. **Zieltypen:** AWS Dienst

   1. **Wählen Sie ein Ziel aus:** Wählen Sie die Lambda-Funktion.

   1. **Funktion:** Der Name der Lambda-Funktion, die Sie in Schritt 2 erstellt haben.

1. Wählen Sie **Weiter**, **Regel speichern**.