Merutekan pemberitahuan pemantauan Datadog ke Google Cloud dengan Eventarc (Bagian 2)

1. Pengantar

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png 1c05e3d0c2bd2b45.png

Eventarc memudahkan Anda menghubungkan layanan Google Cloud dengan peristiwa dari berbagai sumber. Layanan ini memungkinkan Anda membangun arsitektur berbasis peristiwa yang microservicenya dikaitkan secara longgar dan didistribusikan. Layanan ini juga menangani penyerapan, pengiriman, keamanan, otorisasi, dan penanganan error untuk Anda, sehingga meningkatkan ketangkasan developer dan ketahanan aplikasi.

Datadog adalah platform pemantauan dan keamanan untuk aplikasi cloud. Alat ini menggabungkan trace, metrik, dan log end-to-end untuk membuat aplikasi, infrastruktur, dan layanan pihak ketiga Anda dapat diamati.

Workflows adalah platform orkestrasi terkelola sepenuhnya yang mengeksekusi layanan dalam urutan yang Anda tentukan yang disebut alur kerja. Alur kerja ini dapat menggabungkan layanan yang dihosting di Cloud Run atau Cloud Functions, layanan Google Cloud seperti Cloud Vision AI dan BigQuery, serta API berbasis HTTP apa pun.

Dalam codelab pertama, Anda telah mempelajari cara merutekan pemberitahuan pemantauan Datadog ke Google Cloud dengan Eventarc. Dalam codelab kedua ini, Anda akan mempelajari cara merespons pemberitahuan pemantauan Datadog dengan Workflows. Lebih khusus lagi, Anda akan membuat 2 Virtual Machine Compute Engine dan memantaunya dengan monitor Datadog. Setelah 1 VM dihapus, Anda akan menerima pemberitahuan dari Datadog ke Workflows melalui Eventarc. Selanjutnya, Workflows akan membuat ulang VM yang dihapus untuk mengembalikan jumlah VM yang berjalan menjadi 2.

Yang akan Anda pelajari

  • Cara mengaktifkan integrasi Google Cloud Datadog.
  • Cara membuat alur kerja untuk memeriksa dan membuat VM Compute Engine.
  • Cara menghubungkan pemberitahuan pemantauan Datadog ke Workflows dengan Eventarc.
  • Cara membuat monitor dan pemberitahuan Datadog saat VM dihapus.

2. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Nama project adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API, dan Anda dapat memperbaruinya kapan saja.
  • Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis menghasilkan string unik; biasanya Anda tidak peduli dengan kata-katanya. Pada sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai PROJECT_ID). Jadi, jika Anda tidak menyukainya, buat ID acak lain, atau, Anda dapat mencoba sendiri dan melihat apakah tersedia. Kemudian file akan "dibekukan" setelah project dibuat.
  • Ada nilai ketiga, Nomor Project yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan API/resource Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk menonaktifkan resource agar tidak menimbulkan penagihan di luar tutorial ini, ikuti petunjuk "pembersihan" yang ada di akhir codelab. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:

55efc1aaa7a4d3ad.png

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

7ffe5cbb04455448.png

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.

Menyiapkan gcloud

Di Cloud Shell, tetapkan project ID Anda dan simpan sebagai variabel PROJECT_ID.

Selain itu, tetapkan variabel REGION ke us-central1. Ini adalah region tempat Anda akan membuat resource nanti.

PROJECT_ID=[YOUR-PROJECT-ID]
REGION=us-central1
gcloud config set core/project $PROJECT_ID

Mengaktifkan API

Aktifkan semua layanan yang diperlukan:

gcloud services enable \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. Memverifikasi channel Datadog

Pastikan channel Datadog yang Anda buat di codelab pertama sudah aktif. Di Cloud Shell, jalankan perintah berikut untuk mengambil detail saluran:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels describe $CHANNEL_NAME --location $REGION

Outputnya akan mirip dengan berikut ini:

activationToken: so5g4Kdasda7y2MSasdaGn8njB2
createTime: '2022-03-09T09:53:42.428978603Z'
name: projects/project-id/locations/us-central1/channels/datadog-channel
provider: projects/project-id/locations/us-central1/providers/datadog
pubsubTopic: projects/project-id/topics/eventarc-channel-us-central1-datadog-channel-077
state: ACTIVE
uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e
updateTime: '2022-03-09T09:53:48.290217299Z'

Anda juga dapat melihat status saluran di Konsol Google Cloud:

8399d528ccbd4c20.png

Status saluran harus ACTIVE. Jika tidak, kembali ke codelab pertama dan ikuti langkah-langkah untuk membuat dan mengaktifkan channel dengan Datadog.

4. Mengaktifkan integrasi Google Cloud Datadog

Untuk menggunakan Datadog guna memantau project, Anda harus mengaktifkan API yang diperlukan untuk Datadog, membuat akun layanan, dan menghubungkan akun layanan ke Datadog.

