Ingerir dados do fluxo do Cribl para o Azure Data Explorer
Cribl Stream é um mecanismo de processamento que coleta, processa e transmite com segurança dados de eventos de computadores de qualquer fonte. Ele permite que você analise e processe esses dados para qualquer destino, para análise e gerenciamento de forma segura.
Este artigo mostra como ingerir dados com o Cribl Stream.
Para obter uma lista completa de conectores de dados, consulte Visão geral das integrações de dados.
Pré-requisitos
- Uma conta do Cribl Stream
- Um cluster e um banco de dados do Azure Data Explorer com as políticas de cache e retenção padrão.
- Um ambiente de consulta. Para mais informações, confira a Visão geral de integrações de consulta.
- O URI do cluster Kusto para o valor TargetURI no formato https://ingest-<cluster>.<região>.kusto.windows.net. Para obter mais informações, consulte Adicionar uma conexão de cluster.
Crie uma entidade de serviço do Microsoft Entra.
A entidade de serviço do Microsoft Entra pode ser criada por meio do portal do Azure ou programaticamente, como no exemplo a seguir.
Essa entidade de serviço é a identidade usada pelo conector para gravar dados na sua tabela no Kusto. Posteriormente, você vai conceder para essa entidade de serviço permissões de acesso aos recursos do Kusto.
Inicie sessão na sua assinatura do Azure com a CLI do Azure. Em seguida, autentique no navegador.
az login
Escolha a assinatura para hospedar a entidade de segurança. Essa etapa é necessária quando você tem várias assinaturas.
az account set --subscription YOUR_SUBSCRIPTION_GUID
Crie a entidade de serviço. Neste exemplo, a entidade de serviço é chamada
my-service-principal
.az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
A partir dos dados JSON retornados, copie o
appId
,password
etenant
para uso futuro.{ "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" }
Você criou o aplicativo do Microsoft Entra e a entidade de serviço.
Criar uma tabela de destino
Crie uma tabela de destino para os dados de entrada e um mapeamento de ingestão para mapear as colunas de dados ingeridas para as colunas na tabela de destino.
Execute o seguinte comando de criação de tabela no editor de consultas, substituindo o espaço reservado TableName pelo nome da tabela de destino:
.create table <TableName> (_raw: string, _time: long, cribl_pipe: dynamic)
Execute o seguinte comando criar mapeamento de ingestão, substituindo os espaços reservados TableName pelo nome da tabela de destino e TableNameMapping pelo nome do mapeamento de ingestão:
.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 à entidade de serviço de Criar uma entidade de serviço do Microsoft Entra permissões de função de ingestor de banco de dados para trabalhar com o banco de dados. Para obter mais informações, consulte os Exemplos. Substitua o espaço reservado DatabaseName pelo nome do banco de dados de destino e ApplicationID pelo valor
AppId
que você salvou ao criar uma entidade de serviço do Microsoft Entra..add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'App Registration'
Criar destino do Cribl Stream
A seção a seguir descreve como criar um destino do Cribl Stream que grava dados na sua tabela no Kusto. Cada tabela requer um conector de destino separado do Cribl Stream.
Selecionar destino
Para conectar o Cribl Stream à sua tabela:
No menu superior do Cribl, selecione Gerenciar e, em seguida, selecione um Grupo de Trabalho.
Selecione Roteamento > QuickConnect (Stream) > Adicionar Destino.
Na janela Configurar novo Destino QuickConnect, escolha Azure Data Explorer e clique em Adicionar agora.
Definir as configurações gerais
Na janela Novo Data Explorer, em Configurações Gerais, defina as seguintes configurações:
Configuração | Valor | Descrição |
---|---|---|
ID de Saída | <ID de Saída>, por exemplo, KustoDestination | O nome usado para identificar o seu destino. |
Modo de Ingestão | Envio em lote (padrão) ou Transmissão | As configurações do modo de ingestão. O envio em lote permite que sua tabela efetue pull de lotes de dados de um contêiner de armazenamento do Cribl ao ingerir grandes quantidades de dados em um curto período. A transmissão envia os dados diretamente para a tabela KQL de destino. A transmissão é útil para ingerir pequenas quantidades de dados ou, por exemplo, enviar um alerta crítico em tempo real. A transmissão pode alcançar menor latência do que o envio em lote. Se o modo de ingestão estiver configurado para Transmissão, você precisará habilitar uma política de transmissão. Para mais informações, confira a Política de ingestão por transmissão. |
URI base do cluster | URI base | O URI base. |
URI do serviço de ingestão | URI de ingestão | Exibido quando o modo Envio em lote está selecionado. O URI de ingestão. |
Nome do banco de dados | <DatabaseName> | O nome do seu banco de dados de destino. |
Nome da tabela | <TableName> | O nome da sua tabela de destino. |
Validar as configurações do banco de dados | Sim (padrão) ou Não. | Valida as credenciais do aplicativo da entidade de serviço que você inseriu ao salvar ou iniciar seu destino. Valida o nome da tabela, exceto quando a opção Adicionar objeto de mapeamento estiver ativada. Essa configuração deve ser desabilitada se o seu aplicativo não tiver as funções Visualizador de Banco de Dados e Visualizador de Tabela. |
Adicionar objeto de mapeamento | Sim ou Não (padrão) | Exibido apenas quando o modo Envio em lote está selecionado, em vez do campo de texto padrão Mapeamento de dados. Selecionar Sim abre uma janela para inserir um mapeamento de dados como um objeto JSON. |
Mapeamento de dados | O nome do esquema de mapeamento, conforme definido na etapa Criar uma tabela de destino. | O nome do esquema de mapeamento. O modo de exibição padrão quando Adicionar objeto de mapeamento está configurado como Não. |
Compress | gzip (padrão) | Quando o Formato de dados está configurado para Parquet, a opção Compactar não está disponível. |
Formato dos dados | JSON (padrão), Raw ou Parquet. | O formato de dados. Parquet está disponível apenas no modo Envio em lote e só tem suporte no Linux. |
Comportamento de contrapressão | Bloquear (padrão) ou Descartar | Escolha bloquear ou descartar eventos quando os receptores estiverem exercendo contrapressão. |
Marcas | Valores opcionais | Marcas opcionais para filtrar e agrupar destinos na página de Gerenciamento de Destinos do Cribl Stream. Use uma tabulação ou retorno de carro entre os nomes das marcas. Essas marcas não são adicionadas a eventos processados. |
Quando concluído, selecione Avançar.
Configurações de autenticação
Selecione Configurações de Autenticação na barra lateral. Use os valores salvos em Criar uma entidade de serviço do Microsoft Entra juntamente com seu URI base da seguinte forma:
Configuração | Valor | Descrição |
---|---|---|
ID do Locatário | <TenantID> | Use o tenant valor salvo em Criar uma entidade de serviço do Microsoft Entra. |
ID do Cliente | <ClientID> | Use os appId valores salvos em Criar uma entidade de serviço do Microsoft Entra. |
Escopo | <baseuri>/.default |
Use o valor da URI base para baseuri. |
Método de autenticação | Segredo do cliente, Segredo do cliente (segredo do texto) ou Certificado | As opções são Segredo do cliente Use o segredo do cliente do aplicativo Microsoft Entra que você criou em Criar uma entidade de serviço do Microsoft Entra para Segredo do cliente. Para Certificado, o seu certificado usa a chave pública que você registrou/registrará para o aplicativo Microsoft Entra que você criou em Criar um entidade de serviço do Microsoft Entra. |
Em seguida, selecione Avançar.
Fila Persistente
Exibido quando o Modo de Ingestão está configurado como Transmissão e o Comportamento de Contrapressão está configurado como Fila Persistente.
Configuração | Valor | Descrição |
---|---|---|
Tamanho máximo do arquivo | 1 MB (padrão) | O tamanho máximo do arquivo de fila a ser atingido antes de fechar o arquivo. Inclua unidades como KB ou MB ao inserir um número. |
Tamanho máximo da fila | 5 GB (padrão) | A quantidade máxima de espaço em disco que a fila pode consumir em cada Processo de Trabalho antes que o Destino pare de enfileirar dados. Um valor obrigatório de números positivos com unidades como KB, MB ou GB. O valor máximo é 1 TB. |
Caminho do arquivo da fila | $CRIBL_HOME/state/queues (padrão) |
O local do arquivo da fila persistente. O Cribl Stream acrescenta /<worker‑id>/<output‑id> a esse valor. |
Compactação | Nenhum (padrão), gzip | O método de compressão a ser utilizado para comprimir os dados persistentes, ao fechar. |
Comportamento de fila cheia | Bloquear ou Descartar | Escolha bloquear ou descartar eventos quando a fila exercer contrapressão devido à baixa ou total capacidade de disco. |
Ordem estrita | Sim (padrão) ou Não | Quando configurado como Sim, os eventos são encaminhados com base no princípio: primeiro a entrar, primeiro a sair. Configure como Não para enviar novos eventos antes dos eventos já enfileirados. |
Limite de taxa de drenagem (EPS) | 0 (padrão) | Esta opção é exibida quando a Ordenação Estrita está configurada como Não, permitindo que você configure uma taxa de limitação (em eventos por segundo) ao gravar da fila para os receptores. Limitar a taxa de drenagem dos eventos enfileirados aumenta a taxa de transferência de novas ou ativas conexões. Zero desabilita a limitação. |
Limpar a Fila Persistente | NA | Selecione para excluir arquivos atualmente enfileirados para entrega ao seu Destino. Você precisará confirmar essa ação, pois os dados enfileirados são excluídos permanentemente sem serem entregues. |
Quando terminar, selecione Avançar.
Configurações de processamento
Configuração | Valor | Descrição |
---|---|---|
Pipeline | <\defined_pipeline> | Um pipeline opcional para processar dados antes de enviá-los usando essa saída. |
Campos do sistema | cribl_pipe (padrão), cribl_host , cribl_input , cribl_output , cribl_route ou cribl_wp |
Uma lista de campos que são automaticamente adicionados a eventos antes de serem enviados ao seu destino. Há suporte para caracteres curinga. |
Quando terminar, selecione Avançar.
Configurações do Parquet
Exibido quando o Parquet está selecionado para Formato de Dados.
Escolher o Parquet abre uma guia de Configurações do Parquet, permitindo selecionar o esquema do Parquet.
Configuração | Valor | Descrição |
---|---|---|
Esquema automático | Ligado ou Desligado | Selecione Ativado para gerar um esquema do Parquet com base nos eventos de cada arquivo do Parquet que o Cribl Stream grava. |
Esquema do Parquet | Lista suspensa | Exibido quando o Esquema Automático está configurado como Desativado para permitir a seleção do seu esquema Parquet. |
Versão do Parquet | 1.0, 2.4, 2.6 (padrão) | A versão determina os tipos de dados com suporte e como eles estão representados. |
Versão da página de dados | V1, V2 (padrão) | O formato de serialização da página de dados. Se o seu leitor Parquet não der suporte ao Parquet V2, use o V1. |
Limite de linhas do grupo | 1.000 (padrão) | O número máximo de linhas que cada grupo pode conter. |
Tamanho da página | 1 MB (padrão) | O tamanho da memória de destino para segmentos de página. Valores menores podem melhorar a velocidade de leitura, enquanto valores maiores podem melhorar a compactação. |
Log de linhas inválidas | Sim ou Não | Quando Sim está selecionado, e o Nível de log está definido para debug , até 20 linhas exclusivas que foram ignoradas devido a incompatibilidade de formato de dados serão registradas. |
Gravar estatísticas | Ativado (padrão) ou Desativado | Selecione Ativado se você tiver as ferramentas de visualização de estatísticas do Parquet configuradas. |
Gravar índices de página | Ativado (padrão) ou Desativado | Selecione Ativado se o seu leitor do Parquet usar estatísticas de índice de páginas do Parquet para permitir a omissão de páginas. |
Gravar a soma de verificação da página | Ligado ou Desligado | Selecione Ativado se você usar ferramentas do Parquet para verificar a integridade dos dados usando somas de verificação de páginas do Parquet. |
Metadados (opcional)* | As propriedades dos metadados do arquivo de destino que podem ser incluídas como pares de chave-valor. |
Novas tentativas
Exibido quando o modo de Ingestão está configurado como Transmissão.
Configuração | Valor | Descrição |
---|---|---|
Respeitar o cabeçalho Retry-After | Sim ou Não | Se o cabeçalho Retry-After for respeitado. Quando ativado, um cabeçalho Retry-After recebido tem precedência e é utilizado antes de outras opções configuradas na seção de Tentativas, desde que o cabeçalho especifique um atraso de até 180 segundos. Caso contrário, os cabeçalhos Retry-After serão ignorados. |
Configurações para solicitações HTTP com falha | Códigos de status HTTP | Uma lista de códigos de status HTTP para tentar novamente automaticamente caso falhem na conexão. O Cribl Stream repete automaticamente tentativas de solicitações com falha 429. |
Repetir solicitações HTTP com tempo limite atingido | Ligado ou Desligado | Quando definido, mais configurações de comportamento de repetição se tornam disponíveis. |
Intervalo de pré-retirada (ms) | 1.000 ms (padrão) | O tempo de espera antes de tentar novamente. |
Multiplicador de retirada | 2 s (padrão) | Usado como base para o algoritmo de retirada exponencial para determinar o intervalo entre tentativas. |
Limite de recuo (ms) | 10.000 ms (padrão) | O intervalo máximo de retirada para a repetição final da transmissão. Os valores possíveis variam de 10.000 milissegundos (10 segundos) a 180.000 milissegundos (3 minutos) |
Quando terminar, selecione Avançar.
Configurações avançadas
Selecione Configurações Avançadas na barra lateral. O seguinte descreve as configurações avançadas quando o modo Envio em lote está selecionado:
Configuração | Valor | Descrição |
---|---|---|
Liberar imediatamente | Sim ou Não (padrão) | Configure para Sim para substituir a agregação de dados no Kusto. Para mais informações, confira Melhores práticas para a biblioteca de ingestão do Kusto. |
Reter o blob ao concluir | Sim ou Não (padrão) | Configure para Sim para reter o blob de dados após a conclusão da ingestão. |
Marcas de extensão | <\ExtentTag, ET2,...> | Defina marcas, se desejar, para as extensões particionadas da tabela de destino. |
Impor exclusividade via valores de marcas | Selecione Adicionar valor para especificar uma lista de valores ingest-by a serem usados para filtrar extensões de entrada e descartar as extensões que correspondem a um valor listado. Para mais informações, confira Extensões (fragmentos de dados) |
|
Nível de relatório | DoNotReport, FailuresOnly (padrão) e FailuresAndSuccesses. | O nível de relatório de status da ingestão. |
Método de relatório | Fila (padrão), Tabela e QueueAndTable (recomendado) | Destino para o relatório de status da ingestão. |
Campos adicionais | Adicione mais propriedades de configuração, se desejar, para enviar ao serviço de ingestão. | |
Localização do preparo | /tmp (padrão) |
Localização do sistema de arquivos local no qual armazenar os arquivos temporariamente antes de comprimi-los e movê-los para o destino final. O Cribl recomenda uma localização estável e de alto desempenho. |
Expressão do sufixo do nome do arquivo | .${C.env["CRIBL_WORKER_ID"]}.${__format}${__compression === "gzip" ? ".gz" : ""} (padrão) |
Uma expressão JavaScript entre aspas ou crases usada como sufixo do nome do arquivo de saída. format pode ser JSON ou RAW, e __compression pode ser nenhum ou gzip. Uma sequência aleatória de seis caracteres é anexada ao final dos nomes de arquivos para evitar que sejam substituídos. |
Tamanho máximo do arquivo (MB) | 32 MB (padrão) | O tamanho máximo do arquivo de saída descompactado que os arquivos podem atingir antes de serem fechados e movidos para o contêiner de armazenamento. |
Tempo máximo de abertura do arquivo (segundos) | 300 segundos (padrão) | O tempo máximo, em segundos, para gravar em um arquivo antes de fechá-lo e movê-lo para o contêiner de armazenamento. |
Tempo máximo de ociosidade do arquivo (segundos) | 30 segundos (padrão) | O tempo máximo, em segundos, para manter arquivos inativos abertos antes de fechá-los e movê-los para o contêiner de armazenamento. |
Máximo de arquivos abertos | 100 (padrão) | O número máximo de arquivos para manter abertos ao mesmo tempo antes que os arquivos abertos mais antigos sejam fechados e movidos para o contêiner de armazenamento. |
Número máximo de partes de arquivos simultâneas | 1 (padrão) | O número máximo de partes de arquivos a serem carregadas ao mesmo tempo. O padrão é 1 e o máximo é 10. Definir o valor para 1 permite enviar uma parte por vez, sequencialmente. |
Remover diretórios de preparo vazios | Sim (padrão) ou Não | Quando ativado, o Cribl Stream exclui os diretórios de preparo vazios após mover os arquivos. Isso evita a proliferação de diretórios vazios órfãos. Quando habilitado, expõe o Período de limpeza de preparo. |
Período de limpeza de preparo | 300 (padrão) | O tempo em segundos até que os diretórios vazios sejam excluídos quando Remover diretórios de preparo estiver habilitado. Exibido quando Remover diretórios de preparo vazios está configurado como Sim. O valor mínimo é de 10 segundos, e o máximo é de 86.400 segundos (24 horas) |
Ambiente | Quando vazio (padrão), a configuração é habilitada em todos os lugares. Se você estiver usando GitOps, poderá especificar o branch do Git em que deseja habilitar a configuração. |
Quando concluído, selecione Salvar.
Configuração de conexão
Na janela Configuração de Conexão que será aberta, selecione Conexão Passthru e, em seguida, Salvar. O conector começa a enfileirar os dados.
Confirmar ingestão de dados
Quando os dados chegarem à tabela, confirme a transferência dos dados, verificando a contagem de linhas:
<Tablename> | count
Confirme as ingestões enfileiradas nos últimos cinco minutos:
.show commands-and-queries | where Database == "" and CommandType == "DataIngestPull" | where LastUpdatedOn >= ago(5m)
Confirme se não há falhas no processo de ingestão:
- Para envio em lote:
.show ingestion failures
- Para transmissão:
.show streamingingestion failures | order by LastFailureOn desc
Verifique os dados na sua tabela:
<TableName> | take 10
Para exemplos de consultas e diretrizes, confira Escrever consultas em KQL e Documentação da Linguagem de Consulta Kusto.