Ingesta de datos de Cribl stream en Azure Data Explorer
Cribl Stream es un motor de procesamiento que recopila, procesa y transmite de forma segura los datos de eventos de la máquina de cualquier origen. Permite analizar y procesar los datos de cualquier destino para el análisis y la administración de forma segura.
En este artículo se muestra cómo ingerir datos con Cribl Stream.
Para obtener una lista completa de los conectores de datos, consulte Introducción a las integraciones de datos.
Requisitos previos
- Una cuenta de Cribl Stream
- Un clúster y una base de datos de Azure Data Explorer con las directivas de retención y caché predeterminadas.
- Un entorno de consulta. Para más información, consulte Información general de integraciones de consulta.
- El URI del clúster de Kusto para el valor de TargetURI en el formato https://ingest-<clúster>.<región>.kusto.windows.net. Para más información, consulte Adición de una conexión de clúster.
Creación de una entidad de servicio de Microsoft Entra
La entidad de servicio de Microsoft Entra se puede crear desde Azure Portal o mediante programación, como en el ejemplo siguiente.
Esta entidad de servicio es la identidad que usa el conector para escribir datos en la tabla en Kusto. Se te conceden permisos para que esta entidad de servicio acceda a los recursos de Kusto.
Inicie sesión en su suscripción de Azure a través de la CLI de Azure. A continuación, realice la autenticación en el explorador.
az login
Elija la suscripción para hospedar la entidad de servicio. Este paso es necesario si tiene varias suscripciones.
az account set --subscription YOUR_SUBSCRIPTION_GUID
Cree la entidad de servicio. En este ejemplo, la entidad de servicio se llama
my-service-principal
.az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
En los datos JSON devueltos, copie los valores
appId
,password
ytenant
para usarlos posteriormente.{ "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "displayName": "my-service-principal", "name": "my-service-principal", "password": "00001111-aaaa-2222-bbbb-3333cccc4444", "tenant": "00001111-aaaa-2222-bbbb-3333cccc4444" }
Ha creado una aplicación de Microsoft Entra y una entidad de servicio.
Creación de una tabla de destino
Cree una tabla de destino para los datos entrantes y una asignación de ingesta para asignar las columnas de datos ingeridos a las columnas de la tabla de destino.
Ejecute el siguiente comando de creación de tablas en el editor de consultas y reemplace el marcador de posición TableName por el nombre de la tabla de destino:
.create table <TableName> (_raw: string, _time: long, cribl_pipe: dynamic)
Ejecute el siguiente comando de crear asignación de ingesta y reemplace los marcadores de posición TableName por el nombre de la tabla de destino y TableNameMapping por el nombre de la asignación de ingesta:
.create table <TableName> ingestion csv mapping '<TableNameMapping>' 'CriblLogMapping' '[{"Name":"_raw","DataType":"string","Ordinal":"0","ConstValue":null},{"Name":"_time","DataType":"long","Ordinal":"1","ConstValue":null},{"Name":"cribl_pipe","DataType":"dynamic","Ordinal":"2","ConstValue":null}]'
Conceda a la entidad de servicio de Crear una entidad de servicio de Microsoft Entra permisos del rol de agente de ingesta de base de datos para trabajar con la base de datos. Para más información, consulte Ejemplos. Reemplace el marcador de posición DatabaseName por el nombre de la base de datos de destino y ApplicationID por el valor
AppId
que guardó al crear una entidad de servicio de Microsoft Entra..add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'App Registration'
Creación de un destino de Cribl Stream
En la sección siguiente se describe cómo crear un destino de Cribl Stream que escribe datos en la tabla en Kusto. Cada tabla requiere un conector de destino de Cribl Stream independiente.
Seleccionar destino
Para conectar Cribl Stream a la tabla:
En el panel de navegación superior de Cribl, seleccione Administrar y, a continuación, seleccione un grupo de trabajo.
Seleccione Enrutamiento>QuickConnect (Stream)>Agregar destino.
En la ventana configurar nuevo destino de QuickConnect, elija Azure Data Explorer y, a continuación, Agregar ahora.
Configurar los valores generales
En la ventana Nuevo Explorador de datos, en Configuración general establezca los valores siguientes:
Configuración | valor | Descripción |
---|---|---|
Id. de salida | <OutputID>, por ejemplo, KustoDestination | Nombre que se usa para identificar el destino. |
Modo de ingesta | Procesamiento por lotes (predeterminado) o Streaming | La configuración del modo de ingesta. El procesamiento por lotes permite que la tabla extraiga lotes de datos de un contenedor de almacenamiento de Cribl al ingerir grandes cantidades de datos durante un breve período de tiempo. El Streaming envía datos directamente a la tabla KQL de destino. El streaming es útil para ingerir cantidades más pequeñas de datos o, por ejemplo, enviar una alerta crítica en tiempo real. El streaming puede lograr una latencia menor que el procesamiento por lotes. Si el modo de ingesta está establecido en Streaming, deberá habilitar una directiva de streaming. Para más información, consulte Directiva de ingesta mediante streaming. |
URI base del clúster | URI base | El URI base. |
URI de servicio Ingestion | URI de ingesta | Se muestra cuando se selecciona el modo de procesamiento por lotes. El URI de ingesta. |
Nombre de la base de datos | <DatabaseName> | Nombre de la base de datos de destino. |
Nombre de la tabla | <TableName> | Nombre de la tabla de destino. |
Validar configuración de la base de datos | Sí (predeterminado) o No. | Valida las credenciales de la aplicación de entidad de servicio que especificó al guardar o iniciar el destino. Valida el nombre de la tabla, excepto cuando agregar objeto de asignación está activado. Esta configuración debe deshabilitarse si la aplicación no tiene el Visor de bases de datos ni los roles de Visor de tablas. |
Agregar objeto de asignación | Sí o No (predeterminado). | Solo se muestra cuando se selecciona el modo de procesamiento por lotes en lugar del campo de texto predeterminado asignación de datos. Al seleccionar Sí se abre una ventana para escribir una asignación de datos como un objeto JSON. |
Asignación de datos | Nombre del esquema de asignación tal como se define en el paso Crear una tabla de destino. | Nombre del esquema de asignación. La vista predeterminada cuando Agregar objeto de asignación se establece en No. |
Compress | gzip (predeterminado) | Cuando se establece el formato de datos en Parquet, Comprimir no está disponible. |
Formato de datos | JSON (predeterminado), Raw o Parquet. | El formato de datos. Parquet solo está disponible en el modo de procesamiento por lotes y solo se admite en Linux. |
Comportamiento de contrapresión | Bloquear (predeterminado) o Quitar | Elija si se van a bloquear o quitar eventos cuando los receptores contrapresión. |
Etiquetas | Valores opcionales | Etiquetas opcionales para filtrar y agrupar destinos en la página Administrar destinos de Cribl Stream. Use una pestaña o un salto de línea entre los nombres de etiqueta. Estas etiquetas no se agregan a eventos procesados. |
Cuando haya terminado, seleccione Siguiente.
Configuración de autenticación
Seleccione configuración de autenticación en la barra lateral. Use los valores que guardó en Crear una entidad de servicio de Microsoft Entra junto con el URI base como se indica a continuación:
Configuración | valor | Descripción |
---|---|---|
Id. de inquilino | <TenantID> | Use valor tenant que guardó en Creación de una entidad de servicio de Microsoft Entra. |
Id de cliente | <ClientID> | Use el valor appId que guardó en Creación de una entidad de servicio de Microsoft Entra. |
Ámbito | <baseuri>/.default |
Use el valor de URI base para baseuri. |
Método de autenticación | Secreto de cliente, secreto de cliente (secreto de texto) o certificado | Las opciones son Secreto de cliente Use el secreto de cliente de la aplicación Microsoft Entra que creó en Crear una entidad de servicio de Microsoft Entra para Secreto de cliente. Para Certificado el certificado usa la clave pública que registró o registrará para la aplicación Microsoft Entra que creó en Crear una entidad de servicio de Microsoft Entra. |
Seleccione Siguiente.
Cola persistente
Muestra cuando el modo de ingesta se establece en Streaming y el comportamiento de retroceso se establece en Cola persistente.
Configuración | valor | Descripción |
---|---|---|
Tamaño de archivo máximo | 1 MB (valor predeterminado) | Tamaño máximo del archivo de cola que se va a alcanzar antes de cerrar el archivo. Incluya unidades como KB o MB al escribir un número. |
Tamaño máximo de cola | 5 GB (predeterminado) | Cantidad máxima de espacio en disco que la cola puede consumir en cada proceso de trabajo antes de que el destino deje de poner en cola los datos. Valor necesario de números positivos con unidades como KB, MB o GB. El valor máximo es de 1 TB. |
Ruta de acceso del archivo en cola | $CRIBL_HOME/state/queues (valor predeterminado) |
Ubicación del archivo de cola persistente. Cribl Stream anexa /<worker‑id>/<output‑id> a este valor. |
Compresión | Ninguno (valor predeterminado), gzip | Método de compresión que se va a usar para comprimir los datos persistentes al cerrarlos. |
Comportamiento completo de cola | Bloquear o Quitar | Elija bloquear o quitar eventos cuando la cola ejerce la contrapresión debido a que el disco ha alcanzado su máxima capacidad o que es insuficiente. |
Orden estricto | Sí (predeterminado) o No | Cuando se establecen los eventos en Sí se reenvía en función del orden FIFO (PEPS). Establezca en No para enviar nuevos eventos antes de los eventos en cola anteriores. |
Límite de velocidad de purga (EPS) | 0 (predeterminado) | Esta opción se muestra cuando la ordenación estricta se establece en No, para permitirle establecer una velocidad de limitación (en eventos por segundo) al escribir desde la cola a los receptores. La limitación de la velocidad de purga de eventos en cola aumenta el límite de conexión nuevo o activo. Cero deshabilita el límite. |
Borrar cola persistente | N/D | Seleccione esta opción para eliminar los archivos que están actualmente en cola para su entrega a su destino. Deberá confirmar esta acción, ya que los datos en cola se eliminan permanentemente sin entregarse. |
Cuando haya terminado, seleccione Agregar.
Configuración de procesamiento
Configuración | valor | Descripción |
---|---|---|
Canalización | <\defined_pipeline> | Una canalización opcional para procesar los datos antes de enviarlos mediante esta salida. |
Campos del sistema | cribl_pipe (predeterminado), cribl_host , cribl_input , cribl_output , cribl_route , o cribl_wp |
Lista de campos que se agregan automáticamente a eventos antes de enviarlos a su destino. Se admite caracteres comodín. |
Cuando haya terminado, seleccione Agregar.
Configuración de Parquet
Muestra cuándo se selecciona Parquet para formato de datos.
Al elegir Parquet, se abre una pestaña de Configuración de Parquet para seleccionar el esquema de Parquet.
Configuración | valor | Descripción |
---|---|---|
Esquema automático | Activado o Desactivado | Seleccione Activar para generar un esquema de Parquet basado en los eventos de cada archivo de Parquet que escribe Cribl Stream. |
Esquema de Parquet | desplegable | Se muestra cuando un esquema automático está establecido en Desactivado para permitirle seleccionar el esquema de Parquet. |
Versión de Parquet | 1.0, 2.4, 2.6 (predeterminado) | La versión determina los tipos de datos admitidos y cómo se representan. |
Versión de la página de datos | V1, V2 (predeterminado) | Formato de serialización de página de datos. Si el lector de Parquet no admite Parquet V2, use V1. |
Límite de filas de grupo | 1 000 (predeterminado) | Número máximo de filas que cada grupo puede contener. |
Tamaño de página | 1 MB (valor predeterminado) | Tamaño de memoria de destino para segmentos de página. Los valores más bajos pueden mejorar la velocidad de lectura, mientras que los valores más altos pueden mejorar la compresión. |
Registrar filas no válidas | Sí o No. | Cuando se selecciona Sí y el nivel de registro se establece en debug , genera hasta 20 filas únicas omitidas debido a que el formato de datos no coincide. |
Escribir estadísticas | Activar (predeterminado) o Desactivar | Seleccione Activar si tiene configuradas las herramientas de visualización estadística de Parquet. |
Escribir índices de página | Activar (predeterminado) o Desactivar | Seleccione Activar si el lector de Parquet usa estadísticas de índice de página de Parquet para habilitar la omisión de páginas. |
Escribir suma de comprobación de página | Activado o Desactivado | Seleccione Activar si usa herramientas de Parquet para comprobar la integridad de los datos mediante sumas de comprobación de página de Parquet. |
Metadatos (opcional)* | Propiedades de metadatos del archivo de destino que se pueden incluir como pares clave-valor. |
Reintentos
Muestra cuando el modo de ingesta está establecido en Streaming.
Configuración | valor | Descripción |
---|---|---|
Respetar encabezado retry-after | Sí o No. | Si se debe respetar un encabezado Retry-After . Cuando está habilitada, se usa un encabezado Retry-After recibido antes de otras opciones configuradas en la sección Reintentos, siempre y cuando el encabezado especifique un retraso de 180 segundos o menos. De lo contrario, se omiten los encabezados Retry-After . |
Configuración de solicitudes HTTP erróneas | Códigos de estado HTTP | Lista de códigos de estado HTTP para reintentar automáticamente si no se pueden conectar. Cribl Stream reintenta automáticamente las solicitudes con error 429. |
Tiempo de espera agotado para el reintento de solicitudes HTTP | Activado o Desactivado | Cuando se establece, habrá más opciones de comportamiento de reintento disponibles. |
Intervalo de retroceso previo (ms) | 1 000 ms (predeterminado) | Tiempo de espera antes de volver a intentarlo. |
Multiplicador de retroceso | 2 s (predeterminado) | Se usa como base para el algoritmo de retroceso exponencial para determinar el intervalo entre reintentos. |
Límite de retroceso (ms) | 10 000 ms (predeterminado) | Intervalo de retroceso máximo para el reintento de streaming final. Los valores posibles oscilan entre 10 000 milisegundos (10 segundos) y 180 000 milisegundos (3 minutos). |
Cuando haya terminado, seleccione Agregar.
Configuración avanzada
Seleccione Configuración avanzada en la barra lateral. A continuación se describen las opciones avanzadas cuando se selecciona procesamiento por lotes:
Configuración | valor | Descripción |
---|---|---|
Vaciar inmediatamente | Sí o No (predeterminado). | Establezca en Sí para invalidar la agregación de datos en Kusto. Para más información, consulte Procedimientos recomendados para la biblioteca de ingesta de Kusto. |
Conservar el blob en caso de éxito | Sí o No (predeterminado). | Establézcalo en Sí para conservar el blob de datos tras la finalización de la ingesta. |
Etiquetas de extensión | <\ExtentTag, ET2,...> | Establezca etiquetas, si lo desea, en extensiones con particiones de la tabla de destino. |
Exigir unicidad mediante valores de etiqueta | Seleccione Agregar valor para especificar una lista de valores ingest-by que se usará para filtrar las extensiones entrantes y descartar las extensiones que coinciden con un valor enumerado. Para obtener más información, vea Extensiones (particiones de datos) |
|
Nivel de informe | DoNotReport, FailuresOnly (predeterminado) y FailuresAndSuccesses. | Nivel de informes de estado de ingesta. |
Método de informe | Cola (predeterminado), Tablay QueueAndTable (recomendado). | Destino de los informes de estado de ingesta. |
Campos adicionales | Agregue más propiedades de configuración, si lo desea, para enviar al servicio de ingesta. | |
Ubicación de almacenamiento provisional | /tmp (valor predeterminado) |
Ubicación del sistema de archivos local en la que almacenar en búfer los archivos antes de comprimirlos y moverlos al destino final. Cribl recomienda una ubicación estable y de alto rendimiento. |
Expresión de sufijo de nombre de archivo | .${C.env["CRIBL_WORKER_ID"]}.${__format}${__compression === "gzip" ? ".gz" : ""} (predeterminado) |
Expresión de JavaScript entre comillas o acento grave que se usan como sufijo de nombre de archivo de salida. format puede ser JSON o sin procesar y __compression puede ser ninguno o gzip. Se anexa una secuencia aleatoria de seis caracteres al final de los nombres de archivo para evitar que se sobrescriban. |
Tamaño máximo de archivo (MB) | 32 MB (predeterminado) | Tamaño máximo de archivo de salida sin comprimir que los archivos pueden alcanzar antes de cerrarlos y se mueven al contenedor de almacenamiento. |
Tiempo máximo de apertura de archivos (segundos) | 300 segundos (predeterminado) | Cantidad máxima de tiempo, en segundos, para escribir en un archivo antes de que se cierre y se mueva al contenedor de almacenamiento. |
Tiempo máximo de inactividad del archivo (segundos) | 30 segundos (valor predeterminado) | Cantidad máxima de tiempo, en segundos, para mantener abiertos los archivos inactivos antes de cerrarlos y moverlos al contenedor de almacenamiento. |
Máximo de archivos abiertos | 100 (valor predeterminado) | El número máximo de archivos que se pueden mantener abiertos al mismo tiempo antes de que se cierren los archivos abiertos más antiguos y se muevan al contenedor de almacenamiento. |
Máximo de elementos de archivo simultáneos | 1 (predeterminado) | Número máximo de elementos de archivo que se van a cargar al mismo tiempo. El valor predeterminado es 1 y el más alto es 10. Establecer el valor en uno permite enviar un elemento a la vez, secuencialmente. |
Quitar directorios de almacenamiento provisional vacíos | Sí (predeterminado) o No | Cuando se activa el botón de alternancia en Cribl Stream, se eliminan directorios de almacenamiento provisional vacíos después de mover archivos. Esto evita la proliferación de directorios vacíos huérfanos. Cuando está habilitada, expone el período de limpieza de almacenamiento provisional. |
Período de limpieza de almacenamiento provisional | 300 (predeterminado) | Cantidad de tiempo en segundos hasta que se eliminan directorios vacíos cuando se habilita Quitar directorios de ensayo. Se muestra cuando Quitar directorios de almacenamiento provisional vacíos está establecido en Sí. El valor mínimo es de 10 segundos y el máximo es de 86 400 segundos (cada 24 horas). |
Entorno | Cuando está vacío (predeterminado), la configuración está habilitada en todas partes. Si usa GitOps, puede especificar la rama de Git en la que desea habilitar la configuración. |
Cuando haya terminado, seleccione Guardar.
Configuración de la conexión
En la ventana configuración de conexión que se abre, seleccione Conexión Passthru y, a continuación, Guardar. El conector inicia la cola de los datos.
Confirmación de la ingesta de datos
Una vez que los datos llegan a la tabla, confirme la transferencia de datos; para ello, compruebe el recuento de filas:
<Tablename> | count
Confirme las ingestas en cola en los últimos cinco minutos:
.show commands-and-queries | where Database == "" and CommandType == "DataIngestPull" | where LastUpdatedOn >= ago(5m)
Confirme que no hay errores en el proceso de ingesta:
- Para el procesamiento por lotes:
.show ingestion failures
- Para streaming:
.show streamingingestion failures | order by LastFailureOn desc
Compruebe los datos de la tabla:
<TableName> | take 10
Para ejemplos de consultas e instrucciones, consulte Escribir consultas en KQL y Documentación del Lenguaje de consulta Kusto.