Клиентская библиотека приема Azure Monitor для Python — версия 1.0.3
Клиентская библиотека приема Azure Monitor используется для отправки пользовательских журналов в Azure Monitor с помощью API приема журналов.
Эта библиотека позволяет отправлять данные практически из любого источника в поддерживаемые встроенные таблицы или пользовательские таблицы, созданные в рабочей области Log Analytics. Можно даже расширить схему встроенных таблиц с помощью пользовательских столбцов.
Ресурсы:
- Исходный код
- Пакет (PyPI)
- Пакет (Conda)
- Справочная документация по API
- Документация по службе
- Примеры
- Журнал изменений
Начало работы
Предварительные требования
- Python 3.7 или более поздней версии
- Подписка Azure
- Рабочая область Azure Log Analytics
- Конечная точка сбора данных
- Правило сбора данных
Установка пакета
Установите клиентную библиотеку приема Azure Monitor для Python с помощью pip:
pip install azure-monitor-ingestion
Создание клиента
Для отправки журналов в Azure Monitor требуется клиент, прошедший проверку подлинности. Библиотека включает синхронные и асинхронные формы клиентов. Для проверки подлинности создайте экземпляр учетных данных маркера. Используйте этот экземпляр при создании LogsIngestionClient
. В следующих примерах используется DefaultAzureCredential
пакет azure-identity .
Синхронные клиенты
Рассмотрим следующий пример, в котором создаются синхронные клиенты для отправки журналов:
import os
from azure.identity import DefaultAzureCredential
from azure.monitor.ingestion import LogsIngestionClient
endpoint = os.environ['DATA_COLLECTION_ENDPOINT']
credential = DefaultAzureCredential()
logs_client = LogsIngestionClient(endpoint, credential)
Асинхронные клиенты
Асинхронные формы клиентских API находятся в пространстве имен с суффиксами .aio
. Пример:
import os
from azure.identity.aio import DefaultAzureCredential
from azure.monitor.ingestion.aio import LogsIngestionClient
endpoint = os.environ['DATA_COLLECTION_ENDPOINT']
credential = DefaultAzureCredential()
logs_client = LogsIngestionClient(endpoint, credential)
Настройка клиентов для облаков Azure, не являющихся общедоступными
По умолчанию LogsIngestionClient
настроено подключение к общедоступному облаку Azure. Для подключения к облакам Azure, не являющихся общедоступными, требуется дополнительная настройка. Соответствующие область для проверки подлинности должны быть предоставлены с помощью аргумента credential_scopes
ключевое слово. В следующем примере показано, как настроить клиент для подключения к Azure для государственных организаций США:
logs_client = LogsIngestionClient(endpoint, credential_scopes=["https://monitor.azure.us//.default"])
Основные понятия
Конечная точка сбора данных
Конечные точки сбора данных (DCE) позволяют уникальным образом настроить параметры приема данных для Azure Monitor. В этой статье представлен обзор конечных точек сбора данных, включая их содержимое и структуру, а также способы их создания и работы с ними.
Правило сбора данных
Правила сбора данных (DCR) определяют данные, собираемые Azure Monitor, и указывают, как и где эти данные должны отправляться или храниться. В вызове REST API должно быть указано DCR для использования. Один DCE может поддерживать несколько DCR, поэтому можно указать разные DCR для разных источников и целевых таблиц.
DCR должно понимать структуру входных данных и структуру целевой таблицы. Если эти две структуры не совпадают, можно использовать преобразование исходных данных в соответствии с целевой таблицей. Можно также использовать преобразование для фильтрации исходных данных и выполнения других вычислений или преобразований.
Дополнительные сведения см . в статье Правила сбора данных в Azure Monitor и в этой статье , чтобы узнать больше о структуре DCR. Сведения о том, как получить идентификатор DCR, см. в этом руководстве.
Таблицы рабочей области Log Analytics
Настраиваемые журналы могут отсылать данные в любую настраиваемую таблицу, созданную вами, и в определенные встроенные таблицы в рабочей области Log Analytics. Целевая таблица должна существовать, прежде чем можно будет отправить в нее данные. В настоящее время поддерживаются приведенные ниже встроенные таблицы.
Получение журналов
Журналы, отправленные с помощью этой библиотеки, можно запрашивать с помощью клиентской библиотеки запросов Azure Monitor .
Примеры
Отправка пользовательских журналов
В этом примере показана отправка журналов в Azure Monitor.
import os
from azure.core.exceptions import HttpResponseError
from azure.identity import DefaultAzureCredential
from azure.monitor.ingestion import LogsIngestionClient
endpoint = os.environ['DATA_COLLECTION_ENDPOINT']
credential = DefaultAzureCredential()
client = LogsIngestionClient(endpoint=endpoint, credential=credential, logging_enable=True)
rule_id = os.environ['LOGS_DCR_RULE_ID']
body = [
{
"Time": "2021-12-08T23:51:14.1104269Z",
"Computer": "Computer1",
"AdditionalContext": "context-2"
},
{
"Time": "2021-12-08T23:51:14.1104269Z",
"Computer": "Computer2",
"AdditionalContext": "context"
}
]
try:
client.upload(rule_id=rule_id, stream_name=os.environ['LOGS_DCR_STREAM_NAME'], logs=body)
except HttpResponseError as e:
print(f"Upload failed: {e}")
Отправка с пользовательской обработкой ошибок
Чтобы отправить журналы с пользовательской обработкой ошибок, можно передать функцию обратного upload
вызова в on_error
параметр метода . Функция обратного вызова вызывается для каждой ошибки, возникающей во время отправки, и она должна ожидать один аргумент, соответствующий объекту LogsUploadError
. Этот объект содержит обнаруженную ошибку и список журналов, которые не удалось отправить.
# Example 1: Collect all logs that failed to upload.
failed_logs = []
def on_error(error):
print("Log chunk failed to upload with error: ", error.error)
failed_logs.extend(error.failed_logs)
# Example 2: Ignore all errors.
def on_error_pass(error):
pass
client.upload(rule_id=rule_id, stream_name=os.environ['LOGS_DCR_STREAM_NAME'], logs=body, on_error=on_error)
Устранение неполадок
Дополнительные сведения о диагностике различных сценариев сбоя см. в нашем руководстве по устранению неполадок.
Дальнейшие действия
Дополнительные сведения об Azure Monitor см. в документации по службе Azure Monitor.
Примеры
В следующих примерах кода показаны распространенные сценарии с клиентской библиотекой приема Azure Monitor.
Примеры приема журналов
- Отправка списка журналов (асинхронный пример)
- Отправка списка журналов с пользовательской обработкой ошибок (асинхронный пример)
- Отправка содержимого файла (асинхронный пример)
- Отправка данных в кадр данных Pandas (пример асинхронного режима)
Участие
На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см . на странице cla.microsoft.com.
При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Это необходимо сделать только один раз во всех репозиториях с помощью CLA.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения: Вопросы и ответы по правилам поведения. С любыми другими вопросами или комментариями обращайтесь по адресу opencode@microsoft.com.
Azure SDK for Python