Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Записные книжки — это интегрированные среды, которые позволяют создавать и совместно использовать документы с динамическим кодом, уравнениями, визуализациями и текстом. Интеграция записной книжки с рабочей областью Log Analytics позволяет создать многоэтапный процесс, который выполняет код на каждом шаге на основе результатов предыдущего шага. Такие упрощенные процессы можно использовать для создания конвейеров машинного обучения, расширенных средств анализа, руководств по устранению неполадок (TSG) для потребностей в поддержке и многое другое.
Интеграция записной книжки с рабочей областью Log Analytics также позволяет:
- Выполнение запросов KQL и пользовательского кода на любом языке.
- Введите новые возможности аналитики и визуализации, такие как новые модели машинного обучения, пользовательские временные шкалы и деревья обработки.
- Интегрируйте наборы данных за пределами журналов Azure Monitor, например, локальные наборы данных.
- Воспользуйтесь преимуществами увеличенных лимитов сервиса с помощью лимитов Query 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 Machine Learning при необходимости.
- Роль участника (Contributor) в рабочей области Azure Machine Learning, где выполняется ваша записная книжка.
Дополнительные сведения см. в статье Управление доступом к рабочей области Машинного обучения Azure.
Средства и записные книжки
В этом руководстве вы используете следующие средства:
Инструмент | Описание |
---|---|
Клиентская библиотека запросов 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, библиотекой визуализации Plotly.
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 и вернуть результаты в виде DataFrame 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.
Теперь давайте рассмотрим данные в виде графика, который показывает почасовое использование для различных типов данных с течением времени на основе DataFrame 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.