Share via


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:

Komma igång

Förutsättningar

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 .aionamnområ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

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.