Mengaktifkan API untuk Datadog

gcloud services enable compute.googleapis.com \
  cloudasset.googleapis.com \
  monitoring.googleapis.com

Membuat akun layanan

Integrasi Google Cloud Datadog menggunakan akun layanan untuk melakukan panggilan ke Cloud Logging API guna mengumpulkan metrik tingkat node dari instance Compute Engine Anda.

Buat akun layanan untuk Datadog:

DATADOG_SA_NAME=datadog-service-account

gcloud iam service-accounts create $DATADOG_SA_NAME \
    --display-name "Datadog Service Account"

Aktifkan akun layanan Datadog untuk mengumpulkan metrik, tag, peristiwa, dan label pengguna dengan memberikan peran IAM berikut:

DATADOG_SA_EMAIL=$DATADOG_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$DATADOG_SA_EMAIL \
    --role roles/cloudasset.viewer

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$DATADOG_SA_EMAIL \
    --role roles/compute.viewer

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$DATADOG_SA_EMAIL \
    --role roles/monitoring.viewer

Buat dan download kunci akun layanan Anda memerlukan file kunci untuk menyelesaikan integrasi dengan Datadog.

Buat file kunci akun layanan di direktori utama Cloud Shell Anda:

gcloud iam service-accounts keys create ~/key.json \
  --iam-account $DATADOG_SA_EMAIL

Di Cloud Shell, klik More ⁝, lalu pilih Download File. Di kolom File path, masukkan key.json. Untuk mendownload file kunci, klik Download.

Menghubungkan akun layanan ke Datadog

Di akun Datadog Anda, buka bagian Integrations, lalu telusuri kartu integrasi Google Cloud:

cf1ffa6547fba3e4.png

Arahkan kursor ke Google Cloud Platform untuk membuka halaman Install:

31b365a31bc50cc8.png

Instal integrasi dengan mengupload kunci akun layanan di bagian Upload Private Key File, lalu klik Install Integration:

92e475e4da7f826.png

Setelah Anda menyelesaikan integrasi, Datadog akan otomatis membuat sejumlah dasbor terkait Google Cloud di bagian Dashboards:

66fdf2d26e4710d.png

5. Membuat VM Compute Engine

Selanjutnya, buat beberapa Virtual Machine (VM) Compute Engine. Anda akan memantau VM ini dengan monitor Datadog dan merespons pemberitahuan Datadog dengan alur kerja di Google Cloud.

Buat 2 VM Compute Engine:

gcloud compute instances create instance-1 instance-2 --zone us-central1-a

Anda akan melihat VM yang dibuat dan berjalan dalam waktu sekitar satu menit di Konsol Cloud. Setelah beberapa saat (biasanya 10 menit), Anda juga akan melihat VM ini di Datadog di dasbor Google Compute Engine di bagian Dashboards:

78a51374c1d0c11e.png

6. Membuat alur kerja

Setelah 2 VM berjalan, buat alur kerja yang akan merespons pemberitahuan dari monitor Datadog. Alur kerja dapat dibuat sesulit yang Anda inginkan, tetapi dalam kasus ini, alur kerja akan memeriksa jumlah instance VM yang berjalan dan jika jumlahnya kurang dari 2, alur kerja akan membuat instance VM baru untuk memastikan ada 2 VM yang berjalan setiap saat.

Buat file workflow-datadog2.yaml dengan konten berikut:

main:
  params: [event]
  steps:
  - init:
      assign:
      - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
      - zone: "us-central1-a"
      - minInstanceCount: 2
      - namePattern: "datadog-instance-##"
  - listInstances:
      call: googleapis.compute.v1.instances.list
      args:
        project: ${projectId}
        zone: ${zone}
      result: listResult
  - getInstanceCount:
      steps:
          - initInstanceCount:
              assign:
                - instanceCount: 0
          - setInstanceCount:
              switch:
                - condition: ${"items" in listResult}
                  steps:
                    - stepA:
                        assign:
                          - instanceCount: ${len(listResult.items)}
  - findDiffInstanceCount:
      steps:
        - assignDiffInstanceCount:
            assign:
              - diffInstanceCount: ${minInstanceCount - instanceCount}
        - logDiffInstanceCount:
            call: sys.log
            args:
              data: ${"instanceCount->" + string(instanceCount) + " diffInstanceCount->" + string(diffInstanceCount)}
        - endEarlyIfNeeded:
            switch:
              - condition: ${diffInstanceCount < 1}
                next: returnResult
  - bulkInsert:
      call: googleapis.compute.v1.instances.bulkInsert
      args:
          project: ${projectId}
          zone: ${zone}
          body:
              count: ${diffInstanceCount}
              namePattern: ${namePattern}
              instanceProperties:
                  machineType: "e2-micro"
                  disks:
                  - autoDelete: true
                    boot: true
                    initializeParams:
                      sourceImage: projects/debian-cloud/global/images/debian-10-buster-v20220310
                  networkInterfaces:
                  - network: "global/networks/default"
      result: bulkInsertResult
  - returnResult:
      return: ${bulkInsertResult}

