Pub/Sub to Splunk ํ ํ๋ฆฟ์ Splunk์ HTTP Event Collector(HEC)๋ฅผ ํตํด Pub/Sub ๊ตฌ๋ ์์ ๋ฉ์์ง๋ฅผ ์ฝ๊ณ Splunk์ ๋ฉ์์ง ํ์ด๋ก๋๋ฅผ ์ฐ๋ ์คํธ๋ฆฌ๋ฐ ํ์ดํ๋ผ์ธ์ ๋๋ค. ์ด ํ ํ๋ฆฟ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ Splunk๋ก ๋ก๊ทธ๋ฅผ ๋ด๋ณด๋ด๋ ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ ์ํฌํ๋ก์ ์์๋ฅผ ๋ณด๋ ค๋ฉด Dataflow๋ฅผ ์ฌ์ฉํ์ฌ Splunk๋ก ํ๋ก๋์ ์ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ก๊ทธ ๋ด๋ณด๋ด๊ธฐ ๋ฐฐํฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
Splunk์ ์ฐ๊ธฐ ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ์ ์ ์ ํจ์๋ฅผ ๋ฉ์์ง ํ์ด๋ก๋์ ์ ์ฉํ ์๋ ์์ต๋๋ค. ์ฒ๋ฆฌ ์คํจ๊ฐ ๋ฐ์ํ ๋ฉ์์ง๋ ์ถ๊ฐ์ ์ธ ๋ฌธ์ ํด๊ฒฐ ๋ฐ ์ฌ์ฒ๋ฆฌ๋ฅผ ์ํด Pub/Sub ์ฒ๋ฆฌ ๋ถ๊ฐ ์ฃผ์ ๋ก ์ ๋ฌ๋ฉ๋๋ค.
HEC ํ ํฐ์ ์ถ๊ฐ ๋ณด์ ๋ ์ด์ด๋ก Cloud KMS ํค๋ก ์ํธํ๋ base64 ์ธ์ฝ๋ฉ HEC ํ ํฐ ๋งค๊ฐ๋ณ์์ ํจ๊ป Cloud KMS ํค๋ฅผ ์ ๋ฌํ ์๋ ์์ต๋๋ค. HEC ํ ํฐ ํ๋ผ๋ฏธํฐ๋ฅผ ์ํธํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ Cloud KMS API ์ํธํ ์๋ํฌ์ธํธ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ์ดํ๋ผ์ธ ์๊ตฌ์ฌํญ
- ํ์ดํ๋ผ์ธ์ ์คํํ๊ธฐ ์ ์ ์์ค Pub/Sub ๊ตฌ๋ ์ด ์์ด์ผ ํฉ๋๋ค.
- ํ์ดํ๋ผ์ธ์ ์คํํ๊ธฐ ์ ์ Pub/Sub ์ฒ๋ฆฌ๋์ง ์์ ์ฃผ์ ๊ฐ ์์ด์ผ ํฉ๋๋ค.
- Splunk HEC ์๋ํฌ์ธํธ๋ Dataflow ์์ ์ ๋คํธ์ํฌ์์ ์ก์ธ์คํ ์ ์์ด์ผ ํฉ๋๋ค.
- Splunk HEC ํ ํฐ์ด ์์ฑ๋๊ณ ์ฌ์ฉ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์
ํ์ ๋งค๊ฐ๋ณ์
- inputSubscription: ์
๋ ฅ์ ์ฝ์ Pub/Sub ๊ตฌ๋
์
๋๋ค. ์๋ฅผ ๋ค๋ฉด
projects/your-project-id/subscriptions/your-subscription-name
์ ๋๋ค. - url : Splunk HEC URL์
๋๋ค. URL์ ํ์ดํ๋ผ์ธ์ด ์คํ๋๋ VPC์์ ๋ผ์ฐํ
ํ ์ ์์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด
https://splunk-hec-host:8088
์ ๋๋ค. - outputDeadletterTopic: ์ ๋ฌํ ์ ์๋ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ Pub/Sub ์ฃผ์ ์
๋๋ค. ์๋ฅผ ๋ค๋ฉด
projects/<PROJECT_ID>/topics/<TOPIC_NAME>
์ ๋๋ค.
์ ํ์ ๋งค๊ฐ๋ณ์
- token : Splunk HEC ์ธ์ฆ ํ ํฐ์
๋๋ค.
tokenSource
๋งค๊ฐ๋ณ์๊ฐPLAINTEXT
๋๋KMS
๋ก ์ค์ ๋ ๊ฒฝ์ฐ์๋ ์ ๊ณตํด์ผ ํฉ๋๋ค. - batchCount : Splunk์ ์ด๋ฒคํธ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ ์กํ๊ธฐ ์ํ ๋ฐฐ์น ํฌ๊ธฐ์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์
1
(์ผ๊ด ์ฒ๋ฆฌ ์์)์ ๋๋ค. - disableCertificateValidation: SSL ์ธ์ฆ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉ ์ค์งํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
false
(์ ํจ์ฑ ๊ฒ์ฌ ์ฌ์ฉ ์ค์ )์ ๋๋ค.true
์ด๋ฉด ์ธ์ฆ์ ์ ํจ์ฑ์ด ๊ฒ์ฌ๋์ง ์๊ณ (๋ชจ๋ ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ ์ ์์)rootCaCertificatePath
ํ๋ผ๋ฏธํฐ๊ฐ ๋ฌด์๋ฉ๋๋ค. - parallelism: ์ต๋ ๋์ ์์ฒญ ์์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์
1
์ ๋๋ค(๋์ ๋ก๋ ์์). - includePubsubMessage: ํ์ด๋ก๋์ ์ ์ฒด Pub/Sub ๋ฉ์์ง๋ฅผ ํฌํจํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
false
์ ๋๋ค(๋ฐ์ดํฐ ์์๋ง ํ์ด๋ก๋์ ํฌํจ๋จ). - tokenKMSEncryptionKey: HEC ํ ํฐ ๋ฌธ์์ด์ ๋ณตํธํํ๋ ๋ฐ ์ฌ์ฉํ Cloud KMS ํค์
๋๋ค. tokenSource๊ฐ KMS๋ก ์ค์ ๋ ๊ฒฝ์ฐ์๋ ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. Cloud KMS ํค๊ฐ ์ ๊ณต๋๋ฉด HEC ํ ํฐ ๋ฌธ์์ด์ด ์ํธํ๋์ด ์ ๋ฌ๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด
projects/your-project-id/locations/global/keyRings/your-keyring/cryptoKeys/your-key-name
์ ๋๋ค. - tokenSecretId: ํ ํฐ์ Secret Manager ๋ณด์ ๋น๋ฐ ID์
๋๋ค. tokenSource๊ฐ
SECRET_MANAGER
๋ก ์ค์ ๋ ๊ฒฝ์ฐ์๋ ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉดprojects/your-project-id/secrets/your-secret/versions/your-secret-version
์ ๋๋ค. - tokenSource: ํ ํฐ ์์ค์
๋๋ค.
PLAINTEXT
,KMS
,SECRET_MANAGER
๊ฐ์ด ํ์ฉ๋ฉ๋๋ค. Secret Manager๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.tokenSource
๊ฐKMS
,tokenKMSEncryptionKey
๋ก ์ค์ ๋๊ณ ์ํธํ๋ ๊ฒฝ์ฐ,token
์ ์ ๊ณตํด์ผ ํฉ๋๋ค.tokenSource
๊ฐSECRET_MANAGER
๋ก ์ค์ ๋ ๊ฒฝ์ฐtokenSecretId
๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.tokenSource
๊ฐPLAINTEXT
๋ก ์ค์ ๋ ๊ฒฝ์ฐtoken
๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. - rootCaCertificatePath: Cloud Storage์ ๋ฃจํธ CA ์ธ์ฆ์์ ๋ํ ์ ์ฒด URL์
๋๋ค. Cloud Storage์์ ์ ๊ณตํ๋ ์ธ์ฆ์๋ DER๋ก ์ธ์ฝ๋ฉ๋์ด์ผ ํ๋ฉฐ ๋ฐ์ด๋๋ฆฌ ๋๋ ์ธ์ ๊ฐ๋ฅํ (Base64) ์ธ์ฝ๋ฉ์ผ๋ก ์ ๊ณต๋ ์ ์์ต๋๋ค. ์ธ์ฆ์๊ฐ Base64 ์ธ์ฝ๋ฉ์ผ๋ก ์ ๊ณต๋๋ ๊ฒฝ์ฐ ์์ ๋ถ๋ถ์ -----BEGIN CERTIFICATE-----๋ก ๋ฐ์ธ๋ฉ๋๊ณ ๋ง์ง๋ง์ -----END CERTIFICATE-----๋ก ๋ฐ์ธ๋ฉ๋์ด์ผ ํฉ๋๋ค. ์ด ๋งค๊ฐ๋ณ์๊ฐ ์ ๊ณต๋๋ฉด Splunk HEC ์๋ํฌ์ธํธ์ SSL ์ธ์ฆ์๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ด ๋น๊ณต๊ฐ CA ์ธ์ฆ์ ํ์ผ์ ๊ฐ์ ธ์ Dataflow ์์
์์ ํธ๋ฌ์คํธ ์ ์ฅ์์ ์ถ๊ฐํฉ๋๋ค. ์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ํธ๋ฌ์คํธ ์ ์ฅ์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด
gs://mybucket/mycerts/privateCA.crt
์ ๋๋ค. - enableBatchLogs: Splunk์ ๊ธฐ๋ก๋ ๋ฐฐ์น์ ๋ก๊ทธ๋ฅผ ์ฌ์ฉ ์ค์ ํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ:
true
- enableGzipHttpCompression: Splunk HEC๋ก ์ ์ก๋ HTTP ์์ฒญ์ ์์ถํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค(gzip ์ฝํ
์ธ ์ธ์ฝ๋ฉ). ๊ธฐ๋ณธ๊ฐ:
true
- javascriptTextTransformGcsPath: ์ฌ์ฉํ JavaScript ์ฌ์ฉ์ ์ ์ ํจ์(UDF)๋ฅผ ์ ์ํ๋ .js ํ์ผ์ Cloud Storage URI์
๋๋ค. ์๋ฅผ ๋ค๋ฉด
gs://my-bucket/my-udfs/my_file.js
์ ๋๋ค. - javascriptTextTransformFunctionName: ์ฌ์ฉํ JavaScript ์ฌ์ฉ์ ์ ์ ํจ์(UDF) ์ด๋ฆ์
๋๋ค. ์๋ฅผ ๋ค์ด JavaScript ํจ์๊ฐ
myTransform(inJson) { /*...do stuff...*/ }
์ด๋ฉด ํจ์ ์ด๋ฆ์myTransform
์ ๋๋ค. ์ํ JavaScript UDF๋ UDF ์์(https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples)๋ฅผ ์ฐธ์กฐํ์ธ์. - javascriptTextTransformReloadIntervalMinutes: ์์ ์๊ฐ ํ์ผ์ ์๋ก๊ณ ์นจํ๊ธฐ ์ํด JavaScript UDF ๋ณ๊ฒฝ์ฌํญ์ ํ์ธํ ์ ์๋ ๊ฐ๊ฒฉ์ ์ ์ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค.
์ฌ์ฉ์ ์ ์ ํจ์
์ ํ์ ์ผ๋ก ์ฌ์ฉ์ ์ ์ ํจ์(UDF)๋ฅผ ์์ฑํ์ฌ ์ด ํ ํ๋ฆฟ์ ํ์ฅํ ์ ์์ต๋๋ค. ํ ํ๋ฆฟ์ด ๊ฐ ์ ๋ ฅ ์์์ ๋ํด UDF๋ฅผ ํธ์ถํฉ๋๋ค. ์์ ํ์ด๋ก๋๋ JSON ๋ฌธ์์ด๋ก ์ง๋ ฌํ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Dataflow ํ ํ๋ฆฟ์ ๋ํ ์ฌ์ฉ์ ์ ์ ํจ์ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํจ์ ์ฌ์
UDF์ ์ฌ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ๋ ฅ: JSON ๋ฌธ์์ด๋ก ์ง๋ ฌํ๋ Pub/Sub ๋ฉ์์ง ๋ฐ์ดํฐ ํ๋์ ๋๋ค.
- ์ถ๋ ฅ: Splunk HEC ์ด๋ฒคํธ ์๋ํฌ์ธํธ๋ก ์ ์กํ ์ด๋ฒคํธ ๋ฐ์ดํฐ์ ๋๋ค. ์ถ๋ ฅ์ ๋ฌธ์์ด ๋๋ ๋ฌธ์์ดํ๋ JSON ๊ฐ์ฒด์ฌ์ผ ํฉ๋๋ค.
ํ ํ๋ฆฟ ์คํ
์ฝ์
- Dataflow ํ ํ๋ฆฟ์์ ์์ ๋ง๋ค๊ธฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค. ํ ํ๋ฆฟ์์ ์์ ๋ง๋ค๊ธฐ๋ก ์ด๋
- ์์ ์ด๋ฆ ํ๋์ ๊ณ ์ ํ ์์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- (์ ํ์ฌํญ) ๋ฆฌ์ ์๋ํฌ์ธํธ์ ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ๊ฐ์ ์ ํํฉ๋๋ค. ๊ธฐ๋ณธ ๋ฆฌ์ ์
us-central1
์ ๋๋ค.Dataflow ์์ ์ ์คํํ ์ ์๋ ๋ฆฌ์ ๋ชฉ๋ก์ Dataflow ์์น๋ฅผ ์ฐธ์กฐํ์ธ์.
- Dataflow ํ ํ๋ฆฟ ๋๋กญ๋ค์ด ๋ฉ๋ด์์ the Pub/Sub to Splunk template์ ์ ํํฉ๋๋ค.
- ์ ๊ณต๋ ๋งค๊ฐ๋ณ์ ํ๋์ ๋งค๊ฐ๋ณ์ ๊ฐ์ ์ ๋ ฅํฉ๋๋ค.
- (์ ํ์ฌํญ) ์ ํํ ํ ๋ฒ ์ฒ๋ฆฌ์์ ์ ์ด๋ ํ ๋ฒ ์คํธ๋ฆฌ๋ฐ ๋ชจ๋๋ก ์ ํํ๋ ค๋ฉด ์ ์ด๋ ํ ๋ฒ๋ฅผ ์ ํํฉ๋๋ค.
- ์์ ์คํ์ ํด๋ฆญํฉ๋๋ค.
gcloud
์ ธ ๋๋ ํฐ๋ฏธ๋์์ ํ ํ๋ฆฟ์ ์คํํฉ๋๋ค.
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
๋ค์์ ๋ฐ๊ฟ๋๋ค.
JOB_NAME
: ์ ํํ ๊ณ ์ ํ ์์ ์ด๋ฆREGION_NAME
: Dataflow ์์ ์ ๋ฐฐํฌํ ๋ฆฌ์ (์:us-central1
)VERSION
: ์ฌ์ฉํ ํ ํ๋ฆฟ ๋ฒ์ ๋ค์ ๊ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
latest
: ๋ฒํท์ ๋ ์ง๊ฐ ์ง์ ๋์ง ์์ ์์ ํด๋(gs://dataflow-templates-REGION_NAME/latest/)์์ ์ฌ์ฉํ ์ ์๋ ์ต์ ๋ฒ์ ์ ํ ํ๋ฆฟ์ ์ฌ์ฉํฉ๋๋ค.- ๋ฒ์ ์ด๋ฆ(์:
2023-09-12-00_RC00
): ๋ฒํท์ ๋ ์ง๊ฐ ์ง์ ๋ ํด๋น ์์ ํด๋(gs://dataflow-templates-REGION_NAME/)์ ์ค์ฒฉ๋์ด ์๋ ํน์ ๋ฒ์ ์ ํ ํ๋ฆฟ์ ์ฌ์ฉํฉ๋๋ค.
STAGING_LOCATION
: ๋ก์ปฌ ํ์ผ์ ์คํ ์ด์ง ์์น(์:gs://your-bucket/staging
)INPUT_SUBSCRIPTION_NAME
: Pub/Sub ๊ตฌ๋ ์ด๋ฆTOKEN
: Splunk์ Http Event Collector ํ ํฐURL
: Splunk์ Http Event Collector์ URL ๊ฒฝ๋ก(์:https://splunk-hec-host:8088
)DEADLETTER_TOPIC_NAME
: Pub/Sub ์ฃผ์ ์ด๋ฆJAVASCRIPT_FUNCTION
: ์ฌ์ฉํ JavaScript ์ฌ์ฉ์ ์ ์ ํจ์(UDF)์ ์ด๋ฆ์ ๋๋ค.์๋ฅผ ๋ค์ด JavaScript ํจ์๊ฐ
myTransform(inJson) { /*...do stuff...*/ }
์ด๋ฉด ํจ์ ์ด๋ฆ์myTransform
์ ๋๋ค. ์ํ JavaScript UDF๋ UDF ์์๋ฅผ ์ฐธ์กฐํ์ธ์.PATH_TO_JAVASCRIPT_UDF_FILE
: ์ฌ์ฉํ JavaScript ์ฌ์ฉ์ ์ ์ ํจ์(UDF)๋ฅผ ์ ์ํ๋.js
ํ์ผ์ Cloud Storage URI. ์๋ฅผ ๋ค๋ฉดgs://my-bucket/my-udfs/my_file.js
์ ๋๋ค.BATCH_COUNT
: Splunk์ ์ฌ๋ฌ ์ด๋ฒคํธ๋ฅผ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉํ ๋ฐฐ์น ํฌ๊ธฐPARALLELISM
: Splunk์ ์ด๋ฒคํธ๋ฅผ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉํ ๋์ ์์ฒญ ์DISABLE_VALIDATION
: SSL ์ธ์ฆ์ ๊ฒ์ฆ์ ์ฌ์ฉ ์ค์งํ๋ ค๋ ๊ฒฝ์ฐtrue
ROOT_CA_CERTIFICATE_PATH
: Cloud Storage์ ๋ฃจํธ CA ์ธ์ฆ์ ๊ฒฝ๋ก(์:gs://your-bucket/privateCA.crt
)
API
REST API๋ฅผ ์ฌ์ฉํ์ฌ ํ
ํ๋ฆฟ์ ์คํํ๋ ค๋ฉด HTTP POST ์์ฒญ์ ์ ์กํฉ๋๋ค. API ๋ฐ ์น์ธ ๋ฒ์์ ๋ํ ์์ธํ ๋ด์ฉ์ 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" } }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: Dataflow ์์ ์ ์คํํ๋ ค๋ Google Cloud ํ๋ก์ ํธ IDJOB_NAME
: ์ ํํ ๊ณ ์ ํ ์์ ์ด๋ฆLOCATION
: Dataflow ์์ ์ ๋ฐฐํฌํ ๋ฆฌ์ (์:us-central1
)VERSION
: ์ฌ์ฉํ ํ ํ๋ฆฟ ๋ฒ์ ๋ค์ ๊ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
latest
: ๋ฒํท์ ๋ ์ง๊ฐ ์ง์ ๋์ง ์์ ์์ ํด๋(gs://dataflow-templates-REGION_NAME/latest/)์์ ์ฌ์ฉํ ์ ์๋ ์ต์ ๋ฒ์ ์ ํ ํ๋ฆฟ์ ์ฌ์ฉํฉ๋๋ค.- ๋ฒ์ ์ด๋ฆ(์:
2023-09-12-00_RC00
): ๋ฒํท์ ๋ ์ง๊ฐ ์ง์ ๋ ํด๋น ์์ ํด๋(gs://dataflow-templates-REGION_NAME/)์ ์ค์ฒฉ๋์ด ์๋ ํน์ ๋ฒ์ ์ ํ ํ๋ฆฟ์ ์ฌ์ฉํฉ๋๋ค.
STAGING_LOCATION
: ๋ก์ปฌ ํ์ผ์ ์คํ ์ด์ง ์์น(์:gs://your-bucket/staging
)INPUT_SUBSCRIPTION_NAME
: Pub/Sub ๊ตฌ๋ ์ด๋ฆTOKEN
: Splunk์ Http Event Collector ํ ํฐURL
: Splunk์ Http Event Collector์ URL ๊ฒฝ๋ก(์:https://splunk-hec-host:8088
)DEADLETTER_TOPIC_NAME
: Pub/Sub ์ฃผ์ ์ด๋ฆJAVASCRIPT_FUNCTION
: ์ฌ์ฉํ JavaScript ์ฌ์ฉ์ ์ ์ ํจ์(UDF)์ ์ด๋ฆ์ ๋๋ค.์๋ฅผ ๋ค์ด JavaScript ํจ์๊ฐ
myTransform(inJson) { /*...do stuff...*/ }
์ด๋ฉด ํจ์ ์ด๋ฆ์myTransform
์ ๋๋ค. ์ํ JavaScript UDF๋ UDF ์์๋ฅผ ์ฐธ์กฐํ์ธ์.PATH_TO_JAVASCRIPT_UDF_FILE
: ์ฌ์ฉํ JavaScript ์ฌ์ฉ์ ์ ์ ํจ์(UDF)๋ฅผ ์ ์ํ๋.js
ํ์ผ์ Cloud Storage URI. ์๋ฅผ ๋ค๋ฉดgs://my-bucket/my-udfs/my_file.js
์ ๋๋ค.BATCH_COUNT
: Splunk์ ์ฌ๋ฌ ์ด๋ฒคํธ๋ฅผ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉํ ๋ฐฐ์น ํฌ๊ธฐPARALLELISM
: Splunk์ ์ด๋ฒคํธ๋ฅผ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉํ ๋์ ์์ฒญ ์DISABLE_VALIDATION
: SSL ์ธ์ฆ์ ๊ฒ์ฆ์ ์ฌ์ฉ ์ค์งํ๋ ค๋ ๊ฒฝ์ฐtrue
ROOT_CA_CERTIFICATE_PATH
: Cloud Storage์ ๋ฃจํธ CA ์ธ์ฆ์ ๊ฒฝ๋ก(์:gs://your-bucket/privateCA.crt
)
๋ค์ ๋จ๊ณ
- Dataflow ํ ํ๋ฆฟ ์์๋ณด๊ธฐ
- Google ์ ๊ณต ํ ํ๋ฆฟ ๋ชฉ๋ก ์ฐธ์กฐ