Azure Monitor Ingestion-klientbibliotek för Python – version 1.0.3
Azure Monitor Ingestion-klientbiblioteket används för att skicka anpassade loggar till Azure Monitor med hjälp av LOGS Ingestion-API:et.
Med det här biblioteket kan du skicka data från praktiskt taget alla källor till inbyggda tabeller som stöds eller till anpassade tabeller som du skapar på Log Analytics-arbetsytan. Du kan även utöka schemat för inbyggda tabeller med anpassade kolumner.
Resurser:
- Källkod
- Paket (PyPI)
- Paket (Conda)
- Referensdokumentation för API
- Tjänstdokumentation
- Exempel
- Ändringslogg
Komma igång
Förutsättningar
- Python 3.7 eller senare
- En Azure-prenumeration
- En Azure Log Analytics-arbetsyta
- En slutpunkt för datainsamling
- En datainsamlingsregel
Installera paketet
Installera Klientbiblioteket för Azure Monitor-inmatning för Python med pip:
pip install azure-monitor-ingestion
Skapa klienten
En autentiserad klient krävs för att ladda upp loggar till Azure Monitor. Biblioteket innehåller både synkrona och asynkrona former av klienterna. Om du vill autentisera skapar du en instans av en tokenautentiseringsuppgift. Använd den instansen när du skapar en LogsIngestionClient
. Följande exempel använder DefaultAzureCredential
från azure-identity-paketet .
Synkrona klienter
Tänk dig följande exempel, som skapar synkrona klienter för att ladda upp loggar:
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)
Asynkrona klienter
De asynkrona formerna för klient-API:erna finns i .aio
namnområdet -suffix. Exempel:
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)
Konfigurera klienter för icke-offentliga Azure-moln
Som standard LogsIngestionClient
är konfigurerad för att ansluta till det offentliga Azure-molnet. För att ansluta till icke-offentliga Azure-moln krävs ytterligare konfiguration. Lämpligt omfång för autentisering måste anges med nyckelordsargumentet credential_scopes
. I följande exempel visas hur du konfigurerar klienten för att ansluta till Azure US Government:
logs_client = LogsIngestionClient(endpoint, credential_scopes=["https://monitor.azure.us//.default"])
Viktiga begrepp
Slutpunkt för datainsamling
Med datainsamlingsslutpunkter (DCE) kan du unikt konfigurera inmatningsinställningar för Azure Monitor. Den här artikeln innehåller en översikt över slutpunkter för datainsamling, inklusive deras innehåll och struktur samt hur du kan skapa och arbeta med dem.
Datainsamlingsregel
Datainsamlingsregler (DCR) definierar data som samlas in av Azure Monitor och anger hur och var dessa data ska skickas eller lagras. REST API-anropet måste ange en DCR som ska användas. En enskild domänkontrollant kan ha stöd för flera domänkontrollanter, så du kan ange en annan DCR för olika källor och måltabeller.
DCR måste förstå strukturen för indata och måltabellens struktur. Om de två inte matchar kan den använda en transformering för att konvertera källdata till att matcha måltabellen. Du kan också använda transformeringen för att filtrera källdata och utföra andra beräkningar eller konverteringar.
Mer information finns i Datainsamlingsregler i Azure Monitor och se den här artikeln för mer information om en DCR-struktur. Information om hur du hämtar ett DCR-ID finns i den här självstudien.
Log Analytics-arbetsytetabeller
Anpassade loggar kan skicka data till alla anpassade tabeller som du skapar och till vissa inbyggda tabeller på Log Analytics-arbetsytan. Måltabellen måste finnas innan du kan skicka data till den. Följande inbyggda tabeller stöds för närvarande:
Logghämtning
Loggarna som laddades upp med det här biblioteket kan efterfrågas med hjälp av Azure Monitor Query-klientbiblioteket.
Exempel
Ladda upp anpassade loggar
Det här exemplet visar uppladdning av loggar till 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}")
Ladda upp med anpassad felhantering
Om du vill ladda upp loggar med anpassad felhantering kan du skicka en återanropsfunktion till parametern on_error
för upload
metoden. Återanropsfunktionen anropas för varje fel som inträffar under uppladdningen och bör förvänta sig ett argument som motsvarar ett LogsUploadError
objekt. Det här objektet innehåller det fel som påträffades och listan över loggar som inte kunde laddas upp.
# 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)
Felsökning
Mer information om hur du diagnostiserar olika felscenarier finns i vår felsökningsguide.
Nästa steg
Mer information om Azure Monitor finns i dokumentationen för Azure Monitor-tjänsten.
Exempel
Följande kodexempel visar vanliga scenarier med Azure Monitor Ingestion-klientbiblioteket.
Loggar inmatningsexempel
- Ladda upp en lista över loggar (async-exempel)
- Ladda upp en lista över loggar med anpassad felhantering (async-exempel)
- Ladda upp innehållet i en fil (async-exempel)
- Ladda upp data i en Pandas DataFrame (async-exempel)
Bidra
Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns i cla.microsoft.com.
När du skickar en pull-förfrågan avgör en CLA-robot automatiskt om du måste tillhandahålla ett licensavtal för bidrag med lämplig PR (t.ex. etikett eller kommentar). Följ bara robotens anvisningar. Du behöver bara göra detta en gång i alla lagringsplatser med vår CLA.
Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Du hittar mer information i Vanliga frågor om uppförandekod eller kontakta opencode@microsoft.com för ytterligare frågor eller kommentarer.
Azure SDK for Python