Руководство по отправке данных в Azure Monitor с помощью API приема журналов (шаблоны Resource Manager)

API приема журналов в Azure Monitor позволяет отправлять пользовательские данные в рабочую область Log Analytics. В этом руководстве используются шаблоны Azure Resource Manager (шаблоны ARM) для пошаговой настройки компонентов, необходимых для поддержки API, а затем предоставляет пример приложения с помощью REST API и клиентских библиотек для .NET, Go, Java, JavaScript и Python.

Примечание.

В этом руководстве используются шаблоны ARM для настройки компонентов, необходимых для поддержки API приема журналов. См. руководство. Отправка данных в журналы Azure Monitor с помощью API приема журналов (портал Azure) для аналогичного руководства, использующего пользовательский интерфейс портал Azure для настройки этих компонентов.

Действия, необходимые для настройки API приема журналов, приведены ниже.

  1. Создайте приложение Microsoft Entra для проверки подлинности в API.
  2. Создайте конечную точку сбора данных (DCE) для получения данных.
  3. Создайте настраиваемую таблицу в рабочей области Log Analytics. Это таблица, в которую будут отправляться данные.
  4. Создайте правило сбора данных (DCR), чтобы направить данные в целевую таблицу.
  5. Предоставьте приложению Microsoft Entra доступ к DCR.
  6. Пример кода для отправки данных в Azure Monitor с помощью API приема журналов для отправки данных с помощью API приема журналов.

Необходимые компоненты

Для работы с этим учебником необходимы указанные ниже компоненты.

Сбор сведений о рабочей области

Начните со сбора сведений из рабочей области, которые вам потребуются.

Перейдите в рабочую область в меню рабочих областей Log Analytics в портал Azure. На странице "Свойства" скопируйте идентификатор ресурса и сохраните его для последующего использования.

Снимок экрана: идентификатор ресурса рабочей области.

Создание приложения Microsoft Entra

Начните с регистрации приложения Microsoft Entra для проверки подлинности в API. Любая схема проверки подлинности Resource Manager поддерживается, но в этом руководстве описана схема потока предоставления учетных данных клиента.

  1. В меню идентификатора microsoft Entra в портал Azure выберите Регистрация приложений> РегистрацияNew.

    Снимок экрана: экран регистрации приложения.

  2. Присвойте приложению имя и измените область аренды, если значение по умолчанию не подходит для вашей среды. URI перенаправления не требуется.

    Снимок экрана: сведения о приложении.

  3. После регистрации вы можете просмотреть сведения о приложении. Сохраните идентификатор приложения (клиента) и идентификатор каталога (арендатора). Эти данные понадобятся позже в этом процессе.

    Снимок экрана: идентификатор приложения.

  4. Создайте секрет клиента приложения, который аналогичен созданию пароля для использования с именем пользователя. Выберите Сертификаты и секреты>Новый секрет клиента. Присвойте секрету имя, чтобы обозначить его назначение и выберите срок действия. Здесь выбран вариант 12 месяцев . Для реализации рабочей среды следует следовать рекомендациям по процедуре смены секретов или использовать более безопасный режим проверки подлинности, например сертификат.

    Снимок экрана: секрет нового приложения.

  5. Нажмите кнопку "Добавить ", чтобы сохранить секрет, а затем запишите значение. Убедитесь, что вы записываете это значение, так как его невозможно восстановить после выхода из этой страницы. Используйте те же меры безопасности, что и для хранения пароля, так как это функциональный эквивалент.

    Снимок экрана: значение секрета для нового приложения.

Создание конечной точки сбора данных

