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 yang mendasarinya, 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 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 yang dienkripsi dengan kunci Cloud KMS dan dienkode base64. Lihat endpoint enkripsi Cloud KMS API untuk mengetahui detail tambahan tentang mengenkripsi parameter token HEC Anda.
Persyaratan pipeline
- Langganan Pub/Sub sumber harus ada sebelum menjalankan pipeline.
- Topik yang belum diproses Pub/Sub 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 yang diperlukan
- inputSubscription: Langganan Pub/Sub untuk membaca input. Contoh,
projects/your-project-id/subscriptions/your-subscription-name
. - url: URL HEC Splunk. URL harus dapat dirutekan dari VPC tempat pipeline berjalan. Contoh,
https://splunk-hec-host:8088
. - outputDeadletterTopic: Topik Pub/Sub yang akan meneruskan pesan yang tidak terkirim. Contoh,
projects/<PROJECT_ID>/topics/<TOPIC_NAME>
.
Parameter opsional
- token: Token autentikasi Splunk HEC. Harus diberikan jika parameter
tokenSource
ditetapkan kePLAINTEXT
atauKMS
. - batchCount: Ukuran batch untuk mengirim beberapa peristiwa ke Splunk. Default-nya adalah
1
(tanpa pengelompokan). - disableCertificateValidation: Nonaktifkan validasi sertifikat SSL. Default
false
(validasi diaktifkan). Jikatrue
, sertifikat tidak divalidasi (semua sertifikat dipercaya) dan parameterrootCaCertificatePath
diabaikan. - paralelisme: Jumlah maksimum permintaan paralel. Nilai defaultnya adalah
1
(tanpa paralelisme). - includePubsubMessage: Menyertakan pesan Pub/Sub lengkap dalam payload. Default
false
(hanya elemen data yang disertakan dalam payload). - tokenKMSEncryptionKey: Kunci Cloud KMS yang akan digunakan untuk mendekripsi string token HEC. Parameter ini harus diberikan saat tokenSource disetel ke KMS. Jika kunci Cloud KMS diberikan, string token HEC harus diteruskan dalam bentuk terenkripsi. Contoh,
projects/your-project-id/locations/global/keyRings/your-keyring/cryptoKeys/your-key-name
. - tokenSecretId: ID secret Secret Manager untuk token. Parameter ini harus diberikan jika tokenSource disetel ke
SECRET_MANAGER
. Misalnya,projects/your-project-id/secrets/your-secret/versions/your-secret-version
. - tokenSource: Sumber token. Nilai berikut diizinkan:
PLAINTEXT
,KMS
, danSECRET_MANAGER
. Anda harus memberikan parameter ini saat Secret Manager digunakan. JikatokenSource
disetel keKMS
,tokenKMSEncryptionKey
, dan dienkripsi, makatoken
harus diberikan. JikatokenSource
ditetapkan keSECRET_MANAGER
,tokenSecretId
harus diberikan. JikatokenSource
ditetapkan kePLAINTEXT
,token
harus diberikan. - rootCaCertificatePath: URL lengkap ke sertifikat CA root di Cloud Storage. Sertifikat yang disediakan di Cloud Storage harus dienkode dengan DER dan dapat disediakan dalam encoding biner atau yang dapat dicetak (Base64). Jika sertifikat diberikan dalam encoding Base64, sertifikat harus dibatasi di awal dengan -----BEGIN CERTIFICATE-----, dan harus dibatasi di akhir dengan -----END CERTIFICATE-----. Jika parameter ini diberikan, file sertifikat CA pribadi ini akan diambil dan ditambahkan ke trust store worker Dataflow untuk memverifikasi sertifikat SSL endpoint Splunk HEC. Jika parameter ini tidak diberikan, trust store default akan digunakan. Contoh,
gs://mybucket/mycerts/privateCA.crt
. - enableBatchLogs: Menentukan apakah log harus diaktifkan untuk batch yang ditulis ke Splunk. Default:
true
. - enableGzipHttpCompression: Menentukan apakah permintaan HTTP yang dikirim ke Splunk HEC harus dikompresi (encoding konten gzip). Default:
true
. - 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 peristiwa Splunk HEC. 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 Splunk template.
- Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
- Opsional: Untuk beralih dari pemrosesan tepat satu kali ke mode streaming minimal satu kali, pilih Minimal Satu Kali.
- 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 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/SubTOKEN
: Token Http Event Collector SplunkURL
: jalur URL untuk Http Event Collector Splunk (misalnya,https://splunk-hec-host:8088
)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 SplunkPARALLELISM
: jumlah permintaan paralel yang akan digunakan untuk mengirim peristiwa ke SplunkDISABLE_VALIDATION
:true
jika Anda ingin menonaktifkan validasi sertifikat SSLROOT_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 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_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 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/SubTOKEN
: Token Http Event Collector SplunkURL
: jalur URL untuk Http Event Collector Splunk (misalnya,https://splunk-hec-host:8088
)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 SplunkPARALLELISM
: jumlah permintaan paralel yang akan digunakan untuk mengirim peristiwa ke SplunkDISABLE_VALIDATION
:true
jika Anda ingin menonaktifkan validasi sertifikat SSLROOT_CA_CERTIFICATE_PATH
: jalur ke sertifikat CA root di Cloud Storage (misalnya,gs://your-bucket/privateCA.crt
)
Langkah berikutnya
- Pelajari template Dataflow.
- Lihat daftar template yang disediakan Google.