Perhatikan bahwa alur kerja menerima peristiwa sebagai parameter. Peristiwa ini akan berasal dari pemantauan Datadog melalui Eventarc. Setelah peristiwa diterima, alur kerja akan memeriksa jumlah instance yang berjalan dan membuat instance VM baru, jika diperlukan.

Deploy alur kerja:

WORKFLOW_NAME=workflow-datadog2
gcloud workflows deploy $WORKFLOW_NAME \
  --source workflow-datadog2.yaml \
  --location $REGION

Alur kerja di-deploy, tetapi belum berjalan. Fungsi ini akan dieksekusi oleh pemicu Eventarc saat pemberitahuan Datadog diterima.

7. Membuat pemicu Eventarc

Sekarang Anda siap menghubungkan peristiwa dari penyedia Datadog ke Workflows dengan pemicu Eventarc. Anda akan menggunakan channel dan akun layanan yang Anda siapkan di codelab pertama.

Buat pemicu dengan channel Datadog, jenis peristiwa, dan tujuan alur kerja:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

gcloud eventarc triggers create datadog-trigger2 \
  --location $REGION \
  --destination-workflow $WORKFLOW_NAME \
  --destination-workflow-location $REGION \
  --channel $CHANNEL_NAME \
  --event-filters type=datadog.v1.alert \
  --service-account $PROJECT_NUMBER-compute@developer.gserviceaccount.com

Anda dapat mencantumkan pemicu untuk melihat bahwa pemicu yang baru dibuat sudah aktif:

gcloud eventarc triggers list --location $REGION

NAME: datadog-trigger2
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog2
ACTIVE: Yes

8. Membuat monitor Datadog

Sekarang Anda akan membuat monitor Datadog dan menghubungkannya ke Eventarc.

Monitor akan memeriksa jumlah VM Compute Engine yang berjalan dan memberikan pemberitahuan jika jumlahnya kurang dari 2.

Untuk membuat monitor di Datadog, login ke Datadog. Arahkan kursor ke Monitors di menu utama, lalu klik New Monitor di submenu. Ada banyak jenis monitor. Pilih jenis monitor Metric.

Di halaman New Monitor, buat monitor dengan hal berikut:

  1. Pilih metode deteksi: Threshold.
  2. Tentukan metrik: gcp.gce.instance.is_running dari (di mana saja) sum by (semuanya)
  3. Tetapkan kondisi pemberitahuan:
  4. Picu saat metrik below batas at least once selama 5 minutes terakhir
  5. Nilai minimum pemberitahuan: < 2
  6. Beri tahu tim Anda: @eventarc_<your-project-id>_<your-region>_<your-channel-name>
  7. Contoh Nama monitor: Compute Engine instances < 2

Sekarang, tekan Create di bagian bawah untuk membuat monitor.

9. Memantau dan memicu pengujian

Untuk menguji monitor Datadog, pemicu Eventarc, dan akhirnya alur kerja, Anda akan menghapus salah satu VM:

gcloud compute instances delete instance-2 --zone us-central1-a

Setelah beberapa detik, Anda akan melihat instance dihapus di Konsol Google Cloud.

Ada sedikit latensi agar perubahan ini muncul di Datadog. Setelah beberapa saat (biasanya 10 menit), Anda akan melihat monitor di Datadog untuk mendeteksi dan memberikan pemberitahuan tentang hal ini di bagian Manage Monitors:

50f93d560b6c1973.png

Setelah pemberitahuan monitor Datadog muncul, Anda akan melihat pemberitahuan tersebut masuk ke Workflows melalui Eventarc. Jika Anda memeriksa log Alur Kerja, Anda akan melihat bahwa Alur Kerja memeriksa untuk mengetahui perbedaan antara jumlah instance saat ini dan jumlah instance yang diharapkan:

2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1

Sebagai respons terhadap pemberitahuan tersebut, instance VM baru dengan awalan datadog-instance-## akan dibuat.

Pada akhirnya, Anda akan tetap memiliki 2 VM dalam project, satu yang Anda buat pada awalnya dan yang lainnya dibuat oleh Workflows setelah pemberitahuan Datadog.

11e42028e7142690.png

10. Selamat

Selamat, Anda telah menyelesaikan codelab!

Yang telah kita bahas

  • Cara mengaktifkan integrasi Google Cloud Datadog.
  • Cara membuat alur kerja untuk memeriksa dan membuat VM Compute Engine.
  • Cara menghubungkan pemberitahuan pemantauan Datadog ke Workflows dengan Eventarc.
  • Cara membuat monitor dan pemberitahuan Datadog saat VM dihapus.