Руководство. Анализ данных в журналах Azure Monitor с помощью записной книжки
Записные книжки — это интегрированные среды, которые позволяют создавать и совместно использовать документы с динамическим кодом, уравнениями, визуализациями и текстом. Интеграция записной книжки с рабочей областью Log Analytics позволяет создать многоэтапный процесс, который выполняет код на каждом шаге на основе результатов предыдущего шага. Такие упрощенные процессы можно использовать для создания конвейеров машинного обучения, расширенных средств анализа, руководств по устранению неполадок (TSG) для потребностей в поддержке и многое другое.
Интеграция записной книжки с рабочей областью Log Analytics также позволяет:
- Выполнение запросов KQL и пользовательского кода на любом языке.
- Введите новые возможности аналитики и визуализации, такие как новые модели машинного обучения, пользовательские временные шкалы и деревья обработки.
- Интеграция наборов данных за пределами журналов Azure Monitor, таких как локальные наборы данных.
- Воспользуйтесь преимуществами расширенных ограничений служб с помощью ограничений API запросов по сравнению с портал Azure.
В этом руководстве описано следующее:
- Интеграция записной книжки с рабочей областью Log Analytics с помощью клиентской библиотеки запросов Azure Monitor и клиентской библиотеки удостоверений Azure
- Изучение и визуализация данных из рабочей области Log Analytics в записной книжке
- Прием данных из записной книжки в настраиваемую таблицу в рабочей области Log Analytics (необязательно)
Пример создания конвейера машинного обучения для анализа данных в журналах Azure Monitor с помощью записной книжки см. в этом примере записной книжки. Обнаружение аномалий в журналах Azure Monitor с помощью методов машинного обучения.
Совет
Чтобы обойти ограничения, связанные с API, разбийте большие запросы на несколько небольших запросов.
Необходимые компоненты
Для работы с этим руководством необходимы указанные ниже компоненты.
Рабочая область Машинное обучение Azure с вычислительным экземпляром ЦП с:
- Записная книжка.
- Ядро, установленное на Python 3.8 или более поздней версии.
Следующие роли и разрешения:
В журналах Azure Monitor: роль участника Logs Analytics для чтения и отправки данных в рабочую область Logs Analytics. Дополнительные сведения см. в статье "Управление доступом к рабочим областям Log Analytics".
В Машинное обучение Azure:
- Роль владельца или участника группы ресурсов, чтобы создать новую рабочую область Машинное обучение Azure при необходимости.
- Роль участника в рабочей области Машинное обучение Azure, в которой выполняется записная книжка.
Дополнительные сведения см. в статье Управление доступом к рабочей области Машинного обучения Azure.
Средства и записные книжки
В этом руководстве вы используете следующие средства:
Средство | Description |
---|---|
Клиентская библиотека запросов Azure Monitor | Позволяет выполнять запросы только для чтения для данных в журналах Azure Monitor. |
Клиентская библиотека удостоверений Azure | Позволяет клиентам Пакета SDK Azure проходить проверку подлинности с помощью идентификатора Microsoft Entra. |
Клиентская библиотека приема Azure Monitor | Позволяет отправлять пользовательские журналы в Azure Monitor с помощью API приема журналов. Требуется для приема проанализированных данных в настраиваемую таблицу в рабочей области Log Analytics (необязательно) |
Правило сбора данных, конечная точка сбора данных и зарегистрированное приложение | Требуется для приема проанализированных данных в настраиваемую таблицу в рабочей области Log Analytics (необязательно) |
Другие библиотеки запросов, которые можно использовать, включают:
- Библиотека Kqlmagic позволяет выполнять запросы KQL непосредственно в записной книжке так же, как и выполнение запросов KQL из средства Log Analytics.
- Библиотека MSTICPY предоставляет шаблонные запросы, которые вызывают встроенные возможности временных рядов KQL и машинного обучения, а также предоставляют расширенные средства визуализации и анализ данных в рабочей области Log Analytics.
Другие возможности для расширенного анализа записных книжек Майкрософт включают:
- Записные книжки Azure Synapse Analytics
- Записные книжки Microsoft Fabric
- Записные книжки Visual Studio Code
1. Интеграция рабочей области Log Analytics с записной книжкой
Настройте записную книжку для запроса рабочей области Log Analytics:
Установите клиентские библиотеки azure Monitor Query, Azure Identity и Azure Monitor Ingestion вместе с библиотекой анализа данных Pandas, библиотекой визуализации Графики:
import sys !{sys.executable} -m pip install --upgrade azure-monitor-query azure-identity azure-monitor-ingestion !{sys.executable} -m pip install --upgrade pandas plotly
LOGS_WORKSPACE_ID
Задайте для переменной, приведенной ниже, идентификатор рабочей области Log Analytics. В настоящее время переменная использует демонстрационную рабочую область Azure Monitor, которую можно использовать для демонстрации записной книжки.LOGS_WORKSPACE_ID = "DEMO_WORKSPACE"
LogsQueryClient
Настройте для проверки подлинности и запроса журналов Azure Monitor.Этот код настраивается
LogsQueryClient
для проверки подлинности с помощьюDefaultAzureCredential
:from azure.core.credentials import AzureKeyCredential from azure.core.pipeline.policies import AzureKeyCredentialPolicy from azure.identity import DefaultAzureCredential from azure.monitor.query import LogsQueryClient if LOGS_WORKSPACE_ID == "DEMO_WORKSPACE": credential = AzureKeyCredential("DEMO_KEY") authentication_policy = AzureKeyCredentialPolicy(name="X-Api-Key", credential=credential) else: credential = DefaultAzureCredential() authentication_policy = None logs_query_client = LogsQueryClient(credential, authentication_policy=authentication_policy)
LogsQueryClient
обычно поддерживает проверку подлинности только с учетными данными маркера Microsoft Entra. Однако мы можем передать настраиваемую политику проверки подлинности, чтобы включить использование ключей API. Это позволяет клиенту запрашивать демонстрационную рабочую область. Доступность и доступ к этой демонстрационной рабочей области могут быть изменены, поэтому рекомендуется использовать собственную рабочую область Log Analytics.Определите вспомогательные функции, вызываемые
query_logs_workspace
, чтобы запустить заданный запрос в рабочей области Log Analytics и вернуть результаты в виде кадра данных Pandas.import pandas as pd import plotly.express as px from azure.monitor.query import LogsQueryStatus from azure.core.exceptions import HttpResponseError def query_logs_workspace(query): try: response = logs_query_client.query_workspace(LOGS_WORKSPACE_ID, query, timespan=None) if response.status == LogsQueryStatus.PARTIAL: error = response.partial_error data = response.partial_data print(error.message) elif response.status == LogsQueryStatus.SUCCESS: data = response.tables for table in data: my_data = pd.DataFrame(data=table.rows, columns=table.columns) except HttpResponseError as err: print("something fatal happened") print (err) return my_data
2. Изучение и визуализация данных из рабочей области Log Analytics в записной книжке
Рассмотрим некоторые данные в рабочей области, выполнив запрос из записной книжки:
Этот запрос проверяет, сколько данных (в мегабайтах) вы извлекли в каждую таблицу (типы данных) в рабочей области Log Analytics каждый час за последнюю неделю:
TABLE = "Usage" QUERY = f""" let starttime = 7d; // Start date for the time series, counting back from the current date let endtime = 0d; // today {TABLE} | project TimeGenerated, DataType, Quantity | where TimeGenerated between (ago(starttime)..ago(endtime)) | summarize ActualUsage=sum(Quantity) by TimeGenerated=bin(TimeGenerated, 1h), DataType """ df = query_logs_workspace(QUERY) display(df)
Результирующий кадр данных показывает почасовую приемку в каждой из таблиц в рабочей области Log Analytics:
Теперь давайте рассмотрим данные в виде графа, который показывает почасовое использование для различных типов данных с течением времени на основе кадра данных Pandas:
df = df.sort_values(by="TimeGenerated") graph = px.line(df, x='TimeGenerated', y="ActualUsage", color='DataType', title="Usage in the last week - All data types") graph.show()
Результирующий граф выглядит следующим образом:
Вы успешно запросили и визуализировали данные журнала из рабочей области Log Analytics в записной книжке.
3. Анализ данных
В качестве простого примера давайте рассмотрим первые пять строк:
analyzed_df = df.head(5)
Пример реализации методов машинного обучения для анализа данных в журналах Azure Monitor см. в этом примере записной книжки: обнаружение аномалий в журналах Azure Monitor с помощью методов машинного обучения.
4. Прием проанализированных данных в настраиваемую таблицу в рабочей области Log Analytics (необязательно)
Отправьте результаты анализа в настраиваемую таблицу в рабочей области Log Analytics, чтобы активировать оповещения или сделать их доступными для дальнейшего анализа.
Для отправки данных в рабочую область Log Analytics требуется настраиваемая таблица, конечная точка сбора данных, правило сбора данных и зарегистрированное приложение Microsoft Entra с разрешением на использование правила сбора данных, как описано в руководстве. Отправка данных в журналы Azure Monitor с помощью API приема журналов (портал Azure).
При создании настраиваемой таблицы:
Отправьте этот пример файла, чтобы определить схему таблицы:
[ { "TimeGenerated": "2023-03-19T19:56:43.7447391Z", "ActualUsage": 40.1, "DataType": "AzureDiagnostics" } ]
Определите константы, необходимые для API приема журналов:
os.environ['AZURE_TENANT_ID'] = "<Tenant ID>"; #ID of the tenant where the data collection endpoint resides os.environ['AZURE_CLIENT_ID'] = "<Application ID>"; #Application ID to which you granted permissions to your data collection rule os.environ['AZURE_CLIENT_SECRET'] = "<Client secret>"; #Secret created for the application os.environ['LOGS_DCR_STREAM_NAME'] = "<Custom stream name>" ##Name of the custom stream from the data collection rule os.environ['LOGS_DCR_RULE_ID'] = "<Data collection rule immutableId>" # immutableId of your data collection rule os.environ['DATA_COLLECTION_ENDPOINT'] = "<Logs ingestion URL of your endpoint>" # URL that looks like this: https://xxxx.ingest.monitor.azure.com
Прием данных в настраиваемую таблицу в рабочей области Log Analytics:
from azure.core.exceptions import HttpResponseError from azure.identity import ClientSecretCredential from azure.monitor.ingestion import LogsIngestionClient import json credential = ClientSecretCredential( tenant_id=AZURE_TENANT_ID, client_id=AZURE_CLIENT_ID, client_secret=AZURE_CLIENT_SECRET ) client = LogsIngestionClient(endpoint=DATA_COLLECTION_ENDPOINT, credential=credential, logging_enable=True) body = json.loads(analyzed_df.to_json(orient='records', date_format='iso')) try: response = client.upload(rule_id=LOGS_DCR_RULE_ID, stream_name=LOGS_DCR_STREAM_NAME, logs=body) print("Upload request accepted") except HttpResponseError as e: print(f"Upload failed: {e}")
Примечание.
При создании таблицы в рабочей области Log Analytics в таблице может потребоваться до 15 минут.
Убедитесь, что данные теперь отображаются в пользовательской таблице.
Следующие шаги
Узнайте больше о том, как:
- Планирование конвейера машинного обучения.
- Обнаружение и анализ аномалий с помощью KQL.