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:

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.

Vereisten

Voor deze zelfstudie hebt u het volgende nodig:

Hulpprogramma's en notebooks

In deze zelfstudie gebruikt u deze hulpprogramma's:

Hulpprogramma Omschrijving
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:

  1. 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 
    
  2. 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"
    
  3. 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 van DefaultAzureCredential:

    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.

  4. 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:

  1. 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:

    Screenshot of a DataFrame generated in a notebook with log ingestion data retrieved from a Log Analytics workspace.

  2. 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:

    A graph that shows the amount of data ingested into each of the tables in a Log Analytics workspace over seven days.

    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.

  1. 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:

    1. Upload dit voorbeeldbestand om het tabelschema te definiëren:

      [
        {
          "TimeGenerated": "2023-03-19T19:56:43.7447391Z",    
          "ActualUsage": 40.1,    
          "DataType": "AzureDiagnostics"     
        } 
      ]
      
  2. 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
    
  3. 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.

  4. Controleer of de gegevens nu worden weergegeven in uw aangepaste tabel.

    Screenshot that shows a query in Log Analytics on a custom table into which the analysis results from the notebook were ingested.

Volgende stappen

Meer informatie over het volgende: