Biblioteka klienta pozyskiwania usługi Azure Monitor dla języka Python — wersja 1.0.3
Biblioteka klienta pozyskiwania usługi Azure Monitor służy do wysyłania dzienników niestandardowych do usługi Azure Monitor przy użyciu interfejsu API pozyskiwania dzienników.
Ta biblioteka umożliwia wysyłanie danych z praktycznie dowolnego źródła do obsługiwanych wbudowanych tabel lub tabel niestandardowych tworzonych w obszarze roboczym usługi Log Analytics. Można nawet rozszerzyć schemat wbudowanych tabel za pomocą kolumn niestandardowych.
Zasoby:
- Kod źródłowy
- Pakiet (PyPI)
- Pakiet (Conda)
- Dokumentacja referencyjna interfejsu API
- Dokumentacja usługi
- Samples
- Dziennik zmian
Wprowadzenie
Wymagania wstępne
- Język Python w wersji 3.7 lub nowszej
- Subskrypcja platformy Azure
- Obszar roboczy usługi Azure Log Analytics
- Punkt końcowy zbierania danych
- Reguła zbierania danych
Instalowanie pakietu
Zainstaluj bibliotekę klienta pozyskiwania usługi Azure Monitor dla języka Python przy użyciu narzędzia pip:
pip install azure-monitor-ingestion
Tworzenie klienta
Uwierzytelniony klient jest wymagany do przekazania dzienników do usługi Azure Monitor. Biblioteka zawiera zarówno synchroniczne, jak i asynchroniczne formy klientów. Aby się uwierzytelnić, utwórz wystąpienie poświadczeń tokenu. Użyj tego wystąpienia podczas tworzenia elementu LogsIngestionClient
. W poniższych przykładach użyto DefaultAzureCredential
pakietu azure-identity .
Klienci synchronicznie
Rozważmy następujący przykład, który tworzy synchronicznych klientów do przekazywania dzienników:
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)
Klienci asynchroniczny
Asynchroniczne formularze interfejsów API klienta znajdują się w .aio
-sufiksowanej przestrzeni nazw. Na przykład:
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)
Konfigurowanie klientów dla chmur platformy Azure niepublizowanych
Domyślnie LogsIngestionClient
skonfigurowano połączenie z publiczną chmurą platformy Azure. Aby nawiązać połączenie z chmurami platformy Azure niepublizowanych, wymagana jest dodatkowa konfiguracja. Odpowiedni zakres uwierzytelniania należy podać przy użyciu argumentu słowa kluczowego credential_scopes
. W poniższym przykładzie pokazano, jak skonfigurować klienta w celu nawiązania połączenia z usługą Azure US Government:
logs_client = LogsIngestionClient(endpoint, credential_scopes=["https://monitor.azure.us//.default"])
Kluczowe pojęcia
Punkt końcowy zbierania danych
Punkty końcowe zbierania danych (DCE) umożliwiają unikatowe konfigurowanie ustawień pozyskiwania dla usługi Azure Monitor. Ten artykuł zawiera omówienie punktów końcowych zbierania danych, w tym ich zawartości i struktury oraz sposobu ich tworzenia i pracy z nimi.
Reguła zbierania danych
Reguły zbierania danych (DCR) definiują dane zbierane przez usługę Azure Monitor i określają, jak i gdzie mają być wysyłane lub przechowywane te dane. Wywołanie interfejsu API REST musi określać kontroler domeny do użycia. Pojedynczy kontroler domeny może obsługiwać wiele kontrolerów DCR, dzięki czemu można określić różne kontrolery domeny dla różnych źródeł i tabel docelowych.
Kontroler domeny musi zrozumieć strukturę danych wejściowych i strukturę tabeli docelowej. Jeśli te dwa nie są zgodne, może użyć przekształcenia, aby przekonwertować dane źródłowe w celu dopasowania do tabeli docelowej. Możesz również użyć przekształcenia do filtrowania danych źródłowych i wykonywania innych obliczeń lub konwersji.
Aby uzyskać więcej informacji, zobacz Reguły zbierania danych w usłudze Azure Monitor i zobacz ten artykuł , aby uzyskać szczegółowe informacje na temat struktury dcR. Aby uzyskać informacje na temat pobierania identyfikatora DCR, zobacz ten samouczek.
Tabele obszarów roboczych usługi Log Analytics
Dzienniki niestandardowe mogą wysyłać dane do dowolnej utworzonej tabeli niestandardowej i do niektórych wbudowanych tabel w obszarze roboczym usługi Log Analytics. Tabela docelowa musi istnieć przed wysłaniem do niej danych. Obecnie obsługiwane są następujące wbudowane tabele:
Pobieranie dzienników
Dzienniki, które zostały przekazane przy użyciu tej biblioteki, można wykonywać zapytania przy użyciu biblioteki klienta zapytań usługi Azure Monitor .
Przykłady
Przekazywanie dzienników niestandardowych
W tym przykładzie przedstawiono przekazywanie dzienników do usługi 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}")
Przekazywanie przy użyciu niestandardowej obsługi błędów
Aby przekazać dzienniki z niestandardową obsługą błędów, można przekazać funkcję wywołania zwrotnego do on_error
parametru upload
metody . Funkcja wywołania zwrotnego jest wywoływana dla każdego błędu występującego podczas przekazywania i powinna oczekiwać jednego argumentu odpowiadającego LogsUploadError
obiektowi. Ten obiekt zawiera napotkany błąd i listę dzienników, które nie udało się przekazać.
# 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)
Rozwiązywanie problemów
Aby uzyskać szczegółowe informacje na temat diagnozowania różnych scenariuszy awarii, zobacz nasz przewodnik rozwiązywania problemów.
Następne kroki
Aby dowiedzieć się więcej na temat usługi Azure Monitor, zobacz dokumentację usługi Azure Monitor.
Przykłady
Poniższe przykłady kodu pokazują typowe scenariusze z biblioteką klienta pozyskiwania usługi Azure Monitor.
Przykłady pozyskiwania dzienników
- Przekazywanie listy dzienników (przykład asynchroniczny)
- Przekazywanie listy dzienników z niestandardową obsługą błędów (przykład asynchroniczny)
- Przekazywanie zawartości pliku (przykład asynchroniczny)
- Przekazywanie danych w ramce danych pandas (przykład asynchroniczny)
Współtworzenie
W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź stronę cla.microsoft.com.
Po przesłaniu żądania ściągnięcia robot CLA automatycznie określi, czy musisz przekazać umowę CLA, i doda odpowiednie informacje do tego żądania (na przykład etykietę czy komentarz). Po prostu postępuj zgodnie z instrukcjami robota. Musisz to zrobić tylko raz we wszystkich repozytoriach przy użyciu naszego cla.
W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz artykuł Code of Conduct FAQ (Często zadawane pytania dotyczące kodeksu postępowania). Jeśli będziesz mieć jeszcze jakieś pytania lub komentarze, wyślij wiadomość e-mail na adres opencode@microsoft.com.
Azure SDK for Python