DCE требуется для принятия данных, отправляемых в Azure Monitor. После настройки DCE и связывания его с DCR можно отправлять данные по протоколу HTTP из приложения. DCE должен находиться в том же регионе, что и DCR и рабочая область Log Analytics, в которой будут отправляться данные.

  1. В поле поиска портал Azure введите шаблон и выберите "Развернуть пользовательский шаблон".

    Снимок экрана, на котором показано, как развернуть пользовательский шаблон.

  2. Выберите Создать собственный шаблон в редакторе.

    Снимок экрана: создание шаблона в редакторе.

  3. Вставьте следующий шаблон ARM в редактор и нажмите кнопку "Сохранить". Вам не нужно изменять этот шаблон, так как вы предоставите значения для его параметров.

    Снимок экрана: изменение шаблона ARM.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "dataCollectionEndpointName": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the name of the Data Collection Endpoint to create."
                }
            },
            "location": {
                "type": "string",
                "defaultValue": "westus2",
                "metadata": {
                    "description": "Specifies the location for the Data Collection Endpoint."
                }
            }
        },
        "resources": [
            {
                "type": "Microsoft.Insights/dataCollectionEndpoints",
                "name": "[parameters('dataCollectionEndpointName')]",
                "location": "[parameters('location')]",
                "apiVersion": "2021-04-01",
                "properties": {
                    "networkAcls": {
                    "publicNetworkAccess": "Enabled"
                    }
                }
            }
        ],
        "outputs": {
            "dataCollectionEndpointId": {
                "type": "string",
                "value": "[resourceId('Microsoft.Insights/dataCollectionEndpoints', parameters('dataCollectionEndpointName'))]"
            }
        }
    }
    
  4. На экране пользовательского развертывания укажите подпискуи группу ресурсов для хранения DCR, а затем укажите значения, такие как имя DCE. Расположение должно быть тем же расположением, которое указано в рабочей области. Регион уже будет заполнен и будет использоваться для расположения DCE.

    Снимок экрана: редактирование значений настраиваемого развертывания.

  5. Нажмите кнопку "Просмотр и создание ", а затем нажмите кнопку "Создать " после просмотра сведений.

  6. Выберите представление JSON, чтобы просмотреть другие сведения о DCE. Скопируйте идентификатор ресурса и конечную точку приема журналов, которую потребуется на следующем шаге.

    Снимок экрана: идентификатор ресурса DCE.

Создание новой таблицы в рабочей области Log Analytics

Перед отправкой данных в пользовательскую таблицу сначала необходимо ее создать. В таблице этого руководства будут указаны пять столбцов, показанных в схеме ниже. Свойства name, type и description являются обязательными для каждого столбца. Свойства isHidden и isDefaultDisplay имеют значение по умолчанию false, если они не указаны явно. Возможные типы данных: string, int, long, real, boolean, dateTime, guid и dynamic.

Примечание.

В этом руководстве powerShell из Azure Cloud Shell используется для вызова REST API с помощью API таблиц Azure Monitor. Для выполнения этих вызовов можно использовать любой другой допустимый метод.

Внимание

Пользовательские таблицы должны использовать суффикс _CL.

  1. Нажмите кнопку Cloud Shell в портал Azure и убедитесь, что среда имеет значение PowerShell.

    Снимок экрана: открытие Cloud Shell.

  2. Скопируйте следующий код PowerShell и замените переменные в параметре Path соответствующими значениями рабочей области в команде Invoke-AzRestMethod . Вставьте код в командную строку Cloud Shell, чтобы выполнить его.

    $tableParams = @'
    {
        "properties": {
            "schema": {
                "name": "MyTable_CL",
                "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "datetime",
                        "description": "The time at which the data was generated"
                    },
                   {
                        "name": "Computer",
                        "type": "string",
                        "description": "The computer that generated the data"
                    },
                    {
                        "name": "AdditionalContext",
                        "type": "dynamic",
                        "description": "Additional message properties"
                    },
                    {
                        "name": "CounterName",
                        "type": "string",
                        "description": "Name of the counter"
                    },
                    {
                        "name": "CounterValue",
                        "type": "real",
                        "description": "Value collected for the counter"
                    }
                ]
            }
        }
    }
    '@
    
    Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/MyTable_CL?api-version=2022-10-01" -Method PUT -payload $tableParams
    

Создать правило сбора данных

