

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Contoh: Integrasikan pemberitahuan dari Datadog dan Splunk
<a name="example_integrating_notifications"></a>

Contoh ini memberikan langkah-langkah terperinci untuk mengintegrasikan notifikasi dari Datadog dan Splunk ke AWS Incident Detection and Response.

**Topics**
+ [Langkah 1: Siapkan APM Anda sebagai sumber acara di Amazon EventBridge](#example_integrating_notifications_step1)
+ [Langkah 2: Buat bus acara khusus](#example_integrating_notifications_step2)
+ [Langkah 3: Buat AWS Lambda fungsi untuk transformasi](#example_integrating_notifications_step3)
+ [Langkah 4: Buat EventBridge aturan Amazon khusus](#example_integrating_notifications_step4)

## Langkah 1: Siapkan APM Anda sebagai sumber acara di Amazon EventBridge
<a name="example_integrating_notifications_step1"></a>

Siapkan masing-masing APMs sebagai sumber peristiwa di Amazon EventBridge di akun AWS Anda. Untuk petunjuk cara menyiapkan APM Anda sebagai sumber acara, lihat [sumber acara menyiapkan instruksi untuk alat Anda di EventBridge mitra Amazon](https://console.aws.amazon.com/events/home#/partners).

Dengan menyiapkan APM sebagai sumber acara, Anda dapat menerima notifikasi dari APM ke bus acara di akun AWS Anda. Setelah penyiapan, AWS Incident Detection and Response dapat memulai proses manajemen insiden saat bus acara menerima acara. Proses ini menambahkan Amazon EventBridge sebagai tujuan di APM Anda.

## Langkah 2: Buat bus acara khusus
<a name="example_integrating_notifications_step2"></a>

Ini adalah praktik terbaik untuk menggunakan bus acara khusus. AWS Incident Detection and Response menggunakan bus peristiwa khusus untuk menyerap peristiwa yang diubah. AWS Lambda Fungsi mengubah acara bus acara mitra dan mengirimkannya ke bus acara khusus. AWS Incident Detection and Response menginstal aturan terkelola untuk menyerap peristiwa dari bus peristiwa khusus.

Anda dapat menggunakan bus acara default alih-alih bus acara khusus. AWS Incident Detection and Response memodifikasi aturan terkelola untuk diserap dari bus peristiwa default, bukan aturan khusus.

**Buat bus acara khusus di AWS akun Anda:**

1. Buka EventBridge konsol Amazon di [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)

1. Pilih **Bus**, **Bus acara**.

1. Di bawah **Bus acara khusus**, pilih **Buat**.

1. Berikan nama untuk bus acara Anda di bawah **Nama**. Format yang disarankan adalah **APMName- AWSIncidentDetectionResponse-EventBus**.

   Sebagai contoh, gunakan salah satu dari berikut ini jika Anda menggunakan Datadog atau Splunk:
   + **Datadog**: Datadog-AWSIncidentDetectionResponse-EventBus
   + **Belahan:** Splunk-AWSIncidentDetectionResponse-EventBus

## Langkah 3: Buat AWS Lambda fungsi untuk transformasi
<a name="example_integrating_notifications_step3"></a>

Fungsi Lambda mengubah peristiwa antara bus acara mitra di Langkah 1 dan bus acara khusus (atau default) dari Langkah 2. Transformasi fungsi Lambda cocok dengan aturan AWS Incident Detection dan Response yang dikelola.

**Buat AWS Lambda fungsi di AWS akun Anda**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di AWS Lambda konsol.

1. Pilih **Buat fungsi**.

1. Pilih tab **Penulis dari awal**.

1. Untuk **nama Fungsi**, masukkan nama menggunakan format`APMName-AWSIncidentDetectionResponse-LambdaFunction`.

   Berikut ini adalah contoh untuk Datadog dan Splunk:
   + **Datadog**: Datadog-AWSIncidentDetectionResponse-LambdaFunction
   + **Belahan:** Splunk-AWSIncidentDetectionResponse-LambdaFunction

1. Untuk **Runtime**, masukkan **Python 3.10**.

1. Biarkan bidang yang tersisa pada nilai default. Pilih **Buat fungsi**.

1. Pada halaman **edit Kode**, ganti konten fungsi Lambda default dengan fungsi dalam contoh kode berikut.

   Perhatikan komentar yang dimulai dengan \$1 dalam contoh kode berikut. Komentar-komentar ini menunjukkan nilai mana yang harus diubah.

   Templat **kode transformasi datadog**:

   ```
   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'])
   ```

   **Templat kode transformasi splunk**:

   ```
   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. Pilih **Deploy**.

1. Tambahkan **PutEvents**izin ke peran eksekusi Lambda untuk bus acara tempat Anda mengirim data yang diubah ke:

   1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di AWS Lambda konsol.

   1. Pilih fungsi, lalu pilih **Izin** pada tab **Konfigurasi**.

   1. Di bawah **Peran eksekusi**, pilih **nama Peran** untuk membuka peran eksekusi di AWS Identity and Access Management konsol.

   1. Di bawah **Kebijakan izin**, pilih nama kebijakan yang ada untuk membuka kebijakan.

   1. Di bawah **Izin yang ditentukan dalam kebijakan ini**, pilih **Edit**.

   1. Pada halaman **Editor kebijakan**, pilih **Tambahkan pernyataan baru**:

   1. **Editor Kebijakan** menambahkan pernyataan kosong baru yang mirip dengan berikut  
![\[Tangkapan layar editor kebijakan JSON di konsol IAM.\]](http://docs.aws.amazon.com/id_id/IDR/latest/userguide/images/iam-add-new-statement.png)

   1. Ganti pernyataan baru yang dibuat secara otomatis dengan yang berikut:

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

   1. **Sumber Daya** adalah ARN dari bus acara khusus yang Anda buat [Langkah 2: Buat bus acara khusus](#example_integrating_notifications_step2) atau ARN bus acara default Anda jika Anda menggunakan bus acara default dalam kode Lambda Anda.

1. Tinjau dan konfirmasikan bahwa izin yang diperlukan ditambahkan ke peran.

1. Pilih **Setel versi baru ini sebagai default**, lalu pilih **Simpan perubahan**.

**Apa yang diperlukan dari transformasi muatan?**

Pasangan kunci JSON:nilai berikut diperlukan jika peristiwa bus yang dicerna oleh AWS Incident Detection and Response.

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

Contoh berikut menunjukkan acara dari bus acara mitra sebelum dan sesudah itu diubah.

```
{
    "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"
      ]
    }
}
```

Perhatikan bahwa sebelum acara diubah, `detail-type` menunjukkan APM bahwa peringatan berasal, sumbernya dari APM mitra, dan `incident-detection-response-identifier` kuncinya tidak ada.

Fungsi Lambda mengubah peristiwa di atas dan memasukkannya ke bus acara khusus atau default target. Payload yang diubah sekarang menyertakan pasangan key:value yang diperlukan.

```
{
    "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"
      ]
    }
}
```

Perhatikan bahwa `detail-type` sekarang`ams.monitoring/generic-apm`, sumber sekarang`GenericAPMEvent`, dan di bawah detail ada pasangan key:value baru:. `incident-detection-response-identifier`

 Pada contoh sebelumnya, `incident-detection-response-identifier` nilai diambil dari nama peringatan di bawah jalur. `$.detail.meta.monitor.name` Jalur nama peringatan APM berbeda dari satu APM ke APM lainnya. Fungsi Lambda harus dimodifikasi untuk mengambil nama alarm dari jalur JSON acara mitra yang benar dan menggunakannya untuk nilai. `incident-detection-response-identifier`

Setiap nama unik yang ditetapkan diberikan kepada tim AWS Incident Detection and Response selama on-boarding. `incident-detection-response-identifier` Peristiwa yang memiliki nama tidak dikenal untuk `incident-detection-response-identifier` tidak diproses.

## Langkah 4: Buat EventBridge aturan Amazon khusus
<a name="example_integrating_notifications_step4"></a>

Bus acara mitra yang dibuat pada Langkah 1 memerlukan EventBridge aturan yang Anda buat. Aturan mengirimkan peristiwa yang diinginkan dari bus acara mitra ke fungsi Lambda yang dibuat pada Langkah 3.

Untuk panduan tentang menentukan EventBridge aturan Anda, lihat [ EventBridge Aturan Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html).

1. Buka EventBridge konsol Amazon di [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)

1. Pilih **Aturan**, lalu pilih bus acara mitra yang terkait dengan APM Anda. Berikut ini adalah contoh dari bus acara mitra:
   + **Datadog: aws**. partner/datadog.com/eventbus-nama
   + **Splunk:** aws. partner/signalfx.com/RandomString

1. Pilih **Buat aturan** untuk membuat EventBridge aturan baru.

1. Untuk nama aturan, masukkan nama dalam format berikut`APMName-AWS Incident Detection and Response-EventBridgeRule`, lalu pilih **Berikutnya**. Berikut ini adalah contoh nama:
   + **Datadog:** Datadog-AWSIncidentDetectionResponse-EventBridgeRule
   + **Belahan:** Splunk-AWSIncidentDetectionResponse-EventBridgeRule

1. Untuk **sumber Acara**, pilih **acara AWS atau acara EventBridge mitra**.

1. Tinggalkan **acara Sample** dan **metode Creation** sebagai nilai default.

1. Untuk **pola Acara**, pilih yang berikut ini:

   1. **Sumber acara:** EventBridge mitra.

   1. **Mitra:** Pilih Mitra APM Anda.

   1. **Jenis Acara:** Semua acara.

   Berikut ini adalah contoh pola acara:

   **Contoh pola acara Datadog**  
![\[Contoh pola acara Datadog.\]](http://docs.aws.amazon.com/id_id/IDR/latest/userguide/images/datadog-event-pattern.png)

   **Contoh pola acara Splunk**  
![\[Contoh pola acara Splunk.\]](http://docs.aws.amazon.com/id_id/IDR/latest/userguide/images/splunk-event-pattern.png)

1. Untuk **Target**, pilih yang berikut ini:

   1. **Jenis target:** AWS layanan

   1. **Pilih target: Pilih fungsi** Lambda.

   1. **Fungsi:** Nama fungsi Lambda yang Anda buat di Langkah 2.

1. Pilih **Berikutnya**, **Simpan aturan**.