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:
- Poznámkový blok.
- Jádro nastavené na Python 3.8 nebo vyšší
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ří:
- Poznámkové bloky Azure Synapse Analytics
- Poznámkové bloky Microsoft Fabric
- Poznámkové bloky editoru Visual Studio Code
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:
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
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"
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.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:
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:
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:
Ú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.
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:
Nahrajte tento ukázkový soubor pro definování schématu tabulky:
[ { "TimeGenerated": "2023-03-19T19:56:43.7447391Z", "ActualUsage": 40.1, "DataType": "AzureDiagnostics" } ]
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
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.
Ověřte, že se data teď zobrazují ve vlastní tabulce.
Další kroky
Další informace o tom, jak:
- Naplánujte kanál strojového učení.
- Detekce anomálií anomálií pomocí KQL