Tutorial: Menganalisis data di Log Azure Monitor menggunakan buku catatan

Notebook adalah lingkungan terintegrasi yang memungkinkan Anda membuat dan berbagi dokumen dengan kode langsung, persamaan, visualisasi, dan teks. Mengintegrasikan notebook dengan ruang kerja Analitik Log memungkinkan Anda membuat proses multi-langkah yang menjalankan kode di setiap langkah berdasarkan hasil langkah sebelumnya. Anda dapat menggunakan proses yang disederhanakan tersebut untuk membangun alur pembelajaran mesin, alat analisis tingkat lanjut, panduan pemecahan masalah (TSG) untuk kebutuhan dukungan, dan banyak lagi.

Mengintegrasikan notebook dengan ruang kerja Analitik Log juga memungkinkan Anda:

  • Jalankan kueri KQL dan kode kustom dalam bahasa apa pun.
  • Perkenalkan kemampuan analitik dan visualisasi baru, seperti model pembelajaran mesin baru, garis waktu kustom, dan pohon proses.
  • Integrasikan himpunan data di luar Log Azure Monitor, seperti himpunan data lokal.
  • Manfaatkan peningkatan batas layanan menggunakan batas API Kueri dibandingkan dengan portal Azure.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Mengintegrasikan buku catatan dengan ruang kerja Analitik Log Anda menggunakan pustaka klien Azure Monitor Query dan pustaka klien Azure Identity
  • Menjelajahi dan memvisualisasikan data dari ruang kerja Analitik Log Anda di buku catatan
  • Menyerap data dari buku catatan Anda ke dalam tabel kustom di ruang kerja Analitik Log Anda (opsional)

Untuk contoh cara membuat alur pembelajaran mesin untuk menganalisis data di Log Azure Monitor menggunakan buku catatan, lihat contoh buku catatan ini : Mendeteksi anomali di Log Azure Monitor menggunakan teknik pembelajaran mesin.

Tip

Untuk mengatasi batasan terkait API, bagi kueri yang lebih besar menjadi beberapa kueri yang lebih kecil.

Prasyarat

Untuk tutorial ini, Anda perlu:

  • Ruang kerja Azure Pembelajaran Mesin dengan instans komputasi CPU dengan:

    • Buku catatan.
    • Kernel diatur ke Python 3.8 atau yang lebih tinggi.
  • Peran dan izin berikut:

    • Di Log Azure Monitor: Peran Kontributor Analitik Log untuk membaca data dari dan mengirim data ke ruang kerja Analitik Log Anda. Untuk informasi selengkapnya, lihat Mengelola akses ke ruang kerja Analitik Log.

    • Di Azure Pembelajaran Mesin:

      • Peran Pemilik atau Kontributor tingkat grup sumber daya, untuk membuat ruang kerja Azure Pembelajaran Mesin baru jika diperlukan.
      • Peran Kontributor di ruang kerja Azure Pembelajaran Mesin tempat Anda menjalankan buku catatan Anda.

      Untuk informasi selengkapnya, lihat Mengelola akses ke ruang kerja Azure Machine Learning.

Alat dan buku catatan

Dalam tutorial ini, Anda menggunakan alat-alat ini:

Alat Deskripsi
Pustaka klien Azure Monitor Query Memungkinkan Anda menjalankan kueri baca-saja pada data di Log Azure Monitor.
Pustaka klien Azure Identity Memungkinkan klien Azure SDK untuk mengautentikasi dengan ID Microsoft Entra.
Pustaka klien Penyerapan Azure Monitor Memungkinkan Anda mengirim log kustom ke Azure Monitor menggunakan API Penyerapan Log. Diperlukan untuk menyerap data yang dianalisis ke dalam tabel kustom di ruang kerja Analitik Log Anda (opsional)
Aturan pengumpulan data, titik akhir pengumpulan data, dan aplikasi terdaftar Diperlukan untuk menyerap data yang dianalisis ke dalam tabel kustom di ruang kerja Analitik Log Anda (opsional)

Pustaka kueri lain yang bisa Anda gunakan meliputi:

  • Pustaka Kqlmagic memungkinkan Anda menjalankan kueri KQL langsung di dalam buku catatan dengan cara yang sama seperti Anda menjalankan kueri KQL dari alat Analitik Log.
  • Pustaka MSTICPY menyediakan kueri templat yang memanggil kemampuan Rangkaian waktu dan pembelajaran mesin KQL bawaan, dan menyediakan alat visualisasi tingkat lanjut dan analisis data di ruang kerja Analitik Log.

Pengalaman notebook Microsoft lainnya untuk analisis tingkat lanjut meliputi:

1. Integrasikan ruang kerja Analitik Log Anda dengan buku catatan Anda

Siapkan notebook Anda untuk mengkueri ruang kerja Analitik Log Anda:

  1. Instal pustaka klien Azure Monitor Query, Azure Identity, dan Azure Monitor Ingestion bersama dengan pustaka analisis data Pandas, pustaka visualisasi 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. Atur variabel di LOGS_WORKSPACE_ID bawah ini ke ID ruang kerja Analitik Log Anda. Variabel saat ini diatur untuk menggunakan ruang kerja Demo Azure Monitor, yang dapat Anda gunakan untuk demo buku catatan.

    LOGS_WORKSPACE_ID = "DEMO_WORKSPACE"
    
  3. Siapkan LogsQueryClient untuk mengautentikasi dan mengkueri Log Azure Monitor.

    Kode ini disiapkan LogsQueryClient untuk mengautentikasi menggunakan 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 biasanya hanya mendukung autentikasi dengan kredensial token Microsoft Entra. Namun, kita dapat meneruskan kebijakan autentikasi kustom untuk mengaktifkan penggunaan kunci API. Ini memungkinkan klien untuk mengkueri ruang kerja demo. Ketersediaan dan akses ke ruang kerja demo ini dapat berubah, jadi sebaiknya gunakan ruang kerja Analitik Log Anda sendiri.

  4. Tentukan fungsi pembantu, yang disebut query_logs_workspace, untuk menjalankan kueri tertentu di ruang kerja Analitik Log dan mengembalikan hasilnya sebagai 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. Menjelajahi dan memvisualisasikan data dari ruang kerja Analitik Log Anda di buku catatan Anda

Mari kita lihat beberapa data di ruang kerja dengan menjalankan kueri dari buku catatan:

  1. Kueri ini memeriksa berapa banyak data (dalam Megabyte) yang Anda serap ke dalam setiap tabel (jenis data) di ruang kerja Analitik Log Anda setiap jam selama seminggu terakhir:

    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)
    

    DataFrame yang dihasilkan menunjukkan penyerapan per jam di setiap tabel di ruang kerja Analitik Log:

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

  2. Sekarang, mari kita lihat data sebagai grafik yang menunjukkan penggunaan per jam untuk berbagai jenis data dari waktu ke waktu, berdasarkan 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()
    

    Grafik yang dihasilkan terlihat seperti ini:

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

    Anda berhasil mengkueri dan memvisualisasikan data log dari ruang kerja Analitik Log di buku catatan Anda.

3. Menganalisis data

Sebagai contoh sederhana, mari kita ambil lima baris pertama:

analyzed_df = df.head(5)

Untuk contoh cara menerapkan teknik pembelajaran mesin untuk menganalisis data di Log Azure Monitor, lihat contoh buku catatan ini : Mendeteksi anomali di Log Azure Monitor menggunakan teknik pembelajaran mesin.

4. Menyerap data yang dianalisis ke dalam tabel kustom di ruang kerja Analitik Log Anda (opsional)

Kirim hasil analisis Anda ke tabel kustom di ruang kerja Analitik Log Anda untuk memicu pemberitahuan atau membuatnya tersedia untuk analisis lebih lanjut.

  1. Untuk mengirim data ke ruang kerja Analitik Log, Anda memerlukan tabel kustom, titik akhir pengumpulan data, aturan pengumpulan data, dan aplikasi Microsoft Entra terdaftar dengan izin untuk menggunakan aturan pengumpulan data, seperti yang dijelaskan dalam Tutorial: Mengirim data ke Log Azure Monitor dengan API penyerapan Log (portal Azure).

    Saat Anda membuat tabel kustom:

    1. Unggah file sampel ini untuk menentukan skema tabel:

      [
        {
          "TimeGenerated": "2023-03-19T19:56:43.7447391Z",    
          "ActualUsage": 40.1,    
          "DataType": "AzureDiagnostics"     
        } 
      ]
      
  2. Tentukan konstanta yang Anda butuhkan untuk API Penyerapan Log:

    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. Serap data ke dalam tabel kustom di ruang kerja Analitik Log Anda:

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

    Catatan

    Saat Anda membuat tabel di ruang kerja Analitik Log, diperlukan waktu hingga 15 menit agar data yang diserap muncul dalam tabel.

  4. Verifikasi bahwa data sekarang muncul di tabel kustom Anda.

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

Langkah berikutnya

Pelajari selengkapnya tentang cara: