Sdílet prostřednictvím


Kurz: Analýza dat v protokolech služby Azure Monitor pomocí poznámkového bloku

Poznámkové bloky jsou integrovaná prostředí, která umožňují vytvářet a sdílet dokumenty s živým kódem, rovnicemi, vizualizacemi a textem. Integrace poznámkového bloku s pracovním prostorem Služby Log Analytics umožňuje vytvořit vícekrokový proces, který spouští kód v každém kroku na základě výsledků předchozího kroku. Tyto zjednodušené procesy můžete použít k vytváření kanálů strojového učení, pokročilých analytických nástrojů, průvodců odstraňováním potíží (TSG) pro potřeby podpory a další.

Integrace poznámkového bloku s pracovním prostorem Log Analytics vám také umožní:

  • Spusťte dotazy KQL a vlastní kód v libovolném jazyce.
  • Představte si nové možnosti analýzy a vizualizace, jako jsou nové modely strojového učení, vlastní časové osy a stromy procesů.
  • Integrujte datové sady mimo protokoly služby Azure Monitor, například místní datové sady.
  • Využijte výhod zvýšených limitů služby pomocí limitů rozhraní API pro dotazy ve srovnání s webem Azure Portal.

V tomto kurzu se naučíte:

  • Integrace poznámkového bloku s pracovním prostorem Služby Log Analytics pomocí klientské knihovny Azure Monitor Query a klientské knihovny Azure Identity
  • Prozkoumání a vizualizace dat z pracovního prostoru služby Log Analytics v poznámkovém bloku
  • Ingestování dat z poznámkového bloku do vlastní tabulky v pracovním prostoru služby Log Analytics (volitelné)

Příklad vytvoření kanálu strojového učení pro analýzu dat v protokolech služby Azure Monitor pomocí poznámkového bloku najdete v tomto ukázkovém poznámkovém bloku: Detekce anomálií v protokolech služby Azure Monitor pomocí technik strojového učení.

Tip

Pokud chcete obejít omezení související s rozhraním API, rozdělte větší dotazy na několik menších dotazů.

Požadavky

Pro účely tohoto kurzu potřebujete:

  • Pracovní prostor Azure Machine Learning s výpočetní instancí procesoru s:

  • Následující role a oprávnění:

    • V protokolech Služby Azure Monitor: Role Přispěvatel analýzy protokolů pro čtení dat a odesílání dat do pracovního prostoru Služby Logs Analytics. Další informace najdete v tématu Správa přístupu k pracovním prostorům služby Log Analytics.

    • Ve službě Azure Machine Learning:

      • Role vlastníka nebo přispěvatele na úrovni skupiny prostředků, která v případě potřeby vytvoří nový pracovní prostor Azure Machine Learning.
      • Role Přispěvatel v pracovním prostoru Azure Machine Learning, ve kterém poznámkový blok spouštíte.

      Další informace najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Learning.

Nástroje a poznámkové bloky

V tomto kurzu použijete tyto nástroje:

Nástroj Popis
Klientská knihovna Azure Monitor Query Umožňuje spouštět dotazy jen pro čtení na data v protokolech služby Azure Monitor.
Klientská knihovna Azure Identity Umožňuje klientům sady Azure SDK ověřovat pomocí ID Microsoft Entra.
Klientská knihovna pro příjem dat ve službě Azure Monitor Umožňuje odesílat vlastní protokoly do služby Azure Monitor pomocí rozhraní API pro příjem protokolů. Vyžaduje se k ingestování analyzovaných dat do vlastní tabulky v pracovním prostoru služby Log Analytics (volitelné).
Pravidlo shromažďování dat, koncový bod shromažďování dat a registrovaná aplikace Vyžaduje se k ingestování analyzovaných dat do vlastní tabulky v pracovním prostoru služby Log Analytics (volitelné).

Mezi další knihovny dotazů, které můžete použít, patří:

  • Knihovna Kqlmagic umožňuje spouštět dotazy KQL přímo v poznámkovém bloku stejným způsobem jako dotazy KQL z nástroje Log Analytics.
  • Knihovna MSTICPY poskytuje šablonované dotazy, které volají integrované časové řady KQL a možnosti strojového učení a poskytují pokročilé vizualizační nástroje a analýzy dat v pracovním prostoru služby Log Analytics.

Mezi další prostředí poznámkového bloku Microsoftu pro pokročilou analýzu patří:

1. Integrace pracovního prostoru služby Log Analytics s poznámkovým blokem

