Modello Da Pub/Sub a Splunk

Il modello da Pub/Sub a Splunk è una pipeline in modalità flusso che legge i messaggi di una sottoscrizione Pub/Sub e scrive il payload dei messaggi in Splunk utilizzando HTTP Event Collector (HEC) di Splunk. Il caso d'uso più comune di questo modello è l'esportazione dei log in Splunk. Per un esempio del flusso di lavoro sottostante, consulta Eseguire il deployment di esportazioni di log pronte per la produzione in Splunk utilizzando Dataflow.

Prima di scrivere in Splunk, puoi anche applicare una funzione JavaScript definita dall'utente al payload dei messaggi. Tutti i messaggi che presentano errori di elaborazione vengono inoltrati a un argomento Pub/Sub non elaborato per un'ulteriore risoluzione dei problemi e rielaborazione.

Come ulteriore livello di protezione per il tuo token HEC, puoi anche passare una chiave Cloud KMS insieme al parametro del token HEC con codifica base64 criptato con la chiave Cloud KMS. Per ulteriori dettagli sulla crittografia del parametro del token HEC, consulta Endpoint di crittografia dell'API Cloud KMS.

Requisiti della pipeline

  • La sottoscrizione Pub/Sub di origine deve esistere prima dell'esecuzione della pipeline.
  • L'argomento Pub/Sub non elaborato deve esistere prima dell'esecuzione della pipeline.
  • L'endpoint HEC di Splunk deve essere accessibile dalla rete dei worker Dataflow.
  • Il token HEC di Splunk deve essere generato e disponibile.

Parametri del modello