DCR определяет, как данные будут обрабатываться после получения. В том числе:

  • Схема данных, отправляемых в конечную точку
  • Преобразование , которое будет применено к данным перед отправкой в рабочую область
  • Рабочая область назначения и таблица преобразованных данных будут отправлены в
  1. В поле поиска портал Azure введите шаблон и выберите "Развернуть пользовательский шаблон".

    Снимок экрана, на котором показано, как развернуть пользовательский шаблон.

  2. Выберите Создать собственный шаблон в редакторе.

    Снимок экрана: создание шаблона в редакторе.

  3. Вставьте следующий шаблон ARM в редактор и нажмите кнопку "Сохранить".

    Снимок экрана: изменение шаблона ARM.

    Обратите внимание на следующие сведения в DCR, определенных в этом шаблоне.

    • dataCollectionEndpointId: идентификатор ресурса конечной точки сбора данных.
    • streamDeclarations: определения столбцов входящих данных.
    • destinations: Рабочая область назначения.
    • dataFlows: сопоставляет поток с конечной рабочей областью и задает запрос преобразования и целевую таблицу. Выходные данные целевого запроса — это то, что будет отправлено в целевую таблицу.
    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "dataCollectionRuleName": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the name of the Data Collection Rule to create."
                }
            },
            "location": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the location in which to create the Data Collection Rule."
                }
            },
            "workspaceResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the Log Analytics workspace to use."
                }
            },
            "endpointResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the Data Collection Endpoint to use."
                }
            }
        },
        "resources": [
            {
                "type": "Microsoft.Insights/dataCollectionRules",
                "name": "[parameters('dataCollectionRuleName')]",
                "location": "[parameters('location')]",
                "apiVersion": "2021-09-01-preview",
                "properties": {
                    "dataCollectionEndpointId": "[parameters('endpointResourceId')]",
                    "streamDeclarations": {
                        "Custom-MyTableRawData": {
                            "columns": [
                                {
                                    "name": "Time",
                                    "type": "datetime"
                                },
                                {
                                    "name": "Computer",
                                    "type": "string"
                                },
                                {
                                    "name": "AdditionalContext",
                                    "type": "string"
                                },
                                {
                                    "name": "CounterName",
                                    "type": "string"
                                },
                                {
                                    "name": "CounterValue",
                                    "type": "real"
                                }
                            ]
                        }
                    },
                    "destinations": {
                        "logAnalytics": [
                            {
                                "workspaceResourceId": "[parameters('workspaceResourceId')]",
                                "name": "myworkspace"
                            }
                        ]
                    },
                    "dataFlows": [
                        {
                            "streams": [
                                "Custom-MyTableRawData"
                            ],
                            "destinations": [
                                "myworkspace"
                            ],
                            "transformKql": "source | extend jsonContext = parse_json(AdditionalContext) | project TimeGenerated = Time, Computer, AdditionalContext = jsonContext, CounterName=tostring(jsonContext.CounterName), CounterValue=toreal(jsonContext.CounterValue)",
                            "outputStream": "Custom-MyTable_CL"
                        }
                    ]
                }
            }
        ],
        "outputs": {
            "dataCollectionRuleId": {
                "type": "string",
                "value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
            }
        }
    }
    
  4. На экране пользовательского развертывания укажите подпискуи группу ресурсов для хранения DCR. Затем укажите значения, определенные в шаблоне. Значения включают имя DCR и идентификатор ресурса рабочей области, собранные на предыдущем шаге. Расположение должно быть тем же расположением, которое указано в рабочей области. Регион уже будет заполнен и будет использоваться для расположения DCR.

    Снимок экрана: изменение пользовательских значений развертывания.

  5. Нажмите кнопку "Просмотр и создание ", а затем нажмите кнопку "Создать " после просмотра сведений.

  6. По завершении развертывания разверните поле сведений о развертывании и выберите DCR, чтобы просмотреть его сведения. Выберите представление JSON.

    Снимок экрана: сведения о DCR.

  7. Скопируйте неизменяемый идентификатор для DCR. Вы будете использовать его на следующем шаге при отправке примеров данных с помощью API.

    Снимок экрана: представление JSON DCR.

    Примечание.

    Все свойства DCR, такие как преобразование, могут не отображаться в портал Azure даже если DCR был успешно создан с этими свойствами.

Назначение разрешений DCR

После создания DCR приложение должно быть предоставлено ему разрешение. Разрешение позволит любому приложению использовать правильный идентификатор приложения и ключ приложения для отправки данных в новый DCE и DCR.

  1. В списке DCR в портал Azure выберите контроль доступа (IAM)>Добавить назначение ролей.

    Снимок экрана: добавление настраиваемого назначения ролей в DCR.

  2. Выберите "Издатель метрик мониторинга" и нажмите кнопку "Далее". Вместо этого можно создать настраиваемое действие с действием данных Microsoft.Insights/Telemetry/Write.

    Снимок экрана: выбор роли для назначения ролей DCR.

  3. Выберите "Пользователь", "Группа" или "Субъект-служба " для назначения доступа и выберите " Выбрать участников". Выберите созданное приложение и нажмите кнопку "Выбрать".

    Снимок экрана: выбор членов для назначения роли DCR.

  4. Нажмите кнопку "Проверить и назначить " и проверьте сведения перед сохранением назначения роли.

    Снимок экрана: сохранение назначения роли DCR.

Пример кода

Пример кода для отправки данных в Azure Monitor с помощью API приема журналов для примера кода с помощью компонентов, созданных в этом руководстве.

Следующие шаги