Nastavte poznámkový blok pro dotazování pracovního prostoru služby Log Analytics:

  1. Nainstalujte klientské knihovny Azure Monitor Query, Azure Identity a Azure Monitor Pro příjem dat spolu s knihovnou analýzy dat Pandas, knihovnou vizualizace Plotly:

    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. LOGS_WORKSPACE_ID Nastavte proměnnou níže na ID pracovního prostoru služby Log Analytics. Proměnná je aktuálně nastavená tak, aby používala pracovní prostor ukázky služby Azure Monitor, který můžete použít k ukázce poznámkového bloku.

    LOGS_WORKSPACE_ID = "DEMO_WORKSPACE"
    
  3. Nastavte LogsQueryClient ověřování a dotazování protokolů služby Azure Monitor.

    Tento kód nastaví LogsQueryClient ověření pomocí 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 obvykle podporuje pouze ověřování pomocí přihlašovacích údajů tokenu Microsoft Entra. Můžeme ale předat vlastní zásady ověřování, které povolí použití klíčů rozhraní API. To umožňuje klientovi dotazovat se na ukázkový pracovní prostor. Dostupnost a přístup k tomuto ukázkovém pracovnímu prostoru se můžou změnit, proto doporučujeme použít vlastní pracovní prostor služby Log Analytics.

  4. Definujte pomocnou funkci nazvanou query_logs_workspace, která spustí daný dotaz v pracovním prostoru služby Log Analytics a vrátí výsledky jako datový rámec Pandas.

    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. Prozkoumání a vizualizace dat z pracovního prostoru služby Log Analytics v poznámkovém bloku

Pojďme se podívat na některá data v pracovním prostoru spuštěním dotazu z poznámkového bloku:

  1. Tento dotaz kontroluje, kolik dat (v megabajtech) jste ingestují do každé z tabulek (datových typů) v pracovním prostoru služby Log Analytics každou hodinu za poslední týden:

    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)
    

    Výsledný datový rámec zobrazuje hodinový příjem dat v každé tabulce v pracovním prostoru služby Log Analytics:

    Snímek obrazovky s datovým rámcem vygenerovaným v poznámkovém bloku s daty o příjmu protokolů načtenými z pracovního prostoru služby Log Analytics

  2. Teď si prohlédněte data jako graf, který zobrazuje hodinové využití různých datových typů v průběhu času na základě datového rámce Pandas:

    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()
    

    Výsledný graf vypadá takto:

    Graf znázorňující množství dat přijatých do každé z tabulek v pracovním prostoru služby Log Analytics za sedm dnů

    Úspěšně jste dotazovali a vizualizovali data protokolů z pracovního prostoru služby Log Analytics v poznámkovém bloku.

3. Analýza dat

Jako jednoduchý příklad si vezmeme prvních pět řádků:

analyzed_df = df.head(5)

Příklad implementace technik strojového učení pro analýzu dat v protokolech služby Azure Monitor najdete v tomto ukázkovém poznámkovém bloku: Detekce anomálií v protokolech služby Azure Monitor pomocí technik strojového učení.

4. Ingestování analyzovaných dat do vlastní tabulky v pracovním prostoru služby Log Analytics (volitelné)

Výsledky analýzy odešlete do vlastní tabulky v pracovním prostoru služby Log Analytics, která aktivuje výstrahy nebo je zpřístupní k další analýze.

  1. Pokud chcete odesílat data do pracovního prostoru služby Log Analytics, potřebujete vlastní tabulku, koncový bod shromažďování dat, pravidlo shromažďování dat a zaregistrovanou aplikaci Microsoft Entra s oprávněním k používání pravidla shromažďování dat, jak je vysvětleno v kurzu: Odesílání dat do protokolů pomocí rozhraní API pro příjem protokolů (Azure Portal).

    Při vytváření vlastní tabulky:

    1. Nahrajte tento ukázkový soubor pro definování schématu tabulky:

      [
        {
          "TimeGenerated": "2023-03-19T19:56:43.7447391Z",    
          "ActualUsage": 40.1,    
          "DataType": "AzureDiagnostics"     
        } 
      ]
      
  2. Definujte konstanty, které potřebujete pro rozhraní API pro příjem protokolů:

    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. Ingestování dat do vlastní tabulky v pracovním prostoru služby Log Analytics:

    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}")
    

    Poznámka:

    Když vytvoříte tabulku v pracovním prostoru služby Log Analytics, může trvat až 15 minut, než se ingestované data zobrazí v tabulce.

  4. Ověřte, že se data teď zobrazují ve vlastní tabulce.

    Snímek obrazovky znázorňující dotaz v Log Analytics ve vlastní tabulce, do které byly přijaty výsledky analýzy z poznámkového bloku

Další kroky

Další informace o tom, jak: