Pub/Sub ke template Splunk

Template Pub/Sub ke Splunk adalah pipeline streaming yang membaca pesan dari langganan Pub/Sub dan menulis payload pesan ke Splunk menggunakan HTTP Event Collector (HEC) Splunk. Kasus penggunaan paling umum dari template ini adalah mengekspor log ke Splunk. Untuk melihat contoh alur kerja dasar, lihat Men-deploy ekspor log siap produksi ke Splunk menggunakan Dataflow.

Sebelum menulis ke Splunk, Anda juga 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 token HEC, Anda juga dapat meneruskan kunci Cloud KMS bersama dengan parameter token HEC berenkode base64 yang dienkripsi dengan kunci Cloud KMS. Lihat endpoint enkripsi Cloud KMS API untuk mengetahui detail tambahan tentang cara mengenkripsi parameter token HEC Anda.

Persyaratan pipeline

  • Langganan Pub/Sub sumber harus ada sebelum menjalankan pipeline.
  • Topik Pub/Sub yang belum diproses harus ada sebelum menjalankan pipeline.
  • Endpoint Splunk HEC harus dapat diakses dari jaringan pekerja Dataflow.
  • Token HEC Splunk harus dibuat dan tersedia.

Parameter template

Parameter Deskripsi
inputSubscription Langganan Pub/Sub tempat untuk membaca input. Misalnya, projects/<project-id>/subscriptions/<subscription-name>.
token Opsional: Token autentikasi Splunk HEC. Harus diberikan jika parameter tokenSource disetel ke PLAINTEXT atau KMS.
url URL HEC Splunk. Link ini harus dapat dirutekan dari VPC tempat pipeline berjalan. Misalnya, https://splunk-hec-host:8088.
outputDeadletterTopic Topik Pub/Sub untuk meneruskan 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 Splunk. Default 1 (tanpa pengelompokan).
parallelism Opsional: Jumlah maksimum permintaan paralel. Default 1 (tanpa paralelisme).
disableCertificateValidation Opsional: Nonaktifkan validasi sertifikat SSL. Salah default (validasi diaktifkan). Jika true (benar), sertifikat tidak akan divalidasi (semua sertifikat dipercaya) dan parameter `rootCaCertificatePath` akan diabaikan.
includePubsubMessage Opsional: Sertakan pesan Pub/Sub lengkap dalam payload. Default false (hanya elemen data yang disertakan dalam payload).
tokenSource Sumber token. Salah satu dari PLAINTEXT, KMS, atau SECRET_MANAGER. Parameter ini harus disediakan jika Secret Manager digunakan. Jika tokenSource disetel ke KMS, tokenKMSEncryptionKey dan token yang dienkripsi harus diberikan. Jika tokenSource disetel ke SECRET_MANAGER, tokenSecretId harus diberikan. Jika tokenSource disetel ke PLAINTEXT, token harus diberikan.
tokenKMSEncryptionKey Opsional: Kunci Cloud KMS untuk mendekripsi string token HEC. Parameter ini harus diberikan jika tokenSource ditetapkan ke KMS. Jika kunci Cloud KMS diberikan, string token HEC harus diteruskan dalam mode terenkripsi.
tokenSecretId Opsional: ID rahasia Secret Manager untuk token. Parameter ini harus diberikan jika tokenSource disetel ke SECRET_MANAGER. Harus dalam format projects/<project-id>/secrets/<secret-name>/versions/<secret-version>.
rootCaCertificatePath Opsional: URL lengkap ke sertifikat CA root di Cloud Storage. Misalnya, gs://mybucket/mycerts/privateCA.crt. Sertifikat yang diberikan di Cloud Storage harus dienkode dengan DER dan boleh diberikan dalam encoding biner atau yang dapat dicetak (Base64). Jika sertifikat disediakan dalam encoding Base64, sertifikat harus dibatasi di awal dengan -----BEGIN CERTIFICATE-----, dan harus dibatasi di bagian akhir dengan -----END CERTIFICATE-----. Jika parameter ini diberikan, file sertifikat CA pribadi ini akan diambil dan ditambahkan ke trust store pekerja Dataflow untuk memverifikasi sertifikat SSL endpoint Splunk HEC. Jika parameter ini tidak diberikan, trust store default akan digunakan.
enableBatchLogs Opsional: Menentukan apakah log harus diaktifkan untuk batch yang ditulis ke Splunk. Default: true.
enableGzipHttpCompression Opsional: Menentukan apakah permintaan HTTP yang dikirim ke Splunk HEC harus dikompresi (konten gzip dienkode). Default: true.

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 peristiwa Splunk HEC. Output harus berupa string atau objek JSON string.

