Ingerir dados do Telegraf no Azure Data Explorer
Importante
Este conector pode ser usado em Real-Time Intelligence no Microsoft Fabric. Use as instruções incluídas neste artigo com as seguintes exceções:
- Se necessário, crie bancos de dados usando as instruções em Criar um banco de dados KQL.
- Se necessário, crie tabelas usando as instruções em Criar uma tabela vazia.
- Obtenha URIs de consulta ou ingestão usando as instruções em Copiar URI.
- Execute consultas em um KQL queryset.
O Azure Data Explorer dá suporte à ingestão de dados do Telegraf. O Telegraf é um agente leve, de código aberto, com volume de memória mínimo, para coletar, processar e gravar dados de telemetria, incluindo logs, métricas e dados de IoT. O Telegraf dá suporte a centenas de plug-ins de entrada e saída. Ele é amplamente usado pela comunidade de código aberto e conta com seu suporte. O plug-in de saída do Azure Data Explorer funciona como o conector do Telegraf e dá suporte à ingestão de dados de vários tipos de plug-ins de entrada no Azure Data Explorer.
Pré-requisitos
- Uma assinatura do Azure. Criar uma conta gratuita do Azure.
- Um cluster e um banco de dados do Azure Data Explorer. Criar um cluster e um banco de dados.
- Telegraf. Hospede o Telegraf em uma VM (máquina virtual) ou em um contêiner. O Telegraf pode ser hospedado localmente onde o aplicativo ou o serviço que está sendo monitorado está implantado ou remotamente em uma computação ou em um contêiner de monitoramento dedicado.
Métodos de autenticação permitidos
O plug-in dá suporte aos seguintes métodos de autenticação:
Aplicativos do Microsoft Entra com chaves de aplicativo ou certificados.
- Para obter informações sobre como criar e registrar um aplicativo no Microsoft Entra ID, confira Registrar um aplicativo.
- Para obter mais informações sobre entidades de serviço, confira Objetos de aplicativo e de entidade de serviço no Microsoft Entra ID.
Tokens de usuário do Microsoft Entra
- Permite que o plug-in se autentique como um usuário. Só recomendamos usar esse método para fins de desenvolvimento.
Token da MSI (identidade de serviço gerenciada) do Azure
- Esse é o método de autenticação preferencial ao executar o Telegraf em um ambiente do Azure com suporte, como as Máquinas Virtuais do Azure.
Seja qual for o método usado, a entidade de segurança designada precisa receber a função Usuário de Banco de Dados no Azure Data Explorer. Essa função permite que o plug-in crie as tabelas necessárias para a ingestão de dados. Se o plug-in estiver configurado com create_tables=false
, a entidade de segurança designada precisará pelo menos da função Ingestor de Banco de Dados.
Configurar o método de autenticação
O plug-in verifica se há configurações específicas de variáveis de ambiente para determinar qual método de autenticação usar. As configurações são avaliadas na ordem especificada e a primeira configuração detectada é usada. Se não for detectada nenhuma configuração válida, o plug-in não será autenticado.
Para configurar a autenticação do plug-in, defina as variáveis de ambiente apropriadas para o método de autenticação escolhido:
Credenciais do cliente (tokens de aplicativo do Microsoft Entra): ID e segredo do aplicativo do Microsoft Entra.
AZURE_TENANT_ID
: a ID de locatário do Microsoft Entra usada para autenticação.AZURE_CLIENT_ID
: a ID do cliente de um registro de aplicativo no locatário.AZURE_CLIENT_SECRET
: o segredo do cliente que foi gerado para o registro do aplicativo.
Certificado do cliente (tokens de aplicativo do Microsoft Entra): a ID do aplicativo do Microsoft Entra e um certificado X.509.
AZURE_TENANT_ID
: a ID de locatário do Microsoft Entra usada para autenticação.AZURE_CERTIFICATE_PATH
: um caminho para o par de certificado e chave privada no formato PEM ou PFX, que pode autenticar o registro de aplicativo.AZURE_CERTIFICATE_PASSWORD
: a senha que foi definida para o certificado.
Senha do proprietário do recurso (tokens de usuário do Microsoft Entra): usuário e senha do Microsoft Entra. Não recomendamos o uso desse tipo de concessão. Se você precisar de uma entrada interativa, use o logon do dispositivo.
AZURE_TENANT_ID
: a ID de locatário do Microsoft Entra usada para autenticação.AZURE_CLIENT_ID
: a ID do cliente de um registro de aplicativo no locatário.AZURE_USERNAME
: o nome de usuário, também conhecido como upn, de uma conta de usuário do Microsoft Entra.AZURE_PASSWORD
: a senha da conta de usuário do Microsoft Entra. Observe que essa opção não dá suporte a contas com a MFA habilitada.
Identidade de Serviço Gerenciada do Azure: delegar o gerenciamento de credenciais à plataforma. Esse método exige que o código seja executado no Azure, por exemplo, na VM. Toda a configuração é processada pelo Azure. Para obter mais informações, consulte Identidade de Serviço Gerenciada do Azure. Esse método só está disponível ao usar o Azure Resource Manager .
Configurar o Telegraf
O Telergraf é um agente controlado por configuração. Para começar, você precisa instalar o Telegraf e configurar os plug-ins de entrada e de saída necessários. O local padrão do arquivo de configuração é o seguinte:
- No Windows: C:\Arquivos de Programas\Telegraf\telegraf.conf
- No Linux: etc/telegraf/telegraf.conf
Para habilitar o plug-in de saída do Azure Data Explorer, remova a marca de comentário da seguinte seção no arquivo de configuração gerado automaticamente:
[[outputs.azure_data_explorer]]
## The URI property of the Azure Data Explorer resource on Azure
## ex: https://myadxresource.australiasoutheast.kusto.windows.net
# endpoint_url = ""
## The Azure Data Explorer database that the metrics will be ingested into.
## The plugin will NOT generate this database automatically, it's expected that this database already exists before ingestion.
## ex: "exampledatabase"
# database = ""
## Timeout for Azure Data Explorer operations, default value is 20 seconds
# timeout = "20s"
## Type of metrics grouping used when ingesting to Azure Data Explorer
## Default value is "TablePerMetric" which means there will be one table for each metric
# metrics_grouping_type = "TablePerMetric"
## Name of the single table to store all the metrics (Only needed if metrics_grouping_type is "SingleTable").
# table_name = ""
## Creates tables and relevant mapping if set to true(default).
## Skips table and mapping creation if set to false, this is useful for running telegraf with the least possible access permissions i.e. table ingestor role.
# create_tables = true
Tipos de ingestão com suporte
O plug-in dá suporte à ingestão gerenciada (em fluxo) e enfileirada (em lote). O tipo de ingestão padrão é em fila.
Importante
Para usar a ingestão gerenciada, você deve habilitar a ingestão por fluxo em seu cluster.
Para configurar o tipo de ingestão para o plug-in, modifique, da seguinte maneira, o arquivo de configuração gerado automaticamente:
## Ingestion method to use.
## Available options are
## - managed -- streaming ingestion with fallback to batched ingestion or the "queued" method below
## - queued -- queue up metrics data and process sequentially
# ingestion_type = "queued"
Dados ingeridos pela consulta
Veja a seguir exemplos de dados coletados usando os plug-ins de entrada de SQL e do Syslog, juntamente com o plug-in de saída do Azure Data Explorer. Para cada método de entrada, há um exemplo de como usar transformações de dados e consultas no Azure Data Explorer.
Plug-in de entrada de SQL
A seguinte tabela mostra dados de métricas de exemplo coletados pelo plug-in de entrada de SQL:
name | tags | timestamp | fields |
---|---|---|---|
sqlserver_database_io | {"database_name":"azure-sql-db2","file_type":"DATA","host":"adx-vm","logical_filename":"tempdev","measurement_db_type":"AzureSQLDB","physical_filename":"tempdb.mdf","replica_updateability":"READ_WRITE","sql_instance":"adx-sql-server"} | 2021-09-09T13:51:20Z | {"current_size_mb":16,"database_id":2,"file_id":1,"read_bytes":2965504,"read_latency_ms":68,"reads":47,"rg_read_stall_ms":42,"rg_write_stall_ms":0,"space_used_mb":0,"write_bytes":1220608,"write_latency_ms":103,"writes":149} |
sqlserver_waitstats | {"database_name":"azure-sql-db2","host":"adx-vm","measurement_db_type":"AzureSQLDB","replica_updateability":"READ_WRITE","sql_instance":"adx-sql-server","wait_category":"Worker Thread","wait_type":"THREADPOOL"} | 2021-09-09T13:51:20Z | {"max_wait_time_ms":15,"resource_wait_ms":4469,"signal_wait_time_ms":0,"wait_time_ms":4469,"waiting_tasks_count":1464} |
Como o objeto de métricas coletado é um tipo complexo, as colunas campos e marcas são armazenadas como tipos de dados dinâmicos. Há várias maneiras de consultar esses dados, por exemplo:
Consultar atributos JSON diretamente: você pode consultar dados JSON em formato bruto sem analisá-los.
Exemplo 1
Tablename | where name == "sqlserver_azure_db_resource_stats" and todouble(fields.avg_cpu_percent) > 7
Exemplo 2
Tablename | distinct tostring(tags.database_name)
Observação
Essa abordagem pode afetar o desempenho quando são usados grandes volumes de dados. Nesses casos, use a abordagem de política de atualização.
Use uma política de atualização: transformar colunas de tipo de dados dinâmicos usando uma política de atualização. Recomendamos essa abordagem para consultar grandes volumes de dados.
// Function to transform data .create-or-alter function Transform_TargetTableName() { SourceTableName | mv-apply fields on (extend key = tostring(bag_keys(fields)[0])) | project fieldname=key, value=todouble(fields[key]), name, tags, timestamp } // Create destination table with above query's results schema (if it doesn't exist already) .set-or-append TargetTableName <| Transform_TargetTableName() | take 0 // Apply update policy on destination table .alter table TargetTableName policy update @'[{"IsEnabled": true, "Source": "SourceTableName", "Query": "Transform_TargetTableName()", "IsTransactional": true, "PropagateIngestionProperties": false}]'
Plug-in de entrada do Syslog
A seguinte tabela mostra dados de métricas de exemplo coletados pelo plug-in de entrada do Syslog:
name | tags | timestamp | fields |
---|---|---|---|
syslog | {"appname":"azsecmond","facility":"user","host":"adx-linux-vm","hostname":"adx-linux-vm","severity":"info"} | 2021-09-20T14:36:44Z | {"facility_code":1,"message":" 2021/09/20 14:36:44.890110 Failed to connect to mdsd: dial unix /var/run/mdsd/default_djson.socket: connect: no such file or directory","procid":"2184","severity_code":6,"timestamp":"1632148604890477000","version":1} |
syslog | {"appname":"CRON","facility":"authpriv","host":"adx-linux-vm","hostname":"adx-linux-vm","severity":"info"} | 2021-09-20T14:37:01Z | {"facility_code":10,"message":" pam_unix(cron:session): session opened for user root by (uid=0)","procid":"26446","severity_code":6,"timestamp":"1632148621120781000","version":1} |
Há várias maneiras de nivelar colunas dinâmicas usando o operador de extensão ou o plug-in bag_unpack(). Você pode usar qualquer um deles na função Transform_TargetTableName() da política de atualização.
Usar o operador de extensão: recomendamos o uso dessa abordagem, pois ela é mais rápida e robusta. Mesmo que o esquema seja alterado, isso não interromperá as consultas ou os painéis.
Tablename | extend facility_code=toint(fields.facility_code), message=tostring(fields.message), procid= tolong(fields.procid), severity_code=toint(fields.severity_code), SysLogTimestamp=unixtime_nanoseconds_todatetime(tolong(fields.timestamp)), version= todouble(fields.version), appname= tostring(tags.appname), facility= tostring(tags.facility),host= tostring(tags.host), hostname=tostring(tags.hostname), severity=tostring(tags.severity) | project-away fields, tags
Usar o plug-in bag_unpack(): essa abordagem descompacta automaticamente as colunas de tipo dinâmico. A alteração do esquema de origem pode causar problemas durante a expansão dinâmica de colunas.
Tablename | evaluate bag_unpack(tags, columnsConflict='replace_source') | evaluate bag_unpack(fields, columnsConflict='replace_source')