Azure Monitor-clientbibliotheek voor opname voor Python - versie 1.0.3
De Azure Monitor-clientbibliotheek voor opname wordt gebruikt voor het verzenden van aangepaste logboeken naar Azure Monitor met behulp van de Logboekopname-API.
Met deze bibliotheek kunt u gegevens van vrijwel elke bron verzenden naar ondersteunde ingebouwde tabellen of naar aangepaste tabellen die u in de Log Analytics-werkruimte maakt. U kunt zelfs het schema van ingebouwde tabellen uitbreiden met aangepaste kolommen.
Bronnen:
- Broncode
- Pakket (PyPI)
- Pakket (Conda)
- API-referentiedocumentatie
- Servicedocumentatie
- Voorbeelden
- Wijzigingslogboek
Aan de slag
Vereisten
- Python 3.7 of hoger
- Een Azure-abonnement
- Een Azure Log Analytics-werkruimte
- Een eindpunt voor gegevensverzameling
- Een regel voor gegevensverzameling
Het pakket installeren
Installeer de Azure Monitor-clientbibliotheek voor opname voor Python met pip:
pip install azure-monitor-ingestion
De client maken
Een geverifieerde client is vereist voor het uploaden van logboeken naar Azure Monitor. De bibliotheek bevat zowel synchrone als asynchrone vormen van de clients. Als u wilt verifiëren, maakt u een exemplaar van een tokenreferentie. Gebruik dat exemplaar bij het maken van een LogsIngestionClient
. In de volgende voorbeelden wordt gebruikgemaakt DefaultAzureCredential
van het pakket azure-identity .
Synchrone clients
Bekijk het volgende voorbeeld, waarin synchrone clients worden gemaakt voor het uploaden van logboeken:
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)
Asynchrone clients
De asynchrone vormen van de client-API's zijn te vinden in de .aio
-achtervoegselnaamruimte. Bijvoorbeeld:
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)
Clients configureren voor niet-openbare Azure-clouds
Is standaard LogsIngestionClient
geconfigureerd om verbinding te maken met de openbare Azure-cloud. Als u verbinding wilt maken met niet-openbare Azure-clouds, is een aanvullende configuratie vereist. Het juiste bereik voor verificatie moet worden opgegeven met behulp van het credential_scopes
trefwoordargument. In het volgende voorbeeld ziet u hoe u de client configureert om verbinding te maken met Azure US Government:
logs_client = LogsIngestionClient(endpoint, credential_scopes=["https://monitor.azure.us//.default"])
Belangrijkste concepten
Eindpunt voor gegevensverzameling
Met eindpunten voor gegevensverzameling (DCE's) kunt u de opname-instellingen voor Azure Monitor uniek configureren. Dit artikel biedt een overzicht van eindpunten voor gegevensverzameling, inclusief de inhoud en structuur ervan en hoe u deze kunt maken en ermee kunt werken.
Regel voor gegevensverzameling
Regels voor gegevensverzameling (DCR) definiëren gegevens die worden verzameld door Azure Monitor en geven aan hoe en waar die gegevens moeten worden verzonden of opgeslagen. De REST API-aanroep moet een DCR opgeven die moet worden gebruikt. Eén DCE kan meerdere DCR's ondersteunen, zodat u een andere DCR voor verschillende bronnen en doeltabellen kunt opgeven.
De DCR moet de structuur van de invoergegevens en de structuur van de doeltabel begrijpen. Als de twee niet overeenkomen, kan een transformatie worden gebruikt om de brongegevens te converteren zodat deze overeenkomen met de doeltabel. U kunt de transformatie ook gebruiken om brongegevens te filteren en andere berekeningen of conversies uit te voeren.
Zie Regels voor gegevensverzameling in Azure Monitor voor meer informatie en raadpleeg dit artikel voor meer informatie over de structuur van een DCR. Zie deze zelfstudie voor meer informatie over het ophalen van een DCR-id.
Tabellen in Log Analytics-werkruimte
Aangepaste logboeken kunnen gegevens verzenden naar elke aangepaste tabel die u maakt en naar bepaalde ingebouwde tabellen in uw Log Analytics-werkruimte. De doeltabel moet bestaan voordat u er gegevens naar kunt verzenden. De volgende ingebouwde tabellen worden momenteel ondersteund:
Logboeken ophalen
De logboeken die met deze bibliotheek zijn geüpload, kunnen worden opgevraagd met behulp van de Azure Monitor Query-clientbibliotheek .
Voorbeelden
Aangepaste logboeken uploaden
In dit voorbeeld ziet u het uploaden van logboeken naar 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}")
Uploaden met aangepaste foutafhandeling
Als u logboeken wilt uploaden met aangepaste foutafhandeling, kunt u een callback-functie doorgeven aan de on_error
parameter van de upload
methode. De callback-functie wordt aangeroepen voor elke fout die optreedt tijdens het uploaden en verwacht één argument dat overeenkomt met een LogsUploadError
object. Dit object bevat de fout die is opgetreden en de lijst met logboeken die niet zijn geüpload.
# 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)
Problemen oplossen
Zie onze handleiding voor probleemoplossing voor meer informatie over het diagnosticeren van verschillende foutscenario's.
Volgende stappen
Zie de documentatie voor de Azure Monitor-service voor meer informatie over Azure Monitor.
Voorbeelden
De volgende codevoorbeelden tonen veelvoorkomende scenario's met de Azure Monitor-clientbibliotheek voor opname.
Voorbeelden van opname van logboeken
- Een lijst met logboeken uploaden (asynchroon voorbeeld)
- Een lijst met logboeken uploaden met aangepaste foutafhandeling (asynchroon voorbeeld)
- De inhoud van een bestand uploaden (asynchroon voorbeeld)
- Gegevens uploaden in een Pandas DataFrame (asynchroon voorbeeld)
Bijdragen
Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar cla.microsoft.com voor meer informatie.
Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit slechts één keer te doen voor alle opslagplaatsen met behulp van onze CLA.
Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Raadpleeg de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op met opencode@microsoft.com als u meer vragen of opmerkingen hebt.
Azure SDK for Python