Parametro Descrizione
inputSubscription La sottoscrizione Pub/Sub da cui leggere l'input. Ad esempio, projects/<project-id>/subscriptions/<subscription-name>.
token (Facoltativo) Il token di autenticazione HEC di Splunk. Deve essere specificato se il parametro tokenSource è impostato su PLAINTEXT o KMS.
url L'URL di Splunk HEC. Deve essere instradabile dal VPC in cui viene eseguita la pipeline. Ad esempio https://splunk-hec-host:8088.
outputDeadletterTopic L'argomento Pub/Sub per l'inoltro dei messaggi non recapitabili. Ad esempio, projects/<project-id>/topics/<topic-name>.
javascriptTextTransformGcsPath Facoltativo: L'URI Cloud Storage del file .js che definisce la funzione JavaScript definita dall'utente che vuoi utilizzare. Ad esempio: gs://my-bucket/my-udfs/my_file.js.
javascriptTextTransformFunctionName (Facoltativo) Il nome della funzione definita dall'utente di JavaScript che vuoi utilizzare. Ad esempio, se il codice della funzione JavaScript è myTransform(inJson) { /*...do stuff...*/ }, il nome della funzione è myTransform. Per esempi di funzioni JavaScript definite, consulta gli esempi di funzioni definite dall'utente.
javascriptTextTransformReloadIntervalMinutes (Facoltativo) Specifica la frequenza di ricarica della funzione definita dall'utente, in minuti. Se il valore è maggiore di 0, Dataflow controlla periodicamente il file UDF in Cloud Storage e ricarica la funzione definita dall'utente se il file viene modificato. Questo parametro consente di aggiornare la funzione definita dall'utente mentre la pipeline è in esecuzione, senza dover riavviare il job. Se il valore è 0, il ricaricamento delle funzioni definite dall'utente è disabilitato. Il valore predefinito è 0.
batchCount (Facoltativo) Le dimensioni del batch per l'invio di più eventi a Splunk. Valore predefinito 1 (nessun raggruppamento).
parallelism (Facoltativo) Numero massimo di richieste parallele. Valore predefinito 1 (nessun parallelismo).
disableCertificateValidation (Facoltativo) Disabilita la convalida del certificato SSL. Valore predefinito false (convalida abilitata). Se il valore è true, i certificati non vengono convalidati (tutti i certificati sono attendibili) e il parametro "rootCaCertificatePath" viene ignorato.
includePubsubMessage (Facoltativo) Includi il messaggio Pub/Sub completo nel payload. Valore predefinito false (solo l'elemento di dati è incluso nel payload).
tokenSource Origine del token. Uno tra PLAINTEXT, KMS o SECRET_MANAGER. Questo parametro è obbligatorio se viene utilizzato Secret Manager. Se il criterio tokenSource viene impostato su KMS, è necessario specificare tokenKMSEncryptionKey e la crittografia token deve. Se tokenSource è impostato su SECRET_MANAGER, deve essere fornito tokenSecretId. Se tokenSource è impostato su PLAINTEXT, deve essere fornito token.
tokenKMSEncryptionKey (Facoltativo) La chiave Cloud KMS per decriptare la stringa del token HEC. Questo parametro deve essere fornito se tokenSource è impostato su KMS. Se viene fornita la chiave Cloud KMS, la stringa del token HEC deve essere trasmessa in forma criptata.
tokenSecretId (Facoltativo) L'ID secret di Secret Manager per il token. Questo parametro deve essere fornito se tokenSource è impostato su SECRET_MANAGER. Deve essere nel formato projects/<project-id>/secrets/<secret-name>/versions/<secret-version>.
rootCaCertificatePath Facoltativo: l'URL completo del certificato CA radice in Cloud Storage. Ad esempio, gs://mybucket/mycerts/privateCA.crt. Il certificato fornito in Cloud Storage deve essere con codifica DER e può essere fornito con codifica binaria o stampabile (Base64). Se il certificato viene fornito con codifica Base64, deve essere vincolato all'inizio da -----BEGIN CERTIFICATE----- e alla fine deve essere delimitato da -----END CERTIFICATE-----. Se questo parametro viene fornito, questo file di certificato CA privato viene recuperato e aggiunto all'archivio di attendibilità del worker Dataflow per verificare il certificato SSL dell'endpoint HEC Splunk. Se questo parametro non viene fornito, viene utilizzato l'archivio di attendibilità predefinito.
enableBatchLogs (Facoltativo) Specifica se i log devono essere abilitati per i batch scritti in Splunk. Valore predefinito: true.
enableGzipHttpCompression (Facoltativo) Specifica se le richieste HTTP inviate a HEC di Splunk devono essere compresse (contenuti gzip codificati). Valore predefinito: true.

Funzione definita dall'utente

Facoltativamente, puoi estendere questo modello scrivendo una funzione definita dall'utente (UDF). Il modello chiama la funzione definita dall'utente per ogni elemento di input. I payload degli elementi sono serializzati come stringhe JSON. Per ulteriori informazioni, consulta Creare funzioni definite dall'utente per i modelli Dataflow.

Specifica della funzione

La funzione definita dall'utente ha le seguenti specifiche:

  • Input: il campo dei dati del messaggio Pub/Sub, serializzato come stringa JSON.
  • Output: i dati degli eventi da inviare all'endpoint degli eventi HEC di Splunk. L'output deve essere una stringa o un oggetto JSON stringato.

Esegui il modello

Console

  1. Vai alla pagina Crea job da modello di Dataflow.
  2. Vai a Crea job da modello
  3. Nel campo Nome job, inserisci un nome univoco per il job.
  4. (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. La regione predefinita è us-central1.

    Per un elenco delle regioni in cui puoi eseguire un job Dataflow, vedi Località Dataflow.

  5. Nel menu a discesa Modello Dataflow, seleziona the Pub/Sub to Splunk template.
  6. Nei campi dei parametri forniti, inserisci i valori dei parametri.
  7. (Facoltativo) Per passare dall'elaborazione "exactly-once" alla modalità di streaming "at-least-once", seleziona Almeno una volta.
  8. Fai clic su Esegui job.

gcloud

Nella shell o nel terminale, esegui il modello:

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

Sostituisci quanto segue:

  • JOB_NAME: un nome job univoco a tua scelta
  • REGION_NAME: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

  • STAGING_LOCATION: la posizione per la gestione temporanea dei file locali (ad esempio, gs://your-bucket/staging)
  • INPUT_SUBSCRIPTION_NAME: nome della sottoscrizione Pub/Sub
  • TOKEN: token raccoglitore eventi HTTP di Splunk
  • URL: il percorso dell'URL per il raccoglitore di eventi HTTP di Splunk (ad esempio, https://splunk-hec-host:8088)
  • DEADLETTER_TOPIC_NAME: nome dell'argomento Pub/Sub
  • JAVASCRIPT_FUNCTION: il nome della funzione definita dall'utente dall'utente JavaScript che vuoi utilizzare

    Ad esempio, se il codice della funzione JavaScript è myTransform(inJson) { /*...do stuff...*/ }, il nome della funzione è myTransform. Per esempi di funzioni JavaScript definite, consulta gli esempi di funzioni definite dall'utente.

  • PATH_TO_JAVASCRIPT_UDF_FILE: l'URI Cloud Storage del file .js che definisce la funzione JavaScript definita dall'utente che vuoi utilizzare, ad esempio gs://my-bucket/my-udfs/my_file.js
  • BATCH_COUNT: le dimensioni del batch da utilizzare per l'invio di più eventi a Splunk
  • PARALLELISM: il numero di richieste parallele da utilizzare per inviare eventi a Splunk
  • DISABLE_VALIDATION: true se vuoi disabilitare la convalida del certificato SSL
  • ROOT_CA_CERTIFICATE_PATH: il percorso del certificato CA radice in Cloud Storage (ad esempio, gs://your-bucket/privateCA.crt)

API

Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per maggiori informazioni sull'API e sui relativi ambiti di autorizzazione, consulta 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"
   }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud in cui vuoi eseguire il job Dataflow
  • JOB_NAME: un nome job univoco a tua scelta
  • LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

  • STAGING_LOCATION: la posizione per la gestione temporanea dei file locali (ad esempio, gs://your-bucket/staging)
  • INPUT_SUBSCRIPTION_NAME: nome della sottoscrizione Pub/Sub
  • TOKEN: token raccoglitore eventi HTTP di Splunk
  • URL: il percorso dell'URL per il raccoglitore di eventi HTTP di Splunk (ad esempio, https://splunk-hec-host:8088)
  • DEADLETTER_TOPIC_NAME: nome dell'argomento Pub/Sub
  • JAVASCRIPT_FUNCTION: il nome della funzione definita dall'utente dall'utente JavaScript che vuoi utilizzare

    Ad esempio, se il codice della funzione JavaScript è myTransform(inJson) { /*...do stuff...*/ }, il nome della funzione è myTransform. Per esempi di funzioni JavaScript definite, consulta gli esempi di funzioni definite dall'utente.

  • PATH_TO_JAVASCRIPT_UDF_FILE: l'URI Cloud Storage del file .js che definisce la funzione JavaScript definita dall'utente che vuoi utilizzare, ad esempio gs://my-bucket/my-udfs/my_file.js
  • BATCH_COUNT: le dimensioni del batch da utilizzare per l'invio di più eventi a Splunk
  • PARALLELISM: il numero di richieste parallele da utilizzare per inviare eventi a Splunk
  • DISABLE_VALIDATION: true se vuoi disabilitare la convalida del certificato SSL
  • ROOT_CA_CERTIFICATE_PATH: il percorso del certificato CA radice in Cloud Storage (ad esempio, gs://your-bucket/privateCA.crt)

Passaggi successivi