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

1. Pengantar

cb762f29e9183a3f.png 3c7ca8629bc25d9c.pngS 1c05e3d0c2bd2b45.pngS

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

Datadog adalah platform pemantauan dan keamanan untuk aplikasi cloud. Alat ini menyatukan pelacakan, metrik, dan log end-to-end sehingga 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.

Di 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 spesifiknya, 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 ke 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 Datadog dan pemberitahuan tentang penghapusan VM.

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 saluran Datadog

Pastikan saluran Datadog yang Anda buat di codelab pertama 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.pngS

Status saluran harus ACTIVE. Jika tidak, kembali ke codelab pertama dan ikuti langkah-langkah untuk membuat dan mengaktifkan saluran 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 beranda 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, buka bagian Integrations dan cari kartu integrasi Google Cloud:

cf1ffa6547fba3e4.png

Arahkan kursor ke Google Cloud Platform untuk membuka halaman Install:

31b365a31bc50cc8.pngS

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

92e475e4da7f826.pngS

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

66fdf2d26e4710d.pngS

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 satu menit atau lebih di Cloud Console. Setelah beberapa waktu (biasanya 10 menit), Anda juga akan melihat VM ini di Datadog pada dasbor Google Compute Engine di bagian Dashboards:

78a51374c1d0c11e.pngS

6. Membuat alur kerja

Setelah memiliki 2 VM yang berjalan, buat alur kerja yang akan merespons pemberitahuan dari monitor Datadog. Alur kerja ini bisa semburat yang Anda inginkan, tetapi dalam hal ini, alur kerja akan memeriksa jumlah instance VM yang berjalan dan jika turun di bawah 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 telah di-deploy, tetapi belum berjalan. Fungsi ini akan dijalankan oleh pemicu Eventarc saat pemberitahuan Datadog diterima.

7. Membuat pemicu Eventarc

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

Buat pemicu dengan saluran Datadog, jenis peristiwa, dan juga 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.

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

Untuk membuat monitor di Datadog, login ke Datadog. Arahkan kursor ke Monitors di menu utama dan 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. Dipicu saat metrik adalah below nilai minimum 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. Menguji monitor dan pemicu

Untuk menguji monitor Datadog, pemicu Eventarc, dan pada 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 telah dihapus di Konsol Google Cloud.

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

50f93d560b6c1973.pngS

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

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

Sistem akan merespons pemberitahuan tersebut dengan membuat instance VM baru dengan awalan datadog-instance-##.

Pada akhirnya, Anda akan tetap memiliki 2 VM dalam project. VM lain yang Anda buat di awal dan satu lagi dibuat oleh Workflows setelah pemberitahuan Datadog dikirimkan.

11e42028e7142690.pngS

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 Datadog dan pemberitahuan tentang penghapusan VM.