Прием данных с помощью приемника NLog в Azure Data Explorer
NLog — это гибкая и бесплатная платформа ведения журнала для различных платформ .NET, включая .NET standard. NLog позволяет записывать данные в несколько целевых объектов, таких как база данных, файл или консоль. С помощью NLog можно изменить конфигурацию ведения журнала во время полета. Приемник NLog — это целевой объект для NLog, который позволяет отправлять сообщения журнала в кластер KQL. Подключаемый модуль построен на основе библиотеки данных Azure-Kusto-Data и обеспечивает эффективный способ приемника журналов в кластер.
В этой статье вы узнаете, как принять данные с помощью приемника nLog.
Полный список соединителей данных см. в обзоре соединителей данных.
Необходимые компоненты
Настройка среды
В этом разделе описана подготовка среды к использованию соединителя NLog.
Установка пакета
Добавьте пакет NuGet NLog.Azure.Kusto. Используйте команду Install-Package, указывающую имя пакета NuGet.
Install-Package NLog.Azure.Kusto
Создание регистрации приложения Microsoft Entra
Проверка подлинности приложения Microsoft Entra используется для приложений, которым требуется доступ к платформе без присутствующих пользователей. Чтобы получить данные с помощью соединителя NLog, необходимо создать и зарегистрировать субъект-службу Microsoft Entra, а затем авторизовать этот субъект для получения данных из базы данных.
Субъект-служба Microsoft Entra можно создать с помощью портал Azure или программы, как показано в следующем примере.
Этот субъект-служба будет удостоверением, используемым соединителем для записи данных таблицы в Kusto. Позже вы предоставьте этому субъекту-службе разрешения для доступа к ресурсам Kusto.
Войдите в подписку Azure с помощью Azure CLI. Затем авторизуйтесь в браузере.
az login
Выберите подписку для размещения субъекта. Этот шаг необходим, если у вас несколько подписок.
az account set --subscription YOUR_SUBSCRIPTION_GUID
Создайте субъект-службу. В этом примере принципал службы называется
my-service-principal
.az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
Из возвращаемых данных JSON скопируйте
appId
password
данные иtenant
для дальнейшего использования.{ "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" }
Вы создали приложение Microsoft Entra и субъект-службу.
Сохраните следующие значения, которые будут использоваться в последующих шагах: * Идентификатор приложения (клиента) * идентификатор каталога (клиента) * значение ключа секрета клиента
Предоставление разрешений приложения Microsoft Entra
В среде запроса выполните следующую команду управления, заменив заполнители. Замените DatabaseName именем целевой базы данных и ApplicationID ранее сохраненным значением. Эта команда предоставляет приложению роль ingestor базы данных. Дополнительные сведения см. в разделе "Управление ролями безопасности базы данных".
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'NLOG Azure App Registration role'
Примечание.
Последний параметр — это строка, которая отображается в виде примечаний при запросе ролей, связанных с базой данных. Дополнительные сведения см. в разделе "Просмотр существующих ролей безопасности".
Создание сопоставления таблиц и приема
Создайте целевую таблицу для входящих данных.
В редакторе запросов выполните следующую команду создания таблицы, заменив заполнитель TableName именем целевой таблицы:
.create table <TableName> (Timestamp:datetime, Level:string, Message:string, FormattedMessage:dynamic, Exception:string, Properties:dynamic)
Добавление целевой конфигурации в приложение
Выполните следующие действия.
- Добавление целевой конфигурации
- Сборка и запуск приложения
Добавьте целевой объект в файл конфигурации 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>
Дополнительные сведения см. в разделе "Соединитель Nlog".
Отправка данных с помощью приемника NLog. Например:
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);
Выполните сборку и запустите приложение. Например, если вы используете Visual Studio, нажмите клавишу F5.
Убедитесь, что данные в кластере. В среде запроса выполните следующий запрос, заменив заполнитель именем таблицы, используемой ранее:
<TableName> | take 10
Запуск примера приложения
Используйте пример приложения генератора журналов в качестве примера, в котором показано, как настроить и использовать приемник NLog.
Клонируйте репозиторий Git приемника NLog с помощью следующей команды Git:
git clone https://github.com/Azure/azure-kusto-nlog-sink.git
Задайте следующие переменные среды, чтобы файл конфигурации NLog сразу же считывал их из среды:
«Переменная» Description INGEST_ENDPOINT URI приема для целевого объекта данных. Этот универсальный код ресурса (URI) скопирован в предварительных требованиях. DATABASE Имя целевой базы данных с учетом регистра. APP_ID Идентификатор клиента приложения, необходимый для проверки подлинности. Это значение сохранено в разделе "Создание регистрации приложения Microsoft Entra". APP_KEY Ключ приложения, необходимый для проверки подлинности. Это значение сохранено в разделе "Создание регистрации приложения Microsoft Entra". AZURE_TENANT_ID Идентификатор клиента, в котором зарегистрировано приложение. Это значение сохранено в разделе "Создание регистрации приложения Microsoft Entra". Переменные среды можно задать вручную или с помощью следующих команд:
В терминале перейдите в корневую папку клонированного репозитория и выполните следующую
dotnet
команду, чтобы создать приложение:cd .\NLog.Azure.Kusto.Samples\ dotnet build
В терминале перейдите в папку примеров и выполните следующую
dotnet
команду, чтобы запустить приложение:dotnet run
В среде запроса выберите целевую базу данных и выполните следующий запрос, чтобы изучить прием данных.
ADXNLogSample | take 10
Выходные данные должны выглядеть примерно так: