Template Pub/Sub ke Datadog adalah pipeline streaming yang membaca pesan dari langganan Pub/Sub dan menulis payload pesan ke Datadog menggunakan endpoint Datadog. Kasus penggunaan paling umum untuk template ini adalah mengekspor file log ke Datadog.
Sebelum menulis ke Datadog, Anda dapat menerapkan fungsi JavaScript yang ditentukan pengguna ke payload pesan. Setiap pesan yang mengalami kegagalan pemrosesan akan diteruskan ke topik Pub/Sub yang belum diproses untuk pemecahan masalah dan pemrosesan ulang lebih lanjut.
Sebagai lapisan perlindungan tambahan untuk kunci dan rahasia API, Anda juga dapat meneruskan kunci Cloud KMS bersama dengan parameter kunci API berenkode base64 yang dienkripsi dengan kunci Cloud KMS. Untuk mengetahui detail tambahan tentang mengenkripsi parameter kunci API, lihat endpoint enkripsi Cloud KMS API.
Persyaratan pipeline
- Langganan Pub/Sub sumber harus ada sebelum menjalankan pipeline.
- Topik Pub/Sub yang belum diproses harus ada sebelum menjalankan pipeline.
- URL Datadog harus dapat diakses dari jaringan pekerja Dataflow.
- Kunci Datadog API harus dibuat dan tersedia.
Parameter template
Parameter | Deskripsi |
---|---|
inputSubscription |
Langganan Pub/Sub untuk membaca input. Misalnya, projects/<project-id>/subscriptions/<subscription-name> . |
url |
URL Datadog Logs API. URL ini harus dapat dirutekan dari VPC tempat pipeline berjalan. Misalnya, https://http-intake.logs.datadoghq.com . Lihat Mengirim log dalam dokumentasi Datadog untuk informasi selengkapnya. |
apiKeySource |
Sumber kunci API. Nilai-nilai berikut didukung: PLAINTEXT , KMS , dan SECRET_MANAGER .
Anda harus memberikan parameter ini jika menggunakan Secret Manager.
Jika apiKeySource disetel ke KMS , Anda juga harus memberikan apiKeyKMSEncryptionKey dan API Key terenkripsi.
Jika apiKeySource ditetapkan ke SECRET_MANAGER , Anda juga harus memberikan apiKeySecretId .
Jika apiKeySource ditetapkan ke PLAINTEXT , Anda juga harus memberikan apiKey .
|
apiKeyKMSEncryptionKey |
Opsional: Kunci Cloud KMS untuk mendekripsi Kunci API. Anda harus memberikan parameter ini jika apiKeySource disetel ke KMS .
Jika kunci Cloud KMS diberikan, Anda harus meneruskan Kunci API yang dienkripsi. |
apiKey |
Opsional: Kunci Datadog API. Anda harus memberikan nilai ini jika apiKeySource disetel ke PLAINTEXT atau KMS .
Untuk informasi selengkapnya, lihat Kunci API dan Aplikasi dalam dokumentasi Datadog. |
apiKeySecretId |
Opsional: ID rahasia Secret Manager untuk Kunci API. Anda harus memberikan parameter ini jika apiKeySource disetel ke SECRET_MANAGER .
Gunakan format projects/<project-id>/secrets/<secret-name>/versions/<secret-version> . |
outputDeadletterTopic |
Topik Pub/Sub sebagai tujuan penerusan pesan yang tidak dapat dikirim. Misalnya, projects/<project-id>/topics/<topic-name> . |
javascriptTextTransformGcsPath |
Opsional:
URI Cloud Storage dari file .js yang menentukan fungsi yang ditentukan pengguna (UDF) JavaScript yang ingin Anda gunakan. Misalnya, gs://my-bucket/my-udfs/my_file.js .
|
javascriptTextTransformFunctionName |
Opsional:
Nama fungsi yang ditentukan pengguna (UDF) JavaScript yang ingin Anda gunakan.
Misalnya, jika kode fungsi JavaScript Anda adalah myTransform(inJson) { /*...do stuff...*/ } , nama fungsi adalah myTransform . Untuk contoh UDF JavaScript, lihat
Contoh UDF.
|
javascriptTextTransformReloadIntervalMinutes |
Opsional: Menentukan seberapa sering harus memuat ulang UDF, dalam hitungan menit. Jika nilainya lebih besar dari 0, Dataflow secara berkala akan memeriksa file UDF di Cloud Storage, dan memuat ulang UDF jika file diubah. Parameter ini memungkinkan Anda memperbarui UDF saat pipeline berjalan, tanpa perlu memulai ulang tugas. Jika nilainya adalah 0, pemuatan ulang UDF akan dinonaktifkan. Nilai defaultnya adalah 0. |
batchCount |
Opsional: Ukuran tumpukan untuk mengirim beberapa peristiwa ke Datadog. Defaultnya adalah 1 (tanpa pengelompokan). |
parallelism |
Opsional: Jumlah maksimum permintaan paralel. Defaultnya adalah 1 (tanpa paralelisme). |
includePubsubMessage |
Opsional: Sertakan pesan Pub/Sub lengkap dalam payload. Defaultnya adalah false (hanya elemen data yang disertakan dalam payload). |
Fungsi yang ditentukan pengguna
Anda juga dapat memperluas template ini dengan menulis fungsi yang ditentukan pengguna (UDF). Template memanggil UDF untuk setiap elemen input. Payload elemen diserialisasi sebagai string JSON. Untuk mengetahui informasi selengkapnya, lihat Membuat fungsi yang ditentukan pengguna untuk template Dataflow.
Spesifikasi fungsi
UDF memiliki spesifikasi berikut:
- Input: kolom data pesan Pub/Sub, yang diserialisasi sebagai string JSON.
- Output: data peristiwa yang akan dikirim ke endpoint Datadog Log. Output harus berupa string atau objek JSON string.
Menjalankan template
Konsol
- Buka halaman Create job from template Dataflow. Buka Buat tugas dari template
- Di kolom Job name, masukkan nama pekerjaan yang unik.
- Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region
default-nya adalah
us-central1
.Untuk daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.
- Dari menu drop-down Dataflow template, pilih the Pub/Sub to Datadog template.
- Di kolom parameter yang disediakan, masukkan parameter value Anda.
- Klik Run job.
gcloud
Di shell atau terminal Anda, jalankan template:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_PubSub_to_Datadog \ --region REGION_NAME \ --staging-location STAGING_LOCATION \ --parameters \ inputSubscription=projects/PROJECT_ID/subscriptions/INPUT_SUBSCRIPTION_NAME,\ apiKey=API_KEY,\ url=URL,\ outputDeadletterTopic=projects/PROJECT_ID/topics/DEADLETTER_TOPIC_NAME,\ javascriptTextTransformGcsPath=PATH_TO_JAVASCRIPT_UDF_FILE,\ javascriptTextTransformFunctionName=JAVASCRIPT_FUNCTION,\ batchCount=BATCH_COUNT,\ parallelism=PARALLELISM
Ganti kode berikut:
JOB_NAME
: nama pekerjaan unik pilihan AndaREGION_NAME
: region tempat Anda ingin men-deploy tugas Dataflow, misalnyaus-central1
VERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi terbaru template, yang tersedia di folder induk tidak bertanggal di bucket— gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat di folder induk bertanggal masing-masing dalam bucket— gs://dataflow-templates-REGION_NAME/
STAGING_LOCATION
: lokasi untuk staging file lokal (misalnya,gs://your-bucket/staging
)INPUT_SUBSCRIPTION_NAME
: nama langganan Pub/SubAPI_KEY
: Kunci API DatadogURL
: URL untuk endpoint Datadog (misalnya,https://http-intake.logs.datadoghq.com
)DEADLETTER_TOPIC_NAME
: nama topik Pub/SubJAVASCRIPT_FUNCTION
: nama fungsi yang ditentukan pengguna (UDF) JavaScript yang ingin Anda gunakanMisalnya, jika kode fungsi JavaScript Anda adalah
myTransform(inJson) { /*...do stuff...*/ }
, nama fungsi adalahmyTransform
. Untuk contoh UDF JavaScript, lihat Contoh UDF.PATH_TO_JAVASCRIPT_UDF_FILE
: URI Cloud Storage dari file.js
yang menentukan fungsi yang ditentukan pengguna (UDF) JavaScript yang ingin Anda gunakan—misalnya,gs://my-bucket/my-udfs/my_file.js
BATCH_COUNT
: ukuran batch yang akan digunakan untuk mengirim beberapa peristiwa ke DatadogPARALLELISM
: jumlah permintaan paralel yang akan digunakan untuk mengirim peristiwa ke Datadog
API
Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk informasi selengkapnya tentang API dan cakupan otorisasinya, lihat projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Cloud_PubSub_to_Datadog { "jobName": "JOB_NAME", "environment": { "ipConfiguration": "WORKER_IP_UNSPECIFIED", "additionalExperiments": [] }, "parameters": { "inputSubscription": "projects/PROJECT_ID/subscriptions/INPUT_SUBSCRIPTION_NAME", "apiKey": "API_KEY", "url": "URL", "outputDeadletterTopic": "projects/PROJECT_ID/topics/DEADLETTER_TOPIC_NAME", "javascriptTextTransformGcsPath": "PATH_TO_JAVASCRIPT_UDF_FILE", "javascriptTextTransformFunctionName": "JAVASCRIPT_FUNCTION", "batchCount": "BATCH_COUNT", "parallelism": "PARALLELISM" } }
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud tempat Anda ingin menjalankan tugas DataflowJOB_NAME
: nama pekerjaan unik pilihan AndaLOCATION
: region tempat Anda ingin men-deploy tugas Dataflow, misalnyaus-central1
VERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi terbaru template, yang tersedia di folder induk tidak bertanggal di bucket— gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00
, untuk menggunakan versi template tertentu, yang dapat ditemukan bertingkat di folder induk bertanggal masing-masing dalam bucket— gs://dataflow-templates-REGION_NAME/
STAGING_LOCATION
: lokasi untuk staging file lokal (misalnya,gs://your-bucket/staging
)INPUT_SUBSCRIPTION_NAME
: nama langganan Pub/SubAPI_KEY
: Kunci API DatadogURL
: URL untuk endpoint Datadog (misalnya,https://http-intake.logs.datadoghq.com
)DEADLETTER_TOPIC_NAME
: nama topik Pub/SubJAVASCRIPT_FUNCTION
: nama fungsi yang ditentukan pengguna (UDF) JavaScript yang ingin Anda gunakanMisalnya, jika kode fungsi JavaScript Anda adalah
myTransform(inJson) { /*...do stuff...*/ }
, nama fungsi adalahmyTransform
. Untuk contoh UDF JavaScript, lihat Contoh UDF.PATH_TO_JAVASCRIPT_UDF_FILE
: URI Cloud Storage dari file.js
yang menentukan fungsi yang ditentukan pengguna (UDF) JavaScript yang ingin Anda gunakan—misalnya,gs://my-bucket/my-udfs/my_file.js
BATCH_COUNT
: ukuran batch yang akan digunakan untuk mengirim beberapa peristiwa ke DatadogPARALLELISM
: jumlah permintaan paralel yang akan digunakan untuk mengirim peristiwa ke Datadog
Langkah selanjutnya
- Pelajari Template Dataflow.
- Lihat daftar template yang disediakan Google.