Öğretici: Not defteri kullanarak Azure İzleyici Günlüklerindeki verileri analiz etme
Not defterleri canlı kod, denklemler, görselleştirmeler ve metinlerle belge oluşturmanıza ve paylaşmanıza olanak sağlayan tümleşik ortamlardır. Bir not defterini Log Analytics çalışma alanıyla tümleştirmek, önceki adımın sonuçlarına göre her adımda kod çalıştıran çok adımlı bir işlem oluşturmanıza olanak tanır. Makine öğrenmesi işlem hatları, gelişmiş analiz araçları, destek ihtiyaçları için sorun giderme kılavuzları (TSG) ve daha fazlasını oluşturmak için bu tür kolaylaştırılmış işlemleri kullanabilirsiniz.
Not defterini Log Analytics çalışma alanıyla tümleştirmek şunları da sağlar:
- KQL sorgularını ve özel kodu herhangi bir dilde çalıştırın.
- Yeni makine öğrenmesi modelleri, özel zaman çizelgeleri ve işlem ağaçları gibi yeni analiz ve görselleştirme özelliklerini tanıtın.
- Şirket içi veri kümeleri gibi veri kümelerini Azure İzleyici Günlükleri dışında tümleştirin.
- Azure portalıyla karşılaştırıldığında Sorgu API'sini kullanarak artan hizmet sınırlarından yararlanın.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Azure İzleyici Sorgu istemci kitaplığını ve Azure Identity istemci kitaplığını kullanarak bir not defterini Log Analytics çalışma alanınızla tümleştirme
- Log Analytics çalışma alanınızdaki verileri bir not defterinde keşfetme ve görselleştirme
- Not defterinizdeki verileri Log Analytics çalışma alanınızdaki özel bir tabloya alma (isteğe bağlı)
Not defteri kullanarak Azure İzleyici Günlüklerindeki verileri analiz etmek için bir makine öğrenmesi işlem hattı oluşturma örneği için şu örnek not defterine bakın: Makine öğrenmesi tekniklerini kullanarak Azure İzleyici Günlüklerindeki anomalileri algılama.
İpucu
API ile ilgili sınırlamaları geçici olarak çözmek için büyük sorguları birden çok küçük sorguya bölün.
Önkoşullar
Bu öğretici için şunları yapmanız gerekir:
CPU işlem örneğine sahip bir Azure Machine Learning çalışma alanı:
- Bir not defteri.
- Python 3.8 veya üzeri olarak ayarlanmış bir çekirdek.
Aşağıdaki roller ve izinler:
Azure İzleyici Günlükleri'nde: Logs Analytics çalışma alanınızdaki verileri okumak ve bu çalışma alanına veri göndermek için Logs Analytics Katkıda Bulunanı rolü. Daha fazla bilgi için bkz . Log Analytics çalışma alanlarına erişimi yönetme.
Azure Machine Learning'de:
- Gerekirse yeni bir Azure Machine Learning çalışma alanı oluşturmak için kaynak grubu düzeyinde Sahip veya Katkıda Bulunan rolü.
- Not defterinizi çalıştırdığınız Azure Machine Learning çalışma alanında Katkıda Bulunan rolü.
Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanına erişimi yönetme.
Araçlar ve not defterleri
Bu öğreticide şu araçları kullanacaksınız:
Araç | Açıklama |
---|---|
Azure İzleyici Sorgusu istemci kitaplığı | Azure İzleyici Günlüklerindeki veriler üzerinde salt okunur sorgular çalıştırmanızı sağlar. |
Azure Identity istemci kitaplığı | Azure SDK istemcilerinin Microsoft Entra Id ile kimlik doğrulaması gerçekleştirmesini sağlar. |
Azure İzleyici Alımı istemci kitaplığı | Günlük Alımı API'sini kullanarak Azure İzleyici'ye özel günlükler göndermenizi sağlar. Analiz edilen verileri Log Analytics çalışma alanınızdaki özel bir tabloya almak için gereklidir (isteğe bağlı) |
Veri toplama kuralı, veri toplama uç noktası ve kayıtlı bir uygulama | Analiz edilen verileri Log Analytics çalışma alanınızdaki özel bir tabloya almak için gereklidir (isteğe bağlı) |
Kullanabileceğiniz diğer sorgu kitaplıkları şunlardır:
- Kqlmagic kitaplığı , Log Analytics aracından KQL sorgularını çalıştırdığınız şekilde doğrudan bir not defteri içinde KQL sorguları çalıştırmanıza olanak tanır.
- MSTICPY kitaplığı , yerleşik KQL zaman serisini ve makine öğrenmesi özelliklerini çağıran şablonlu sorgular sağlar ve Log Analytics çalışma alanında gelişmiş görselleştirme araçları ve veri çözümlemeleri sağlar.
Gelişmiş analiz için diğer Microsoft not defteri deneyimleri şunlardır:
- Azure Synapse Analytics not defterleri
- Microsoft Fabric not defterleri
- Visual Studio Code Not Defterleri
1. Log Analytics çalışma alanınızı not defterinizle tümleştirme
Log Analytics çalışma alanınızı sorgulamak için not defterinizi ayarlayın:
Azure İzleyici Sorgusu, Azure Kimliği ve Azure İzleyici Alımı istemci kitaplıklarının yanı sıra Pandas veri çözümleme kitaplığı, Plotly görselleştirme kitaplığını yükleyin:
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
Aşağıdaki değişkeni Log Analytics çalışma alanınızın kimliğine ayarlayın. Değişkeni şu anda not defterinin tanıtımını yapmak için kullanabileceğiniz Azure İzleyici Tanıtım çalışma alanını kullanacak şekilde ayarlanmıştır.LOGS_WORKSPACE_ID = "DEMO_WORKSPACE"
Azure İzleyici Günlüklerinin kimliğini doğrulamak ve sorgulamak için ayarlayın
LogsQueryClient
.Bu kod kullanarak
DefaultAzureCredential
kimlik doğrulaması yapmak için ayarlarLogsQueryClient
: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
genellikle yalnızca Microsoft Entra belirteci kimlik bilgileriyle kimlik doğrulamayı destekler. Ancak, API anahtarlarının kullanımını etkinleştirmek için özel bir kimlik doğrulama ilkesi geçirebiliriz. Bu, istemcinin tanıtım çalışma alanını sorgulamasına olanak tanır. Bu tanıtım çalışma alanına yönelik kullanılabilirlik ve erişim değişebilir, bu nedenle kendi Log Analytics çalışma alanınızı kullanmanızı öneririz.Log Analytics çalışma alanında belirli bir sorguyu çalıştırmak ve sonuçları Pandas DataFrame olarak döndürmek için adlı
query_logs_workspace
bir yardımcı işlev tanımlayın.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. Not defterinizdeki Log Analytics çalışma alanınızdaki verileri keşfetme ve görselleştirme
Şimdi not defterinden bir sorgu çalıştırarak çalışma alanında bazı verilere bakalım:
Bu sorgu, log analytics çalışma alanınızdaki her bir tabloya (veri türleri) geçen hafta içinde her saat için ne kadar veri (Megabayt) aktardığınız denetler:
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)
Sonuçta elde edilen DataFrame, Log Analytics çalışma alanında tabloların her birinde saatlik alımı gösterir:
Şimdi verileri Pandas DataFrame'i temel alarak çeşitli veri türlerinin zaman içindeki saatlik kullanımını gösteren bir grafik olarak görüntüleyelim:
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()
Sonuçta elde edilen grafik şöyle görünür:
Log Analytics çalışma alanınızdaki günlük verilerini not defterinizde başarıyla sorgulayıp görselleştirdiniz.
3. Verileri analiz etme
Basit bir örnek olarak, ilk beş satırı ele alalım:
analyzed_df = df.head(5)
Azure İzleyici Günlüklerindeki verileri analiz etmek için makine öğrenmesi teknikleri uygulama örneği için şu örnek not defterine bakın: Makine öğrenmesi tekniklerini kullanarak Azure İzleyici Günlüklerindeki anomalileri algılama.
4. Analiz edilen verileri Log Analytics çalışma alanınızdaki özel bir tabloya alma (isteğe bağlı)
Uyarıları tetikleyebilmek veya daha fazla analiz için kullanılabilir hale getirmek için çözümleme sonuçlarınızı Log Analytics çalışma alanınızdaki özel bir tabloya gönderin.
Log Analytics çalışma alanınıza veri göndermek için özel bir tabloya, veri toplama uç noktasına, veri toplama kuralına ve Veri toplama kuralını kullanma iznine sahip kayıtlı bir Microsoft Entra uygulamasına ihtiyacınız vardır. Öğretici: Günlük alma API'si (Azure portalı) ile Azure İzleyici Günlüklerine veri gönderme.
Özel tablonuzu oluştururken:
Tablo şemasını tanımlamak için bu örnek dosyayı karşıya yükleyin:
[ { "TimeGenerated": "2023-03-19T19:56:43.7447391Z", "ActualUsage": 40.1, "DataType": "AzureDiagnostics" } ]
Günlük Alımı API'sinde ihtiyacınız olan sabitleri tanımlayın:
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
Verileri Log Analytics çalışma alanınızdaki özel tabloya alın:
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}")
Not
Log Analytics çalışma alanınızda tablo oluşturduğunuzda, alınan verilerin tabloda görünmesi 15 dakika kadar sürebilir.
Verilerin artık özel tablonuzda göründüğünü doğrulayın.
Sonraki adımlar
Şu konularda daha fazla bilgi edinin:
- Makine öğrenmesi işlem hattı zamanlayın.
- KQL kullanarak anomalileri algılama ve analiz etme.