Oktatóanyag: Adatok elemzése az Azure Monitor-naplókban jegyzetfüzet használatával
A jegyzetfüzetek olyan integrált környezetek, amelyek lehetővé teszik dokumentumok létrehozását és megosztását élő kóddal, egyenletekkel, vizualizációkkal és szöveggel. Egy jegyzetfüzet Log Analytics-munkaterülettel való integrálásával létrehozhat egy többlépéses folyamatot, amely az előző lépés eredményei alapján minden lépésben futtat kódot. Ilyen leegyszerűsített folyamatokkal gépi tanulási folyamatokat, fejlett elemzési eszközöket, hibaelhárítási útmutatókat (TSG-ket) hozhat létre a támogatási igényeknek megfelelően, és így tovább.
A jegyzetfüzetek Log Analytics-munkaterülettel való integrálásával a következőket is lehetővé teszi:
- KQL-lekérdezések és egyéni kód futtatása bármilyen nyelven.
- Új elemzési és vizualizációs képességek, például új gépi tanulási modellek, egyéni ütemtervek és folyamatfák bemutatása.
- Integrálhatók az Azure Monitor-naplókon kívüli adatkészletek, például egy helyszíni adatkészletek.
- Használja ki a megnövekedett szolgáltatási korlátokat a Query API-korlátok használatával az Azure Portalhoz képest.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Jegyzetfüzet integrálása a Log Analytics-munkaterülettel az Azure Monitor Query ügyfélkódtár és az Azure Identity ügyfélkódtár használatával
- Adatok felfedezése és vizualizációja a Log Analytics-munkaterületről egy jegyzetfüzetben
- Adatok betöltése a jegyzetfüzetből egy egyéni táblába a Log Analytics-munkaterületen (nem kötelező)
Az Azure Monitor-naplók adatainak notebook használatával történő elemzésére szolgáló gépi tanulási folyamat létrehozásához tekintse meg ezt a mintajegyzetfüzetet: Az Azure Monitor-naplók rendellenességeinek észlelése gépi tanulási technikákkal.
Tipp.
Az API-val kapcsolatos korlátozások megkerüléséhez ossza fel a nagyobb lekérdezéseket több kisebb lekérdezésre.
Előfeltételek
Ebben az oktatóanyagban a következőkre van szüksége:
Egy Azure Machine-Tanulás-munkaterület egy CPU-számítási példánnyal a következőkkel:
- Egy jegyzetfüzet.
- Python 3.8-ra vagy újabbra beállított kernel.
A következő szerepkörök és engedélyek:
Az Azure Monitor-naplókban: A Logs Analytics közreműködői szerepköre, amely adatokat olvas be és küld el a Logs Analytics-munkaterületre. További információ: Log Analytics-munkaterületek hozzáférésének kezelése.
Az Azure Machine Tanulás:
- Erőforráscsoportszintű tulajdonosi vagy közreműködői szerepkör, amely szükség esetén új Azure Machine-Tanulás-munkaterületet hoz létre.
- Közreműködői szerepkör az Azure Machine Tanulás munkaterületen, ahol a jegyzetfüzetet futtatja.
További információ: Azure Machine-Tanulás-munkaterülethez való hozzáférés kezelése.
Eszközök és jegyzetfüzetek
Ebben az oktatóanyagban az alábbi eszközöket használja:
Eszköz | Leírás |
---|---|
Azure Monitor Query ügyfélkódtár | Lehetővé teszi írásvédett lekérdezések futtatását az adatokon az Azure Monitor-naplókban. |
Azure Identity-ügyfélkódtár | Lehetővé teszi az Azure SDK-ügyfelek számára a Microsoft Entra-azonosítóval való hitelesítést. |
Azure Monitor Betöltési ügyfélkódtár | Lehetővé teszi egyéni naplók küldését az Azure Monitorba a Logs Ingestion API használatával. Az elemzett adatok Log Analytics-munkaterületen lévő egyéni táblába való betöltéséhez szükséges (nem kötelező) |
Adatgyűjtési szabály, adatgyűjtési végpont és regisztrált alkalmazás | Az elemzett adatok Log Analytics-munkaterületen lévő egyéni táblába való betöltéséhez szükséges (nem kötelező) |
További használható lekérdezéstárak:
- A Kqlmagic-kódtár lehetővé teszi a KQL-lekérdezések közvetlen futtatását közvetlenül egy jegyzetfüzetben, ugyanúgy, mint a Log Analytics eszköz KQL-lekérdezéseit.
- Az MSTICPY-kódtár olyan sablonalapú lekérdezéseket biztosít, amelyek beépített KQL-idősorokat és gépi tanulási képességeket hívnak meg, valamint fejlett vizualizációs eszközöket és adatelemzéseket biztosítanak a Log Analytics-munkaterületen.
A microsoftos jegyzetfüzetek további speciális elemzési felületei a következők:
- Azure Synapse Analytics-jegyzetfüzetek
- Microsoft Fabric-jegyzetfüzetek
- Visual Studio Code-jegyzetfüzetek
1. A Log Analytics-munkaterület integrálása a jegyzetfüzettel
Állítsa be a jegyzetfüzetet a Log Analytics-munkaterület lekérdezéséhez:
Telepítse az Azure Monitor Query, az Azure Identity és az Azure Monitor Betöltési ügyfélkódtárakat, valamint a Pandas adatelemzési könyvtárát, a Plotly visualization libraryt:
import sys !{sys.executable} -m pip install --upgrade azure-monitor-query azure-identity azure-monitor-ingestion !{sys.executable} -m pip install --upgrade pandas plotly
Állítsa az
LOGS_WORKSPACE_ID
alábbi változót a Log Analytics-munkaterület azonosítójára. A változó jelenleg az Azure Monitor Demo munkaterület használatára van beállítva, amellyel lefokozhatja a jegyzetfüzetet.LOGS_WORKSPACE_ID = "DEMO_WORKSPACE"
Állítsa be
LogsQueryClient
az Azure Monitor-naplók hitelesítését és lekérdezését.Ez a kód a következővel
DefaultAzureCredential
állítja beLogsQueryClient
a hitelesítést: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
általában csak a Microsoft Entra-jogkivonat hitelesítő adataival való hitelesítést támogatja. Azonban át tudunk adni egy egyéni hitelesítési szabályzatot az API-kulcsok használatának engedélyezéséhez. Így az ügyfél lekérdezheti a bemutató munkaterületet. A bemutató munkaterület rendelkezésre állása és elérése változhat, ezért javasoljuk, hogy saját Log Analytics-munkaterületet használjon.Adjon meg egy úgynevezett
query_logs_workspace
segédfüggvényt, amellyel futtathat egy adott lekérdezést a Log Analytics-munkaterületen, és pandas DataFrame-ként adja vissza az eredményeket.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. A Log Analytics-munkaterület adatainak felfedezése és vizualizációja a jegyzetfüzetben
Tekintsünk meg néhány adatot a munkaterületen a jegyzetfüzetből származó lekérdezés futtatásával:
Ez a lekérdezés ellenőrzi, hogy mennyi adatot (megabájtban) fogadott be a Log Analytics-munkaterület minden egyes táblájába (adattípusába) az elmúlt hét minden órájában:
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)
Az eredményül kapott DataFrame a Log Analytics-munkaterület minden táblájában megjeleníti az óránkénti betöltést:
Most tekintsük meg az adatokat egy grafikonként, amely a Pandas DataFrame alapján megjeleníti a különböző adattípusok óránkénti használatát:
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()
Az eredményként kapott gráf a következőképpen néz ki:
Sikeresen lekérdezte és vizualizálta a naplóadatokat a Log Analytics-munkaterületről a jegyzetfüzetben.
3. Adatok elemzése
Egyszerű példaként vegyük az első öt sort:
analyzed_df = df.head(5)
Az Azure Monitor-naplókban lévő adatok elemzésére szolgáló gépi tanulási technikák implementálásához tekintse meg ezt a mintajegyzetfüzetet: A rendellenességek észlelése az Azure Monitor-naplókban gépi tanulási technikákkal.
4. Elemezt adatok betöltése egyéni táblába a Log Analytics-munkaterületen (nem kötelező)
Küldje el az elemzési eredményeket a Log Analytics-munkaterület egy egyéni táblájába riasztások aktiválásához vagy további elemzéshez való elérhetővé tétele érdekében.
Ahhoz, hogy adatokat küldjön a Log Analytics-munkaterületre, szüksége van egy egyéni táblára, adatgyűjtési végpontra, adatgyűjtési szabályra és egy regisztrált Microsoft Entra-alkalmazásra az adatgyűjtési szabály használatára vonatkozó engedéllyel, az oktatóanyagban leírtak szerint: Adatok küldése az Azure Monitor-naplókba a Logs ingestion API-val (Azure Portal).
Az egyéni tábla létrehozásakor:
Töltse fel ezt a mintafájlt a táblaséma definiálásához:
[ { "TimeGenerated": "2023-03-19T19:56:43.7447391Z", "ActualUsage": 40.1, "DataType": "AzureDiagnostics" } ]
Adja meg a Logs Ingestion API-hoz szükséges állandókat:
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
Az adatok betöltése az egyéni táblába a Log Analytics-munkaterületen:
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}")
Megjegyzés:
Amikor létrehoz egy táblát a Log Analytics-munkaterületen, az akár 15 percet is igénybe vehet, amíg a betöltött adatok megjelennek a táblában.
Ellenőrizze, hogy az adatok most már megjelennek-e az egyéni táblában.
Következő lépések
További információ az alábbiakról:
- Gépi tanulási folyamat ütemezése.
- A rendellenességek észlelése és elemzése a KQL használatával.