Zelfstudie: Gegevens analyseren in Azure Monitor-logboeken met behulp van een notebook
Notebooks zijn geïntegreerde omgevingen waarmee u documenten kunt maken en delen met live code, vergelijkingen, visualisaties en tekst. Als u een notebook integreert met een Log Analytics-werkruimte, kunt u een proces met meerdere stappen maken waarmee code in elke stap wordt uitgevoerd op basis van de resultaten van de vorige stap. U kunt dergelijke gestroomlijnde processen gebruiken om machine learning-pijplijnen, geavanceerde analysehulpprogramma's, probleemoplossingsgidsen (TSG's) te bouwen voor ondersteuningsbehoeften en meer.
Als u een notebook integreert met een Log Analytics-werkruimte, kunt u ook het volgende doen:
- Voer KQL-query's en aangepaste code uit in elke taal.
- Introduceer nieuwe analyse- en visualisatiemogelijkheden, zoals nieuwe machine learning-modellen, aangepaste tijdlijnen en processtructuren.
- Integreer gegevenssets buiten Azure Monitor-logboeken, zoals een on-premises gegevensset.
- Profiteer van verhoogde servicelimieten met behulp van de query-API-limieten in vergelijking met Azure Portal.
In deze zelfstudie leert u het volgende:
- Een notebook integreren met uw Log Analytics-werkruimte met behulp van de Azure Monitor Query-clientbibliotheek en de Azure Identity-clientbibliotheek
- Gegevens uit uw Log Analytics-werkruimte in een notebook verkennen en visualiseren
- Gegevens uit uw notebook opnemen in een aangepaste tabel in uw Log Analytics-werkruimte (optioneel)
Voor een voorbeeld van het bouwen van een machine learning-pijplijn voor het analyseren van gegevens in Azure Monitor-logboeken met behulp van een notebook, raadpleegt u dit voorbeeldnotebook: Afwijkingen in Azure Monitor-logboeken detecteren met behulp van machine learning-technieken.
Tip
Als u beperkingen met betrekking tot API wilt omzeilen, splitst u grotere query's op in meerdere kleinere query's.
Vereisten
Voor deze zelfstudie hebt u het volgende nodig:
Een Azure Machine Learning-werkruimte met een CPU-rekenproces met:
- Een notitieblok.
- Een kernel ingesteld op Python 3.8 of hoger.
De volgende rollen en machtigingen:
In Azure Monitor-logboeken: de rol Logboekanalysebijdrager voor het lezen van gegevens uit en het verzenden van gegevens naar uw Logs Analytics-werkruimte. Zie Toegang tot Log Analytics-werkruimten beheren voor meer informatie.
In Azure Machine Learning:
- Een rol eigenaar of inzender op resourcegroepniveau om zo nodig een nieuwe Azure Machine Learning-werkruimte te maken.
- Een rol Inzender in de Azure Machine Learning-werkruimte waar u uw notebook uitvoert.
Zie Toegang tot een Azure Machine Learning-werkruimte beheren voor meer informatie.
Hulpprogramma's en notebooks
In deze zelfstudie gebruikt u deze hulpprogramma's:
Hulpprogramma | Beschrijving |
---|---|
Azure Monitor Query-clientbibliotheek | Hiermee kunt u alleen-lezenquery's uitvoeren op gegevens in Azure Monitor-logboeken. |
Azure Identity-clientbibliotheek | Hiermee kunnen Azure SDK-clients worden geverifieerd met Microsoft Entra-id. |
Azure Monitor-clientbibliotheek voor opname | Hiermee kunt u aangepaste logboeken naar Azure Monitor verzenden met behulp van de Logboekopname-API. Vereist voor het opnemen van geanalyseerde gegevens in een aangepaste tabel in uw Log Analytics-werkruimte (optioneel) |
Regel voor gegevensverzameling, eindpunt voor gegevensverzameling en een geregistreerde toepassing | Vereist voor het opnemen van geanalyseerde gegevens in een aangepaste tabel in uw Log Analytics-werkruimte (optioneel) |
Andere querybibliotheken die u kunt gebruiken, zijn:
- Met Kqlmagic-bibliotheek kunt u KQL-query's rechtstreeks in een notebook uitvoeren op dezelfde manier als u KQL-query's uitvoert vanuit het hulpprogramma Log Analytics.
- DE MSTICPY-bibliotheek biedt sjabloonquery's die ingebouwde KQL-tijdreeks- en machine learning-mogelijkheden aanroepen en geavanceerde visualisatiehulpprogramma's en analyses van gegevens in de Log Analytics-werkruimte bieden.
Andere microsoft-notebookervaringen voor geavanceerde analyse zijn:
1. Integreer uw Log Analytics-werkruimte met uw notebook
Stel uw notebook in om een query uit te voeren op uw Log Analytics-werkruimte:
Installeer de Clientbibliotheken van Azure Monitor Query, Azure Identity en Azure Monitor Ingestion, samen met de Pandas-bibliotheek voor gegevensanalyse, plotly-visualisatiebibliotheek:
import sys !{sys.executable} -m pip install --upgrade azure-monitor-query azure-identity azure-monitor-ingestion !{sys.executable} -m pip install --upgrade pandas plotly
Stel de
LOGS_WORKSPACE_ID
onderstaande variabele in op de id van uw Log Analytics-werkruimte. De variabele is momenteel ingesteld om de Azure Monitor Demo-werkruimte te gebruiken, die u kunt gebruiken om het notebook te demo's uit te voeren.LOGS_WORKSPACE_ID = "DEMO_WORKSPACE"
LogsQueryClient
Instellen om Azure Monitor-logboeken te verifiëren en er query's op uit te voeren.Met deze code wordt verificatie ingesteld
LogsQueryClient
met behulp vanDefaultAzureCredential
:from azure.core.credentials import AzureKeyCredential from azure.core.pipeline.policies import AzureKeyCredentialPolicy from azure.identity import DefaultAzureCredential from azure.monitor.query import LogsQueryClient if LOGS_WORKSPACE_ID == "DEMO_WORKSPACE": credential = AzureKeyCredential("DEMO_KEY") authentication_policy = AzureKeyCredentialPolicy(name="X-Api-Key", credential=credential) else: credential = DefaultAzureCredential() authentication_policy = None logs_query_client = LogsQueryClient(credential, authentication_policy=authentication_policy)
LogsQueryClient
ondersteunt doorgaans alleen verificatie met Microsoft Entra-tokenreferenties. We kunnen echter een aangepast verificatiebeleid doorgeven om het gebruik van API-sleutels in te schakelen. Hierdoor kan de client een query uitvoeren op de demowerkruimte. De beschikbaarheid en toegang tot deze demowerkruimte kunnen worden gewijzigd. Daarom raden we u aan uw eigen Log Analytics-werkruimte te gebruiken.Definieer een helperfunctie, aangeroepen
query_logs_workspace
, om een bepaalde query uit te voeren in de Log Analytics-werkruimte en de resultaten te retourneren als een Pandas DataFrame.import pandas as pd import plotly.express as px from azure.monitor.query import LogsQueryStatus from azure.core.exceptions import HttpResponseError def query_logs_workspace(query): try: response = logs_query_client.query_workspace(LOGS_WORKSPACE_ID, query, timespan=None) if response.status == LogsQueryStatus.PARTIAL: error = response.partial_error data = response.partial_data print(error.message) elif response.status == LogsQueryStatus.SUCCESS: data = response.tables for table in data: my_data = pd.DataFrame(data=table.rows, columns=table.columns) except HttpResponseError as err: print("something fatal happened") print (err) return my_data
2. Gegevens uit uw Log Analytics-werkruimte in uw notebook verkennen en visualiseren
Laten we eens kijken naar enkele gegevens in de werkruimte door een query uit te voeren vanuit het notebook:
Met deze query wordt gecontroleerd hoeveel gegevens (in megabytes) u hebt opgenomen in elk van de tabellen (gegevenstypen) in uw Log Analytics-werkruimte per uur in de afgelopen week:
TABLE = "Usage" QUERY = f""" let starttime = 7d; // Start date for the time series, counting back from the current date let endtime = 0d; // today {TABLE} | project TimeGenerated, DataType, Quantity | where TimeGenerated between (ago(starttime)..ago(endtime)) | summarize ActualUsage=sum(Quantity) by TimeGenerated=bin(TimeGenerated, 1h), DataType """ df = query_logs_workspace(QUERY) display(df)
Het resulterende DataFrame toont de uurlijkse opname in elk van de tabellen in de Log Analytics-werkruimte:
Laten we nu de gegevens bekijken als een grafiek waarin het uurgebruik voor verschillende gegevenstypen in de loop van de tijd wordt weergegeven, op basis van het Pandas DataFrame:
df = df.sort_values(by="TimeGenerated") graph = px.line(df, x='TimeGenerated', y="ActualUsage", color='DataType', title="Usage in the last week - All data types") graph.show()
De resulterende grafiek ziet er als volgt uit:
U hebt logboekgegevens opgevraagd en gevisualiseerd vanuit uw Log Analytics-werkruimte in uw notebook.
3. Gegevens analyseren
Laten we als eenvoudig voorbeeld de eerste vijf rijen nemen:
analyzed_df = df.head(5)
Zie dit voorbeeldnotitieblok voor het implementeren van machine learning-technieken voor het analyseren van gegevens in Azure Monitor-logboeken : Afwijkingen detecteren in Azure Monitor-logboeken met behulp van machine learning-technieken.
4. Geanalyseerde gegevens opnemen in een aangepaste tabel in uw Log Analytics-werkruimte (optioneel)
Verzend uw analyseresultaten naar een aangepaste tabel in uw Log Analytics-werkruimte om waarschuwingen te activeren of om ze beschikbaar te maken voor verdere analyse.
Als u gegevens naar uw Log Analytics-werkruimte wilt verzenden, hebt u een aangepaste tabel, een eindpunt voor gegevensverzameling, een regel voor gegevensverzameling en een geregistreerde Microsoft Entra-toepassing nodig met toestemming om de regel voor gegevensverzameling te gebruiken, zoals wordt uitgelegd in zelfstudie: Gegevens verzenden naar Azure Monitor-logboeken met logboekopname-API (Azure Portal).
Wanneer u uw aangepaste tabel maakt:
Upload dit voorbeeldbestand om het tabelschema te definiëren:
[ { "TimeGenerated": "2023-03-19T19:56:43.7447391Z", "ActualUsage": 40.1, "DataType": "AzureDiagnostics" } ]
Definieer de constanten die u nodig hebt voor de API voor logboekopname:
os.environ['AZURE_TENANT_ID'] = "<Tenant ID>"; #ID of the tenant where the data collection endpoint resides os.environ['AZURE_CLIENT_ID'] = "<Application ID>"; #Application ID to which you granted permissions to your data collection rule os.environ['AZURE_CLIENT_SECRET'] = "<Client secret>"; #Secret created for the application os.environ['LOGS_DCR_STREAM_NAME'] = "<Custom stream name>" ##Name of the custom stream from the data collection rule os.environ['LOGS_DCR_RULE_ID'] = "<Data collection rule immutableId>" # immutableId of your data collection rule os.environ['DATA_COLLECTION_ENDPOINT'] = "<Logs ingestion URL of your endpoint>" # URL that looks like this: https://xxxx.ingest.monitor.azure.com
De gegevens opnemen in de aangepaste tabel in uw Log Analytics-werkruimte:
from azure.core.exceptions import HttpResponseError from azure.identity import ClientSecretCredential from azure.monitor.ingestion import LogsIngestionClient import json credential = ClientSecretCredential( tenant_id=AZURE_TENANT_ID, client_id=AZURE_CLIENT_ID, client_secret=AZURE_CLIENT_SECRET ) client = LogsIngestionClient(endpoint=DATA_COLLECTION_ENDPOINT, credential=credential, logging_enable=True) body = json.loads(analyzed_df.to_json(orient='records', date_format='iso')) try: response = client.upload(rule_id=LOGS_DCR_RULE_ID, stream_name=LOGS_DCR_STREAM_NAME, logs=body) print("Upload request accepted") except HttpResponseError as e: print(f"Upload failed: {e}")
Notitie
Wanneer u een tabel maakt in uw Log Analytics-werkruimte, kan het tot 15 minuten duren voordat opgenomen gegevens in de tabel worden weergegeven.
Controleer of de gegevens nu worden weergegeven in uw aangepaste tabel.
Volgende stappen
Meer informatie over het volgende: