La plantilla de Pub/Sub a Splunk es una canalización de streaming que lee mensajes de una suscripción de Pub/Sub y escribe la carga útil de los mensajes en Splunk mediante la función Http Event Collector (HEC) de dicha plataforma. El caso práctico más habitual de esta plantilla es exportar registros a Splunk. Para ver un ejemplo del flujo de trabajo subyacente, consulta el artículo sobre cómo desplegar exportaciones de registros listas para producción en Splunk mediante Dataflow.
Antes de escribir en Splunk, también puedes aplicar una función definida por el usuario de JavaScript a la carga útil del mensaje. Si surge algún problema a la hora de procesar un mensaje, se enviará ese mensaje a un tema de mensajes no procesados de Pub/Sub para ponerle solución y volver a procesar el mensaje.
Para añadir una capa de protección adicional a tu token HEC, también puedes incluir una clave de Cloud KMS junto con el parámetro del token HEC codificado en base64 y cifrado con la clave de Cloud KMS. Consulta más información sobre cómo cifrar el parámetro de token de HEC en el endpoint de cifrado de la API Cloud KMS.
Requisitos del flujo de procesamiento
- La suscripción de origen de Pub/Sub debe existir antes de ejecutar el flujo de procesamiento.
- El tema de Pub/Sub sin procesar debe existir antes de ejecutar el flujo de procesamiento.
- Se debe poder acceder al punto de conexión de Splunk HEC desde la red de los trabajadores de Dataflow.
- Se debe haber generado y suministrado el token de Splunk HEC.
Parámetros de plantilla
Parámetros obligatorios
- inputSubscription la suscripción de Pub/Sub de la que se leerán los datos de entrada. Por ejemplo,
projects/your-project-id/subscriptions/your-subscription-name
. - url: la URL de HEC de Splunk. La URL debe poder enrutarse desde la VPC en la que se ejecuta la canalización. Por ejemplo,
https://splunk-hec-host:8088
. - outputDeadletterTopic el tema de Pub/Sub al que se reenviarán los mensajes que no se puedan entregar. Por ejemplo,
projects/<PROJECT_ID>/topics/<TOPIC_NAME>
.
Parámetros opcionales
- token: el token de autenticación de HEC de Splunk. Debe proporcionarse si el parámetro
tokenSource
se define comoPLAINTEXT
oKMS
. - batchCount tamaño del lote para enviar varios eventos a Splunk. El valor predeterminado es
1
(sin procesamiento por lotes). - disableCertificateValidation inhabilita la validación de certificados SSL. Valor predeterminado
false
(validación habilitada). Sitrue
, los certificados no se validan (todos los certificados son de confianza) y se ignora el parámetrorootCaCertificatePath
. - Paralelismo: número máximo de solicitudes paralelas. El valor predeterminado es
1
(sin paralelismo). - includePubsubMessage incluye el mensaje completo de Pub/Sub en la carga útil. Predeterminado
false
(solo se incluye el elemento de datos en la carga útil). - tokenKMSEncryptionKey la clave de Cloud KMS que se va a usar para descifrar la cadena del token de HEC. Este parámetro debe proporcionarse cuando tokenSource se defina como KMS. Si se proporciona la clave de Cloud KMS, la cadena del token de HEC debe enviarse cifrada. Por ejemplo,
projects/your-project-id/locations/global/keyRings/your-keyring/cryptoKeys/your-key-name
. - tokenSecretId: ID de secreto de Secret Manager del token. Este parámetro debe proporcionarse cuando tokenSource tenga el valor
SECRET_MANAGER
. Por ejemplo,projects/your-project-id/secrets/your-secret/versions/your-secret-version
. - tokenSource la fuente del token. Se permiten los siguientes valores:
PLAINTEXT
,KMS
ySECRET_MANAGER
. Debe proporcionar este parámetro cuando se utilice Secret Manager. SitokenSource
se define comoKMS
,tokenKMSEncryptionKey
y cifrado, se debe proporcionartoken
. SitokenSource
se define comoSECRET_MANAGER
, se debe proporcionartokenSecretId
. SitokenSource
se define comoPLAINTEXT
, se debe proporcionartoken
. - rootCaCertificatePath: URL completa del certificado de AC raíz en Cloud Storage. El certificado proporcionado en Cloud Storage debe estar codificado en DER y se puede proporcionar en formato binario o imprimible (Base64). Si el certificado se proporciona en codificación Base64, debe estar delimitado al principio por -----BEGIN CERTIFICATE----- y al final por -----END CERTIFICATE-----. Si se proporciona este parámetro, se obtiene este archivo de certificado de CA privada y se añade al almacén de confianza del trabajador de Dataflow para verificar el certificado SSL del endpoint HEC de Splunk. Si no se proporciona este parámetro, se usará el almacén de confianza predeterminado. Por ejemplo,
gs://mybucket/mycerts/privateCA.crt
. - enableBatchLogs especifica si se deben habilitar los registros de los lotes escritos en Splunk. Valor predeterminado:
true
. - enableGzipHttpCompression especifica si las solicitudes HTTP enviadas a Splunk HEC deben comprimirse (contenido codificado en gzip). Valor predeterminado:
true
. - javascriptTextTransformGcsPath el URI de Cloud Storage del archivo .js que define la función de JavaScript definida por el usuario (UDF) que se va a usar. Por ejemplo,
gs://my-bucket/my-udfs/my_file.js
. - javascriptTextTransformFunctionName nombre de la función definida por el usuario (UDF) de JavaScript que se va a usar. Por ejemplo, si el código de la función de JavaScript es
myTransform(inJson) { /*...do stuff...*/ }
, el nombre de la función esmyTransform
. Para ver ejemplos de UDFs de JavaScript, consulta Ejemplos de UDFs (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples). - javascriptTextTransformReloadIntervalMinutes define el intervalo en el que los workers pueden comprobar si hay cambios en las UDFs de JavaScript para volver a cargar los archivos. El valor predeterminado es 0.
Función definida por el usuario
También puedes ampliar esta plantilla escribiendo una función definida por el usuario (UDF). La plantilla llama a la función definida por el usuario para cada elemento de entrada. Las cargas útiles de los elementos se serializan como cadenas JSON. Para obtener más información, consulta el artículo sobre cómo crear funciones definidas por el usuario para plantillas de Dataflow.
Especificación de la función
La función definida por el usuario tiene las siguientes especificaciones:
- Entrada: el campo de datos del mensaje de Pub/Sub, serializado como una cadena JSON.
- Salida: los datos de evento que se enviarán al endpoint de eventos de Splunk HEC. La salida debe ser una cadena o un objeto JSON de tipo string.
Ejecutar la plantilla
Consola
- Ve a la página Crear tarea a partir de plantilla de Dataflow. Ir a Crear tarea a partir de plantilla
- En el campo Nombre de la tarea, introduce un nombre único.
- Opcional: En Endpoint regional, seleccione un valor en el menú desplegable. La región predeterminada es
us-central1
.Para ver una lista de las regiones en las que puedes ejecutar una tarea de Dataflow, consulta Ubicaciones de Dataflow.
- En el menú desplegable Plantilla de flujo de datos, seleccione the Pub/Sub to Splunk template.
- En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
- Opcional: Para cambiar del procesamiento una sola vez al modo de streaming al menos una vez, selecciona Al menos una vez.
- Haz clic en Ejecutar trabajo.
gcloud
En tu shell o terminal, ejecuta la plantilla:
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
Haz los cambios siguientes:
JOB_NAME
: un nombre de trabajo único que elijasREGION_NAME
: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo,us-central1
VERSION
: la versión de la plantilla que quieres usarPuedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/- el nombre de la versión, como
2023-09-12-00_RC00
, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
STAGING_LOCATION
: la ubicación de los archivos locales de almacenamiento provisional (por ejemplo,gs://your-bucket/staging
)INPUT_SUBSCRIPTION_NAME
: el nombre de la suscripción de Pub/SubTOKEN
: token de Splunk Http Event CollectorURL
: la ruta de la URL del recopilador de eventos HTTP de Splunk (por ejemplo,https://splunk-hec-host:8088
)DEADLETTER_TOPIC_NAME
: el nombre del tema de Pub/SubJAVASCRIPT_FUNCTION
: el nombre de la función definida por el usuario (FDU) de JavaScript que quieras usarPor ejemplo, si el código de tu función de JavaScript es
myTransform(inJson) { /*...do stuff...*/ }
, el nombre de la función esmyTransform
. Para ver ejemplos de UDFs de JavaScript, consulta Ejemplos de UDFs.PATH_TO_JAVASCRIPT_UDF_FILE
: el URI de Cloud Storage del archivo.js
que define la función de JavaScript definida por el usuario (UDF) que quieres usar. Por ejemplo,gs://my-bucket/my-udfs/my_file.js
BATCH_COUNT
: el tamaño del lote que se usará para enviar varios eventos a Splunk.PARALLELISM
: número de solicitudes paralelas que se usarán para enviar eventos a Splunk.DISABLE_VALIDATION
:true
si quieres inhabilitar la validación de certificados SSLROOT_CA_CERTIFICATE_PATH
: la ruta al certificado de CA raíz en Cloud Storage (por ejemplo,gs://your-bucket/privateCA.crt
)
API
Para ejecutar la plantilla mediante la API REST, envía una solicitud HTTP POST. Para obtener más información sobre la API y sus ámbitos de autorización, 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" } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de DataflowJOB_NAME
: un nombre de trabajo único que elijasLOCATION
: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo,us-central1
VERSION
: la versión de la plantilla que quieres usarPuedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/- el nombre de la versión, como
2023-09-12-00_RC00
, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
STAGING_LOCATION
: la ubicación de los archivos locales de almacenamiento provisional (por ejemplo,gs://your-bucket/staging
)INPUT_SUBSCRIPTION_NAME
: el nombre de la suscripción de Pub/SubTOKEN
: token de Splunk Http Event CollectorURL
: la ruta de la URL del recopilador de eventos HTTP de Splunk (por ejemplo,https://splunk-hec-host:8088
)DEADLETTER_TOPIC_NAME
: el nombre del tema de Pub/SubJAVASCRIPT_FUNCTION
: el nombre de la función definida por el usuario (FDU) de JavaScript que quieras usarPor ejemplo, si el código de tu función de JavaScript es
myTransform(inJson) { /*...do stuff...*/ }
, el nombre de la función esmyTransform
. Para ver ejemplos de UDFs de JavaScript, consulta Ejemplos de UDFs.PATH_TO_JAVASCRIPT_UDF_FILE
: el URI de Cloud Storage del archivo.js
que define la función de JavaScript definida por el usuario (UDF) que quieres usar. Por ejemplo,gs://my-bucket/my-udfs/my_file.js
BATCH_COUNT
: el tamaño del lote que se usará para enviar varios eventos a Splunk.PARALLELISM
: número de solicitudes paralelas que se usarán para enviar eventos a Splunk.DISABLE_VALIDATION
:true
si quieres inhabilitar la validación de certificados SSLROOT_CA_CERTIFICATE_PATH
: la ruta al certificado de CA raíz en Cloud Storage (por ejemplo,gs://your-bucket/privateCA.crt
)
Siguientes pasos
- Consulta información sobre las plantillas de Dataflow.
- Consulta la lista de plantillas proporcionadas por Google.