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

1. Pengantar

cb762f29e9183a3f.png 3c7ca8629bc25d9c.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.

Dalam codelab pertama ini, Anda akan mempelajari cara merutekan pemberitahuan pemantauan Datadog sederhana ke Google Cloud dengan Eventarc.

Yang akan Anda pelajari

  • Cara menemukan penyedia Datadog.
  • Cara menyiapkan saluran ke penyedia Datadog.
  • Cara membuat alur kerja untuk mencatat peristiwa.
  • Cara membuat pemicu Eventarc dengan saluran.
  • Cara membuat monitor Datadog.
  • Cara menguji monitor Datadog, pemicu Eventarc, dan alur kerja.

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

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. 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 membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (biasanya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri dan melihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan akan tetap ada selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus seluruh project. 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 dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.

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 \
  eventarc.googleapis.com \
  eventarcpublishing.googleapis.com \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. Menemukan penyedia Datadog

Penyedia Eventarc adalah layanan atau entity yang dapat memancarkan peristiwa langsung ke Google Cloud yang kemudian dirutekan ke project Anda. Penyedia pihak ketiga, seperti Datadog, adalah penyedia non-Google Cloud yang terintegrasi dengan Google Cloud melalui Eventarc.

Di Cloud Shell, jalankan perintah berikut untuk melihat daftar penyedia pihak ketiga dan Google Cloud:

gcloud eventarc providers list

Bagian ini mencantumkan penyedia pihak ketiga dan Google Cloud serta lokasi tempat penyedia tersebut tersedia:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

Anda dapat mempersempit daftar ke penyedia pihak ketiga dengan perintah ini:

gcloud eventarc providers list --filter='eventTypes.type!~^google*'

Anda akan melihat Datadog dalam daftar:

NAME: datadog
LOCATION: us-central1

Anda juga dapat menjelaskan penyedia Datadog untuk melihat peristiwa yang didukungnya:

gcloud eventarc providers describe datadog --location $REGION

displayName: Datadog
eventTypes:
- type: datadog.v1.alert
name: projects/project-id/locations/us-central1/providers/datadog

4. Menyiapkan channel

Anda perlu menyiapkan channel untuk mengintegrasikan project dengan penyedia. Hal ini melibatkan pembuatan channel, pengambilan detail channel, dan pengiriman detail tersebut ke penyedia. Setelah penyedia menginisialisasi koneksi ke channel, penyedia dapat mulai mengirim peristiwa ke project Anda.

Membuat channel

Anda dapat membuat saluran untuk penyedia Datadog menggunakan gcloud:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels create $CHANNEL_NAME \
   --provider datadog \
   --location $REGION

Anda juga dapat membuatnya dari bagian Channels di halaman Eventarc pada Konsol Google Cloud:

d03a7173b25e5ea6.png

Mengambil detail channel

Setelah channel dibuat, ambil detail channel dari gcloud:

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: PENDING
uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e
updateTime: '2022-03-09T09:53:48.290217299Z'

Demikian pula, Anda dapat melihat saluran dari Konsol Google Cloud:

80d8b2b6a46cb4c5.png

Status saluran menunjukkan status saluran. Nilainya dapat berupa salah satu dari berikut:

  • PENDING—Channel telah berhasil dibuat dan ada token aktivasi yang tersedia untuk membuat koneksi dengan penyedia. Untuk mengubah status channel dari PENDING menjadi ACTIVE, token harus diberikan kepada penyedia dan digunakan untuk menghubungkan channel dalam waktu 24 jam setelah pembuatan channel.
  • ACTIVE—Channel telah berhasil dihubungkan dengan penyedia. Saluran ACTIVE siap menerima dan merutekan peristiwa dari penyedia.
  • INACTIVE—Saluran tidak dapat menerima peristiwa atau diaktifkan kembali. Penyedia terputus dari saluran ini atau token aktivasi saluran telah berakhir dan penyedia tidak terhubung. Untuk membuat ulang koneksi dengan penyedia, Anda harus membuat channel baru untuk penyedia tersebut.

Token aktivasi adalah token sekali pakai yang dibatasi waktu, yang digunakan untuk membuat koneksi antara project penyedia dan pelanggan. Hanya penyedia tertentu, yang dipilih selama proses pembuatan channel, yang dapat menggunakan token. Token ini berlaku selama 24 jam setelah pembuatan channel. Setelah 24 jam, channel akan menjadi INACTIVE.

Mengirim detail saluran ke penyedia

Anda harus mengirimkan detail channel berikut ke penyedia Datadog:

  • Nama channel (mis. projects/project-id/locations/us-central1/channels/datadog-channel)
  • Token aktivasi (mis. so5g4Kdasda7y2MSasdaGn8njB2)

Login ke Datadog, buka halaman integrasi, dan pastikan integrasi Google Eventarc telah diinstal:

9736bd517e1fa19a.png

Di bagian konfigurasi Google Eventarc, masukkan nama lengkap saluran dan token aktivasi:

a17f522075cdd92e.png

Sekarang Anda akan melihat saluran dalam daftar saluran dan setelah beberapa detik, Anda juga akan melihat saluran menjadi aktif di Konsol Google Cloud:

8399d528ccbd4c20.png

Sekarang, Anda siap menggunakan channel.

5. Membuat alur kerja

Anda memerlukan tujuan di Google Cloud untuk menerima peristiwa dari penyedia. Eventarc mendukung sejumlah tujuan peristiwa seperti Cloud Run, Workflows, layanan Kubernetes. Dalam hal ini, deploy alur kerja untuk mencatat peristiwa yang diterima.

Buat file workflow-datadog1.yaml dengan konten berikut:

main:
  params: [event]
  steps:
  - logStep:
      call: sys.log
      args:
        data: ${event}

Perhatikan bahwa alur kerja menerima peristiwa sebagai parameter. Peristiwa ini akan berasal dari pemantauan Datadog melalui Eventarc. Setelah peristiwa diterima, alur kerja hanya mencatat peristiwa yang diterima.

Deploy alur kerja:

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

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

6. Membuat pemicu Eventarc

Sekarang Anda siap menghubungkan peristiwa dari penyedia Datadog ke Workflows dengan pemicu Eventarc.

Mengonfigurasi akun layanan

Anda memerlukan akun layanan dengan peran eventarc.eventReceiver saat membuat pemicu. Anda dapat membuat akun layanan khusus atau menggunakan akun layanan komputasi default.

Untuk mempermudah, gunakan akun layanan komputasi default dan berikan peran eventarc.eventReceiver:

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

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
    --role roles/eventarc.eventReceiver

Membuat pemicu

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

gcloud eventarc triggers create datadog-trigger1 \
  --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-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

7. Membuat monitor Datadog

Sekarang Anda akan membuat monitor Datadog dan menghubungkannya ke Eventarc.

Monitor ini akan menjadi monitor jenis Hello World dengan nilai default. Anda akan memicunya secara manual untuk membuat pemberitahuan pemantauan yang pada gilirannya akan membuat peristiwa Eventarc di Google Cloud.

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, gunakan nilai default untuk langkah 1 dan 2.

  • Pada langkah 3, tetapkan Alert threshold ke 1
  • Pada langkah 4, tetapkan Test monitor for Eventarc sebagai nama monitor dan tetapkan Notify your team ke @eventarc_<your-project-id>_<your-region>_<your-channel-name>

Biarkan halaman monitor tetap terbuka untuk langkah berikutnya saat Anda menguji monitor.

8. Memantau dan memicu pengujian

Untuk menguji monitor Datadog dan pemicu Eventarc, Anda akan memicu monitor secara manual.

Di bagian bawah halaman pembuatan monitor, klik tombol Test Notifications:

32ccf1cc47b01150.png

Kemudian, klik tombol Run Test:

7f2ff70ec673007b.png

Hal ini akan menyimulasikan transisi status di monitor dan memicu peristiwa Eventarc.

Periksa alur kerja workflow-datadog1. Anda akan melihat bahwa ada eksekusi baru:

adf7cd97ca2e8da7.png

Periksa detail eksekusi. Anda akan melihat jenis peristiwa Datadog datadog.v1.alert yang dihasilkan dari pemberitahuan pemantauan di input alur kerja dan juga di log:

dc78fd8460e5fc0e.png

9. Selamat

Selamat, Anda telah menyelesaikan codelab! Anda dapat melanjutkan ke codelab kedua untuk mempelajari cara merespons pemberitahuan pemantauan Datadog dengan Workflows.

Yang telah kita bahas

  • Cara menemukan penyedia Datadog.
  • Cara menyiapkan saluran ke penyedia Datadog.
  • Cara membuat alur kerja untuk mencatat peristiwa.
  • Cara membuat pemicu Eventarc dengan saluran.
  • Cara membuat monitor Datadog.
  • Cara menguji monitor Datadog, pemicu Eventarc, dan alur kerja.