Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Microsoft Fabric Real-Time Intelligence admite la ingesta de datos de Telegraf. Telegraf es un agente ligero de código abierto que usa memoria mínima para recopilar, procesar y escribir datos de telemetría: registros, métricas e IoT.
Lo que aprenderá en este artículo:
- Configure Telegraf para enviar métricas a Microsoft Fabric Eventhouse.
- Elija la configuración de la cadena de conexión (MetricsGroupingType, IngestionType) y las opciones de autenticación.
- Cree tablas y consulte las métricas ingeridas para el análisis casi en tiempo real.
Telegraf admite cientos de complementos de entrada y salida. Una amplia comunidad de código abierto usa y lo admite.
El complemento de salida de Microsoft Fabric Real-Time Intelligence sirve como conector de Telegraf y envía datos de muchos complementos de entrada a Eventhouse, un almacén de datos escalable y de alto rendimiento para análisis en tiempo real.
Sugerencia
También puede configurar Telegraf para enviar datos a una secuencia de eventos. Para obtener más información, consulte Complemento Telegraf.
Prerrequisitos
- Un área de trabajo de Microsoft Fabric con Real-Time Intelligence habilitado.
- Una instancia de Eventhouse y una base de datos de KQL (Lenguaje de Consulta Kusto). Cree un centro de eventos.
- Telegraf versión 1.35.0 o posterior. Hospede Telegraf en una máquina virtual (VM) o contenedor, ya sea localmente donde se ejecuta la aplicación o el servicio supervisados o de forma remota en un proceso o contenedor de supervisión dedicado.
- Asigne al principal que ejecuta Telegraf los permisos adecuados en Microsoft Fabric y asigne el rol de usuario de base de datos o superior para la base de datos de Eventhouse.
Métodos de autenticación admitidos
El complemento usa DefaultAzureCredential autenticación. Esta credencial intenta varios métodos de autenticación en orden hasta que uno tenga éxito, por lo que no requiere credenciales embebidas.
Cadena de credenciales predeterminada de Azure
Las credenciales predeterminadas de Azure prueban automáticamente los métodos de autenticación en este orden:
Variables de entorno : comprueba si hay credenciales de principal de servicio en variables de entorno:
-
AZURE_CLIENT_ID, ,AZURE_CLIENT_SECRETAZURE_TENANT_ID(para la autenticación de secretos de cliente) -
AZURE_CLIENT_ID, ,AZURE_CLIENT_CERTIFICATE_PATHAZURE_TENANT_ID(para la autenticación de certificados de cliente)
-
Identidad administrada : usa una identidad administrada asignada por el sistema o asignada por el usuario si se ejecuta en recursos de Azure (máquinas virtuales, App Service, Functions, etc.)
CLI de Azure : usa credenciales de si la CLI de
az loginAzure está instalada y el usuario ha iniciado sesiónAzure PowerShell : usa credenciales de
Connect-AzAccountsi Azure PowerShell está instalado y el usuario ha iniciado sesiónExplorador interactivo : abre el explorador para el inicio de sesión interactivo (normalmente deshabilitado en escenarios de producción)
Opciones de configuración de autenticación
Elija el método de autenticación que mejor se adapte a su escenario de implementación:
Para producción (recomendado)
- Uso de identidad administrada al ejecutar Telegraf en recursos de Azure (máquinas virtuales, contenedores, etc.)
- Utilice Service Principal con variables de entorno para entornos que no son de Azure
Para el desarrollo
- Uso de la autenticación de la CLI de Azure mediante la ejecución de
az login - Uso de la autenticación de Azure PowerShell mediante la ejecución de
Connect-AzAccount
Variables de entorno de entidad de servicio: Si usa la autenticación de entidad de servicio, establezca estas variables de entorno:
Reemplace el texto del marcador de posición en el ejemplo siguiente por sus propios valores.
export AZURE_TENANT_ID=<your-tenant-id>
export AZURE_CLIENT_ID=<your-client-id>
export AZURE_CLIENT_SECRET=<your-client-secret>
Configuración de Telegraf
Telegraf es un agente controlado por la configuración. Para empezar, debe instalar Telegraf y configurar los complementos de entrada y salida necesarios. La ubicación predeterminada del archivo de configuración es la siguiente:
- Para Windows: C:\Archivos de programa\Telegraf\telegraf.conf
- Para Linux: /etc/telegraf/telegraf.conf
Para habilitar el complemento de salida de Microsoft Fabric para Eventhouse, agregue la siguiente sección al archivo de configuración:
[[outputs.microsoft_fabric]]
## The connection string for Microsoft Fabric Eventhouse
connection_string = "Data Source=https://your-eventhouse.fabric.microsoft.com;Database=your-database;MetricsGroupingType=TablePerMetric;CreateTables=true"
## Client timeout
# timeout = "30s"
Configuración de la cadena de conexión
connection_string Proporciona información necesaria para que el complemento establezca una conexión con el punto de conexión de Eventhouse. Es una lista delimitada por punto y coma de pares de parámetros nombre-valor.
Parámetros de cadena de conexión de Eventhouse
En la tabla siguiente se enumeran todas las propiedades posibles que se pueden incluir en una cadena de conexión para Eventhouse:
| Nombre de propiedad | Alias | Description | Predeterminado |
|---|---|---|---|
| Origen de datos | Dir, Dirección, Dirección de Red, Servidor | URI que especifica el punto de conexión del servicio Eventhouse. Por ejemplo: https://mycluster.fabric.microsoft.com. |
Obligatorio |
| Catálogo original | Base de datos | Nombre de la base de datos en Eventhouse. Por ejemplo: MyDatabase. |
Obligatorio |
| Tipo de ingesta | TipoDeIngesta | Los valores se pueden establecer en managed para la ingesta de streaming con alternativa a la ingesta por lotes o en queued para poner en cola métricas y procesarlas secuencialmente. |
queued |
| Nombre de la tabla | TableName | Nombre de la tabla única para almacenar todas las métricas; solo es necesario si MetricsGroupingType es SingleTable |
- |
| Crear tablas | CreateTables | Crea tablas y crea la asignación pertinente si true. De lo contrario, se omite la creación de tablas y mapeo. Resulta útil para ejecutar Telegraf con los permisos más bajos posibles, por ejemplo, el rol de ingeror de tabla. |
true |
| Tipo de agrupación de métricas | Tipo de Agrupación de Métricas | Tipo de agrupación de métricas utilizada al insertar en Eventhouse, ya sea TablePerMetric o SingleTable. |
TablePerMetric |
Ejemplos de cadena de conexión
Agrupación TablePerMetric (recomendado):
connection_string = "Data Source=https://mycluster.fabric.microsoft.com;Database=MyDatabase;MetricsGroupingType=TablePerMetric;CreateTables=true"
Agrupación de tabla única:
connection_string = "Data Source=https://mycluster.fabric.microsoft.com;Database=MyDatabase;MetricsGroupingType=SingleTable;Table Name=telegraf_metrics;CreateTables=true"
Con administración de la ingesta:
connection_string = "Data Source=https://mycluster.fabric.microsoft.com;Database=MyDatabase;IngestionType=managed;CreateTables=true"
Agrupación de métricas
Las métricas se pueden agrupar de dos maneras cuando se envían a Eventhouse:
TablePerMetric (recomendado)
El complemento agrupa las métricas por el nombre de la métrica y envía cada grupo de métricas a una tabla de base de datos KQL de Eventhouse independiente. Si la tabla no existe, el complemento crea la tabla. Si la tabla existe, el complemento intenta combinar el esquema de métricas de Telegraf con la tabla existente.
El nombre de la tabla coincide con el nombre de la métrica. El nombre de la métrica debe cumplir las restricciones de nomenclatura de tablas de base de datos KQL de Eventhouse.
SingleTable
El complemento envía todas las métricas recibidas a una única tabla de base de datos de Eventhouse KQL. El nombre de la tabla debe proporcionarse a través del parámetro Table Name en connection_string. Si la tabla no existe, el complemento crea la tabla. Si la tabla existe, el complemento intenta combinar el esquema de métricas de Telegraf con la tabla existente.
Tipos de ingesta
El complemento admite dos tipos de ingesta:
Ingestión en cola (por defecto)
El servicio encola y procesa las métricas en lotes. Es el método predeterminado y recomendado para la mayoría de los casos de uso, ya que proporciona un mejor rendimiento y confiabilidad.
Ingesta gestionada
La ingesta de streaming con reserva a la ingesta por lotes proporciona una menor latencia, pero vuelve a la ingesta por lotes cuando la ingesta de streaming no está habilitada en Eventhouse.
Importante
Para usar la ingesta administrada, debe habilitar la ingesta de streaming en su Eventhouse.
Para comprobar si la ingesta de streaming está habilitada, ejecute esta consulta en eventhouse:
.show database <DB-Name> policy streamingingestion
Esquema de tabla
Eventhouse crea automáticamente tablas cuyo esquema coincide con la estructura de métricas de Telegraf:
.create-merge table ['table-name'] (['fields']:dynamic, ['name']:string, ['tags']:dynamic, ['timestamp']:datetime)
La asignación de tabla correspondiente se crea automáticamente:
.create-or-alter table ['table-name'] ingestion json mapping 'table-name_mapping' '[{"column":"fields", "Properties":{"Path":"$[\'fields\']"}},{"column":"name", "Properties":{"Path":"$[\'name\']"}},{"column":"tags", "Properties":{"Path":"$[\'tags\']"}},{"column":"timestamp", "Properties":{"Path":"$[\'timestamp\']"}}]'
Nota:
Cuando CreateTables=true (es el valor predeterminado), este complemento crea tablas y mapeos de tablas correspondientes mediante los comandos mencionados anteriormente.
Datos ingeridos por la consulta
A continuación se muestran ejemplos de datos recopilados mediante complementos de entrada junto con el complemento de salida de Microsoft Fabric. Los ejemplos muestran cómo usar transformaciones de datos y consultas en Eventhouse.
Datos de métricas de ejemplo
En la tabla siguiente se muestran los datos de métricas de ejemplo recopilados por varios complementos de entrada:
| nombre | tags | marca de tiempo | fields |
|---|---|---|---|
| CPU | {"cpu":"cpu-total","host":"telegraf-host"} | 2021-09-09T13:51:20Z | {"uso_inactivo":85.5,"uso_sistema":8.2,"uso_usuario":6.3} |
| disk | {"device":"sda1","fstype":"ext4","host":"telegraf-host","mode":"rw","path":"/"} | 2021-09-09T13:51:20Z | {"libre":45234176000,"total":63241359360,"usado":15759433728,"porcentaje_usado":25.9} |
Dado que el objeto de métricas recopiladas es un tipo complejo, los campos y las etiquetas columnas se almacenan como tipos de datos dinámicos. Hay varias maneras de consultar estos datos:
Consulta de atributos JSON directamente
Puede consultar datos JSON en formato sin procesar sin analizarlos:
Ejemplo 1
cpu
| where todouble(fields.usage_user) > 10
| project timestamp, host=tostring(tags.host), cpu_usage=todouble(fields.usage_user)
Ejemplo 2
disk
| where todouble(fields.used_percent) > 80
| project timestamp, host=tostring(tags.host), device=tostring(tags.device), used_percent=todouble(fields.used_percent)
Nota:
Este enfoque puede afectar al rendimiento con grandes volúmenes de datos. Para mejorar el rendimiento con grandes conjuntos de datos, use el enfoque de directiva de actualización.
Uso de una directiva de actualización para mejorar el rendimiento
Transformar columnas de tipo de datos dinámicos mediante una directiva de actualización. Este enfoque se recomienda para consultar grandes volúmenes de datos:
// Function to transform data
.create-or-alter function Transform_cpu_metrics() {
cpu
| extend
usage_idle = todouble(fields.usage_idle),
usage_system = todouble(fields.usage_system),
usage_user = todouble(fields.usage_user),
host = tostring(tags.host),
cpu_name = tostring(tags.cpu)
| project timestamp, name, host, cpu_name, usage_idle, usage_system, usage_user
}
// Create destination table with transformed schema
.set-or-append cpu_transformed <| Transform_cpu_metrics() | take 0
// Apply update policy on destination table
.alter table cpu_transformed policy update
@'[{"IsEnabled": true, "Source": "cpu", "Query": "Transform_cpu_metrics()", "IsTransactional": true, "PropagateIngestionProperties": false}]'
Aplanar columnas dinámicas
Hay varias maneras de aplanar columnas dinámicas mediante el operador extendido o el complemento bag_unpack(). Puede usar cualquiera de ellos en la función Transform_TargetTableName() de la directiva de actualización.
Utilice el operador: este enfoque porque es más rápido y robusto. Incluso si el esquema cambia, no interrumpe las consultas ni los paneles. cpu | extend usage_idle = todouble(fields.usage_idle), usage_system = todouble(fields.usage_system), usage_user = todouble(fields.usage_user), host = tostring(tags.host), cpu_name = tostring(tags.cpu) | project-away fields, tagsUso del complemento bag_unpack(): este enfoque desempaqueta automáticamente las columnas de tipo dinámico. Cambiar el esquema de origen puede provocar problemas al expandir dinámicamente las columnas.
cpu | evaluate bag_unpack(tags, columnsConflict='replace_source') | evaluate bag_unpack(fields, columnsConflict='replace_source') | project timestamp, name, host, cpu, usage_idle, usage_system, usage_user