Menjalankan template

Konsol

  1. Buka halaman Create job from template Dataflow.
  2. Buka Buat tugas dari template
  3. Di kolom Job name, masukkan nama pekerjaan yang unik.
  4. 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.

  5. Dari menu drop-down Dataflow template, pilih the Pub/Sub to Splunk template.
  6. Di kolom parameter yang disediakan, masukkan parameter value Anda.
  7. Opsional: Untuk beralih dari pemrosesan tepat satu kali ke mode streaming minimal satu kali, pilih Minimal Sekali.
  8. 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_Splunk \
    --region REGION_NAME \
    --staging-location STAGING_LOCATION \
    --parameters \
inputSubscription=projects/PROJECT_ID/subscriptions/INPUT_SUBSCRIPTION_NAME,\
token=TOKEN,\
url=URL,\
outputDeadletterTopic=projects/PROJECT_ID/topics/DEADLETTER_TOPIC_NAME,\
javascriptTextTransformGcsPath=PATH_TO_JAVASCRIPT_UDF_FILE,\
javascriptTextTransformFunctionName=JAVASCRIPT_FUNCTION,\
batchCount=BATCH_COUNT,\
parallelism=PARALLELISM,\
disableCertificateValidation=DISABLE_VALIDATION,\
rootCaCertificatePath=ROOT_CA_CERTIFICATE_PATH

Ganti kode berikut:

  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • STAGING_LOCATION: lokasi untuk staging file lokal (misalnya, gs://your-bucket/staging)
  • INPUT_SUBSCRIPTION_NAME: nama langganan Pub/Sub
  • TOKEN: Token Http Event Collector Splunk
  • URL: Jalur URL untuk Http Event Collector Splunk (misalnya, https://splunk-hec-host:8088)
  • DEADLETTER_TOPIC_NAME: nama topik Pub/Sub
  • JAVASCRIPT_FUNCTION: 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.

  • 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 Splunk
  • PARALLELISM: jumlah permintaan paralel yang akan digunakan untuk mengirim peristiwa ke Splunk
  • DISABLE_VALIDATION: true jika Anda ingin menonaktifkan validasi sertifikat SSL
  • ROOT_CA_CERTIFICATE_PATH: jalur ke sertifikat CA root di Cloud Storage (misalnya, gs://your-bucket/privateCA.crt)

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_Splunk
{
   "jobName": "JOB_NAME",
   "environment": {
       "ipConfiguration": "WORKER_IP_UNSPECIFIED",
       "additionalExperiments": []
   },
   "parameters": {
       "inputSubscription": "projects/PROJECT_ID/subscriptions/INPUT_SUBSCRIPTION_NAME",
       "token": "TOKEN",
       "url": "URL",
       "outputDeadletterTopic": "projects/PROJECT_ID/topics/DEADLETTER_TOPIC_NAME",
       "javascriptTextTransformGcsPath": "PATH_TO_JAVASCRIPT_UDF_FILE",
       "javascriptTextTransformFunctionName": "JAVASCRIPT_FUNCTION",
       "batchCount": "BATCH_COUNT",
       "parallelism": "PARALLELISM",
       "disableCertificateValidation": "DISABLE_VALIDATION",
       "rootCaCertificatePath": "ROOT_CA_CERTIFICATE_PATH"
   }
}

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • STAGING_LOCATION: lokasi untuk staging file lokal (misalnya, gs://your-bucket/staging)
  • INPUT_SUBSCRIPTION_NAME: nama langganan Pub/Sub
  • TOKEN: Token Http Event Collector Splunk
  • URL: Jalur URL untuk Http Event Collector Splunk (misalnya, https://splunk-hec-host:8088)
  • DEADLETTER_TOPIC_NAME: nama topik Pub/Sub
  • JAVASCRIPT_FUNCTION: 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.

  • 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 Splunk
  • PARALLELISM: jumlah permintaan paralel yang akan digunakan untuk mengirim peristiwa ke Splunk
  • DISABLE_VALIDATION: true jika Anda ingin menonaktifkan validasi sertifikat SSL
  • ROOT_CA_CERTIFICATE_PATH: jalur ke sertifikat CA root di Cloud Storage (misalnya, gs://your-bucket/privateCA.crt)

Langkah selanjutnya