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 yang 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 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, Anda juga dapat meneruskan kunci Cloud KMS bersama dengan parameter kunci API yang dienkripsi dengan kunci Cloud KMS dan dienkode base64. Untuk mengetahui detail tambahan tentang cara mengenkripsi parameter kunci API, lihat Endpoint enkripsi Cloud KMS API.
Persyaratan pipeline
- Langganan Pub/Sub sumber harus ada sebelum menjalankan pipeline.
- Topik yang belum diproses Pub/Sub harus ada sebelum menjalankan pipeline.
- URL Datadog harus dapat diakses dari jaringan pekerja Dataflow.
- Kunci API Datadog harus dibuat dan tersedia.
Parameter template
Parameter yang diperlukan
- inputSubscription: Langganan Pub/Sub untuk membaca input. Contoh,
projects/your-project-id/subscriptions/your-subscription-name
. - url: URL Datadog Logs API. URL ini harus dapat dirutekan dari VPC tempat pipeline berjalan. Lihat Mengirim log (https://docs.datadoghq.com/api/latest/logs/#send-logs) di dokumentasi Datadog untuk mengetahui informasi selengkapnya. Misalnya,
https://http-intake.logs.datadoghq.com
. - outputDeadletterTopic: Topik Pub/Sub yang akan meneruskan pesan yang tidak terkirim. Contoh,
projects/<PROJECT_ID>/topics/<TOPIC_NAME>
.
Parameter opsional
- apiKey: Kunci API Datadog. Anda harus memberikan nilai ini jika
apiKeySource
ditetapkan kePLAINTEXT
atauKMS
. Untuk mengetahui informasi selengkapnya, lihat Kunci API dan Aplikasi (https://docs.datadoghq.com/account_management/api-app-keys/) di dokumentasi Datadog. - batchCount: Ukuran batch untuk mengirim beberapa peristiwa ke Datadog. Defaultnya adalah
1
(tanpa pengelompokan). - paralelisme: Jumlah maksimum permintaan paralel. Defaultnya adalah
1
(tanpa paralelisme). - includePubsubMessage: Apakah akan menyertakan pesan Pub/Sub lengkap dalam payload. Defaultnya adalah
true
(semua elemen, termasuk elemen data, disertakan dalam payload). - apiKeyKMSEncryptionKey: Kunci Cloud KMS yang akan digunakan untuk mendekripsi Kunci API. Anda harus memberikan parameter ini jika
apiKeySource
ditetapkan keKMS
. Jika kunci Cloud KMS disediakan, Anda harus meneruskan Kunci API terenkripsi. Contohnya,projects/your-project-id/locations/global/keyRings/your-keyring/cryptoKeys/your-key-name
- apiKeySecretId: ID secret Secret Manager untuk Kunci API. Anda harus memberikan parameter ini jika
apiKeySource
ditetapkan keSECRET_MANAGER
. Contohnya,projects/your-project-id/secrets/your-secret/versions/your-secret-version
- apiKeySource: Sumber kunci API. Nilai berikut didukung:
PLAINTEXT
,KMS
, danSECRET_MANAGER
. Anda harus memberikan parameter ini jika menggunakan Secret Manager. JikaapiKeySource
disetel keKMS
, Anda juga harus memberikanapiKeyKMSEncryptionKey
danAPI Key
terenkripsi. JikaapiKeySource
ditetapkan keSECRET_MANAGER
, Anda juga harus memberikanapiKeySecretId
. JikaapiKeySource
ditetapkan kePLAINTEXT
, Anda juga harus memberikanapiKey
. - javascriptTextTransformGcsPath: URI Cloud Storage dari file .js yang menentukan fungsi yang ditentukan pengguna (UDF) JavaScript yang akan digunakan. Contoh,
gs://my-bucket/my-udfs/my_file.js
. - javascriptTextTransformFunctionName: Nama fungsi yang ditentukan pengguna (UDF) JavaScript yang akan digunakan. Misalnya, jika kode fungsi JavaScript Anda adalah
myTransform(inJson) { /*...do stuff...*/ }
, maka nama fungsinya adalahmyTransform
. Untuk contoh UDF JavaScript, lihat Contoh UDF (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples). - javascriptTextTransformReloadIntervalMinutes: Menentukan interval saat pekerja dapat memeriksa perubahan UDF JavaScript untuk memuat ulang file. Nilai default: 0.
Fungsi yang ditentukan pengguna
Secara opsional, Anda 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, diserialisasi sebagai string JSON.
- Output: data peristiwa yang akan dikirim ke endpoint Datadog Log. Output harus berupa string atau objek JSON yang di-string-kan.
Menjalankan template
Konsol
- Buka halaman Dataflow Create job from template. Buka Membuat tugas dari template
- Di kolom Nama tugas, masukkan nama tugas yang unik.
- Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region
default-nya adalah
us-central1
.Untuk mengetahui daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.
- Dari menu drop-down Template Dataflow, pilih the Pub/Sub to Datadog template.
- Di kolom parameter yang disediakan, masukkan nilai parameter 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 tugas unik pilihan AndaREGION_NAME
: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1
VERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi template terbaru, yang tersedia di folder induk tanpa tanggal 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 yang diberi tanggal di bucket— gs://dataflow-templates-REGION_NAME/
STAGING_LOCATION
: lokasi untuk menyiapkan 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...*/ }
, maka nama fungsinya 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 mengetahui 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 Google Cloud project tempat Anda ingin menjalankan tugas DataflowJOB_NAME
: nama tugas unik pilihan AndaLOCATION
: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1
VERSION
: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latest
untuk menggunakan versi template terbaru, yang tersedia di folder induk tanpa tanggal 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 yang diberi tanggal di bucket— gs://dataflow-templates-REGION_NAME/
STAGING_LOCATION
: lokasi untuk menyiapkan 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...*/ }
, maka nama fungsinya 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 berikutnya
- Pelajari template Dataflow.
- Lihat daftar template yang disediakan Google.