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:
- Kode sumber
- Paket (PyPI)
- Paket (Conda)
- Dokumentasi referensi API
- Dokumentasi layanan
- Sampel
- Log perubahan
Memulai
Prasyarat
- Python 3.7 atau yang lebih baru
- Langganan Azure
- Ruang kerja Azure Log Analytics
- Titik akhir pengumpulan data
- Aturan pengumpulan data
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 .aio
namespace -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
- Mengunggah daftar log (sampel asinkron)
- Mengunggah daftar log dengan penanganan kesalahan kustom (sampel asinkron)
- Mengunggah konten file (sampel asinkron)
- Mengunggah data dalam Pandas DataFrame (sampel asinkron)
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.
Azure SDK for Python