Ingesta de datos con el receptor NLog en Azure Data Explorer
NLog es una plataforma de registro flexible y gratuita para varias plataformas de .NET, incluido .NET Standard. NLog permite escribir en varios destinos, como una base de datos, un archivo o una consola. Con NLog, puede cambiar la configuración de registro sobre la marcha. El receptor de NLog es un destino de NLog que permite enviar los mensajes de registro a un clúster de KQL. El complemento se basa en la biblioteca Azure-Kusto-Data y proporciona una manera eficaz de recibir los registros en el clúster.
En este artículo aprenderá a ingerir datos con el receptor de nLog.
Para obtener una lista completa de los conectores de datos, consulte Introducción a los conectores de datos.
Requisitos previos
- SDK de .NET 6.0 o versiones posteriores.
- Un clúster y una base de datos de Azure Data Explorer
Configurar el entorno
En esta sección, preparará el entorno para usar el conector de NLog.
Instalar el paquete
Agregue el paquete NuGet NLog.Azure.Kusto . Use el comando Install-Package que especifica el nombre del paquete NuGet.
Install-Package NLog.Azure.Kusto
Creación de un registro de aplicación Microsoft Entra
La autenticación de aplicaciones de Microsoft Entra se usa para las aplicaciones que necesitan acceder a la plataforma sin que haya un usuario presente. Para obtener datos mediante el conector NLog, debe crear y registrar una entidad de servicio de Microsoft Entra y, a continuación, autorizar a esta entidad de seguridad para obtener datos de una base de datos.
La entidad de servicio de Microsoft Entra se puede crear mediante Azure Portal o mediante programación, como en el ejemplo siguiente.
Esta entidad de servicio será la identidad utilizada por el conector para escribir datos en la tabla de Kusto. Más adelante concederemos 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": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn", "displayName": "my-service-principal", "name": "my-service-principal", "password": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn", "tenant": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn" }
Ha creado una aplicación de Microsoft Entra y una entidad de servicio.
Guarde los siguientes valores para usarlos en pasos posteriores: * Id. de aplicación (cliente) * Id. de directorio (inquilino) * Valor de clave secreta de cliente
Conceder permisos a la aplicación Microsoft Entra
En el entorno de consulta, ejecute el siguiente comando de administración y reemplace los marcadores de posición. Reemplace DatabaseName por el nombre de la base de datos de destino y ApplicationID por el valor guardado anteriormente. Este comando concede a la aplicación el rol de agente de ingesta de bases de datos. Para más información, consulte Administrar roles de seguridad de base de datos.
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'NLOG Azure App Registration role'
Nota:
El último parámetro es una cadena que se muestra como una nota al consultar los roles asociados a una base de datos. Para obtener más información, consulte Visualización de roles de seguridad existentes.
Crear una tabla y una asignación de ingesta
Cree una tabla de destino para los datos entrantes.
En el editor de consultas, ejecute el siguiente comando de creación de tablas y reemplace el marcador de posición TableName por el nombre de la tabla de destino:
.create table <TableName> (Timestamp:datetime, Level:string, Message:string, FormattedMessage:dynamic, Exception:string, Properties:dynamic)
Agregar la configuración de destino a la aplicación
Uso los pasos siguientes para:
- Agregar la configuración de destino
- Compilar y ejecutar la aplicación
Agregue el destino en el archivo de configuración de NLog.
<targets> <target name="targettable" xsi:type="TargetTable" IngestionEndpointUri="<Connection string>" Database="<Database name>" TableName="<Table name>" ApplicationClientId="<Entra App clientId>" ApplicationKey="<Entra App key>" Authority="<Entra tenant id>" /> </targets> ##Rules <rules> <logger name="*" minlevel="Info" writeTo="adxtarget" /> </rules>
Para obtener más opciones, consulte conector de Nlog.
Envíe datos mediante el receptor de NLog. Por ejemplo:
logger.Info("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs); logger.Error(exceptionObj, "This was exception"); logger.Debug("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs); logger.Warn("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs);
Compile y ejecute la aplicación. Por ejemplo, si usa Visual Studio, presione F5.
Compruebe que los datos estén en el clúster. En el entorno de consulta, ejecute la consulta siguiente reemplazando el marcador de posición por el nombre de la tabla que usó anteriormente:
<TableName> | take 10
Ejecutar la aplicación de ejemplo
Use la aplicación generador de registros de ejemplo como ejemplo que muestra cómo configurar y usar el receptor de NLog.
Clone el repositorio de Git del receptor de NLog mediante el siguiente comando de Git:
git clone https://github.com/Azure/azure-kusto-nlog-sink.git
Establezca las siguientes variables de entorno para que el archivo de configuración de NLog pueda leerlas inmediatamente del entorno:
Variable Descripción INGEST_ENDPOINT Identificador URI de ingesta para el destino de datos. Ha copiado este URI en los requisitos previos. DATABASE Nombre de la base de datos de destino en el que se distinguen mayúsculas de minúsculas. APP_ID Identificador de cliente de aplicación necesario para la autenticación. Ha guardado este valor en Crear un registro de aplicaciones de Microsoft Entra. APP_KEY Clave de aplicación necesaria para la autenticación. Ha guardado este valor en Crear un registro de aplicación Microsoft Entra. AZURE_TENANT_ID El id. del inquilino en el que se registra la aplicación. Ha guardado este valor en Crear un registro de aplicación Microsoft Entra. Puede establecer las variables de entorno manualmente o mediante los siguientes comandos:
$env:INGEST_ENDPOINT="<ingestionURI>" $env:APP_ID="<appId>" $env:APP_KEY="<appKey>" $env:AZURE_TENANT_ID="<tenant>" $env:DATABASE="<databaseName>"
En el terminal, navegue hasta la carpeta raíz del repositorio clonado y ejecute el siguiente
dotnet
para compilar la aplicación:cd .\NLog.Azure.Kusto.Samples\ dotnet build
En el terminal, navegue hasta la carpeta de muestras y ejecute el siguiente comando
dotnet
para ejecutar la aplicación:dotnet run
En el entorno de consulta, seleccione la base de datos de destino y ejecute la siguiente consulta para explorar los datos ingeridos.
ADXNLogSample | take 10
La salida debe ser similar a la siguiente imagen: