Pustaka klien Azure Monitor Ingestion untuk Python - versi 1.0.3

Pustaka klien Penyerapan Azure Monitor digunakan untuk mengirim log kustom ke Azure Monitor menggunakan API Penyerapan Log.

Pustaka ini memungkinkan Anda mengirim data dari hampir semua sumber ke tabel bawaan yang didukung atau ke tabel kustom yang Anda buat di ruang kerja Analitik Log. Anda bahkan dapat memperpanjang skema tabel bawaan dengan kolom kustom.

Sumber Daya:

Memulai

Prasyarat

Instal paketnya

Instal pustaka klien Azure Monitor Ingestion untuk Python dengan pip:

pip install azure-monitor-ingestion

Membuat klien

Klien yang diautentikasi diperlukan untuk mengunggah Log ke Azure Monitor. Pustaka mencakup bentuk klien yang sinkron dan asinkron. Untuk mengautentikasi, buat instans kredensial token. Gunakan instans tersebut saat membuat LogsIngestionClient. Contoh berikut menggunakan DefaultAzureCredential dari paket azure-identity .

Klien sinkron

Pertimbangkan contoh berikut, yang membuat klien sinkron untuk mengunggah log:

import os
from azure.identity import DefaultAzureCredential
from azure.monitor.ingestion import LogsIngestionClient

endpoint = os.environ['DATA_COLLECTION_ENDPOINT']
credential = DefaultAzureCredential()
logs_client = LogsIngestionClient(endpoint, credential)

Klien asinkron

Bentuk asinkron API klien ditemukan di .aionamespace -akhiran. Contohnya:

import os
from azure.identity.aio import DefaultAzureCredential
from azure.monitor.ingestion.aio import LogsIngestionClient

endpoint = os.environ['DATA_COLLECTION_ENDPOINT']
credential = DefaultAzureCredential()
logs_client = LogsIngestionClient(endpoint, credential)

Mengonfigurasi klien untuk cloud Azure non-publik

Secara default, LogsIngestionClient dikonfigurasi untuk menyambungkan ke cloud Azure publik. Untuk menyambungkan ke cloud Azure non-publik, diperlukan beberapa konfigurasi tambahan. Cakupan yang sesuai untuk autentikasi harus disediakan menggunakan credential_scopes argumen kata kunci. Contoh berikut menunjukkan cara mengonfigurasi klien untuk menyambungkan ke Azure Pemerintah AS:

logs_client = LogsIngestionClient(endpoint, credential_scopes=["https://monitor.azure.us//.default"])

Konsep utama

Titik Akhir Pengumpulan Data

Titik Akhir Pengumpulan Data (DCE) memungkinkan Anda mengonfigurasi pengaturan penyerapan secara unik untuk Azure Monitor. Artikel ini menyediakan gambaran umum titik akhir pengumpulan data termasuk konten dan strukturnya dan bagaimana Anda dapat membuat dan bekerja dengannya.

Aturan Pengumpulan Data

Aturan pengumpulan data (DCR) menentukan data yang dikumpulkan oleh Azure Monitor dan menentukan bagaimana dan di mana data tersebut harus dikirim atau disimpan. Panggilan REST API harus menentukan DCR yang akan digunakan. Satu DCE dapat mendukung beberapa DDR, sehingga Anda dapat menentukan DCR yang berbeda untuk sumber dan tabel target yang berbeda.

DCR harus memahami struktur data input dan struktur tabel target. Jika tidak cocok, keduanya dapat menggunakan transformasi untuk mengonversi data sumber agar sesuai dengan tabel target. Anda juga dapat menggunakan transformasi untuk memfilter data sumber dan melakukan perhitungan atau konversi lainnya.

Untuk informasi selengkapnya, lihat Aturan pengumpulan data di Azure Monitor, dan lihat artikel ini untuk detail tentang struktur DCR. Untuk informasi tentang cara mengambil ID DCR, lihat tutorial ini.

Tabel ruang kerja Analitik Log

Log kustom dapat mengirim data ke setiap tabel kustom yang Anda buat dan ke tabel bawaan tertentu di ruang kerja Analitik Log Anda. Tabel target harus ada sebelum Anda dapat mengirim data ke tabel tersebut. Saat ini tabel bawaan berikut didukung:

Pengambilan log

Log yang diunggah menggunakan pustaka ini dapat dikueri menggunakan pustaka klien Azure Monitor Query .

Contoh

Mengunggah log kustom

Contoh ini menunjukkan pengunggahan log ke Azure Monitor.

import os

from azure.core.exceptions import HttpResponseError
from azure.identity import DefaultAzureCredential
from azure.monitor.ingestion import LogsIngestionClient

endpoint = os.environ['DATA_COLLECTION_ENDPOINT']
credential = DefaultAzureCredential()

client = LogsIngestionClient(endpoint=endpoint, credential=credential, logging_enable=True)

rule_id = os.environ['LOGS_DCR_RULE_ID']
body = [
      {
        "Time": "2021-12-08T23:51:14.1104269Z",
        "Computer": "Computer1",
        "AdditionalContext": "context-2"
      },
      {
        "Time": "2021-12-08T23:51:14.1104269Z",
        "Computer": "Computer2",
        "AdditionalContext": "context"
      }
    ]

try:
    client.upload(rule_id=rule_id, stream_name=os.environ['LOGS_DCR_STREAM_NAME'], logs=body)
except HttpResponseError as e:
    print(f"Upload failed: {e}")

Unggah dengan penanganan kesalahan kustom

Untuk mengunggah log dengan penanganan kesalahan kustom, Anda dapat meneruskan fungsi panggilan balik ke on_error parameter upload metode . Fungsi panggilan balik dipanggil untuk setiap kesalahan yang terjadi selama pengunggahan dan harus mengharapkan satu argumen yang sesuai dengan LogsUploadError objek. Objek ini memuat kesalahan yang ditemui dan daftar log yang gagal diunggah.

# Example 1: Collect all logs that failed to upload.
failed_logs = []
def on_error(error):
    print("Log chunk failed to upload with error: ", error.error)
    failed_logs.extend(error.failed_logs)

# Example 2: Ignore all errors.
def on_error_pass(error):
    pass

client.upload(rule_id=rule_id, stream_name=os.environ['LOGS_DCR_STREAM_NAME'], logs=body, on_error=on_error)

Pemecahan Masalah

Untuk detail tentang mendiagnosis berbagai skenario kegagalan, lihat panduan pemecahan masalah kami.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Azure Monitor, lihat dokumentasi layanan Azure Monitor.

Sampel

Sampel kode berikut menunjukkan skenario umum dengan pustaka klien Penyerapan Azure Monitor.

Sampel Penyerapan Log

Berkontribusi

Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi cla.microsoft.com.

Ketika Anda mengirimkan permintaan tarik, CLA-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repositori menggunakan CLA kami.

Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat FAQ Kode Etik atau hubungi opencode@microsoft.com untuk mengajukan pertanyaan atau komentar tambahan.