Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat Anda bekerja dengan Azure SDK untuk peti Rust, Anda memerlukan visibilitas ke dalam operasi SDK untuk men-debug masalah, memantau performa, dan memahami bagaimana aplikasi Anda berinteraksi dengan layanan Azure. Artikel ini menunjukkan kepada Anda cara menerapkan strategi pengelogan dan telemetri berbasis OpenTelemetry yang efektif yang memberikan wawasan tentang cara kerja dalam aplikasi Rust di Azure.
Telemetri untuk pengembang Azure
Crates Azure SDK untuk Rust menyediakan pengamatan komprehensif melalui integrasi OpenTelemetry, yang kami sarankan untuk pemantauan dan pelacakan terdistribusi. Baik Anda memecahkan masalah alur autentikasi, memantau siklus permintaan API, atau menganalisis penyempitan performa, panduan ini mencakup alat dan teknik OpenTelemetry yang Anda butuhkan untuk mendapatkan visibilitas ke dalam operasi Azure SDK Anda.
Azure SDK untuk peti Rust menggunakan OpenTelemetry sebagai pendekatan standar untuk pengamatan, menyediakan:
- Telemetri standar industri: Gunakan format OpenTelemetry yang kompatibel dengan platform pemantauan
- Pelacakan terdistribusi: Melacak permintaan di beberapa layanan dan sumber daya Azure
- Eksportir tingkat lanjut: Mengirim data ke Jaeger, Prometheus, Grafana, dan platform pengamatan lainnya
- Korelasi di seluruh layanan: Menyebarkan konteks pelacakan secara otomatis antar layanan mikro
- Pemantauan produksi: Dibangun untuk lingkungan produksi skala tinggi dengan pengambilan sampel dan pengoptimalan performa
Penting
Saat ini, Microsoft tidak menyediakan pengekspor OpenTelemetry Azure Monitor langsung untuk aplikasi Rust. Distro OpenTelemetry Azure Monitor hanya mendukung .NET, Java, Node.js, dan Python. Untuk aplikasi Rust, Anda perlu mengekspor data OpenTelemetry ke sistem perantara (seperti Azure Storage, Event Hubs, atau OpenTelemetry Collector) lalu mengimpor data tersebut ke Azure Monitor menggunakan metode penyerapan yang didukung.
Menyiapkan pengelogan OpenTelemetry
Untuk menggunakan OpenTelemetry, Anda memerlukan peti azure_core_opentelemetry . Paket azure_core saja tidak termasuk dukungan OpenTelemetry.
Masuk ke Azure CLI:
az loginBuat sumber daya Azure Monitor dengan menggunakan Azure CLI:
# Set variables RESOURCE_GROUP="rust-telemetry-rg" LOCATION="eastus" APP_INSIGHTS_NAME="rust-app-insights" LOG_ANALYTICS_WORKSPACE="rust-logs-workspace" # Create resource group az group create --name $RESOURCE_GROUP --location $LOCATION # Create Log Analytics workspace WORKSPACE_ID=$(az monitor log-analytics workspace create \ --resource-group $RESOURCE_GROUP \ --workspace-name $LOG_ANALYTICS_WORKSPACE \ --location $LOCATION \ --query id -o tsv) # Create Application Insights instance az extension add --name application-insights INSTRUMENTATION_KEY=$(az monitor app-insights component create \ --app $APP_INSIGHTS_NAME \ --location $LOCATION \ --resource-group $RESOURCE_GROUP \ --workspace $WORKSPACE_ID \ --query instrumentationKey -o tsv) # Get connection string CONNECTION_STRING=$(az monitor app-insights component show \ --app $APP_INSIGHTS_NAME \ --resource-group $RESOURCE_GROUP \ --query connectionString -o tsv) echo "Application Insights Connection String: $CONNECTION_STRING"Konfigurasikan proyek Rust Anda. Tambahkan dependensi yang diperlukan ke
Cargo.toml:[dependencies] azure_core_opentelemetry = "*" azure_security_keyvault_secrets = "*" azure_identity = "*" opentelemetry = "0.31" opentelemetry_sdk = "0.31" opentelemetry-otlp = "0.31" # For exporting to OpenTelemetry Collector tokio = { version = "1.47.1", features = ["full"] }Nota
Peti
opentelemetry-otlpdisertakan untuk mengekspor data telemetri ke OpenTelemetry Collector, yang kemudian dapat meneruskan data ke Azure Monitor. Ekspor Azure Monitor langsung dari aplikasi Rust tidak didukung.Buat aplikasi utama Anda dengan konfigurasi OpenTelemetry. Lihat dokumentasi azure_core_opentelemetry untuk detailnya.
Atur variabel lingkungan yang diperlukan dan jalankan aplikasi Anda:
# Set Key Vault URL (replace with your actual Key Vault URL) export AZURE_KEYVAULT_URL="https://mykeyvault.vault.azure.net/" # Run the application cargo run
Setelah mengonfigurasi OpenTelemetry di aplikasi dan menjalankannya, Anda dapat menambahkan instrumentasi kustom dan memantau data telemetri.
Ekspor telemetri ke Azure Monitor
Karena Rust tidak memiliki pengekspor OpenTelemetry Azure Monitor langsung, Anda perlu menerapkan pendekatan tidak langsung untuk mendapatkan data telemetri Anda ke Azure Monitor. Berikut adalah metode yang direkomendasikan:
Opsi 1: OpenTelemetry Collector (Disarankan)
OpenTelemetry Collector bertindak sebagai lapisan tengah yang dapat menerima telemetri dari aplikasi Rust Anda dan meneruskannya ke Azure Monitor:
- Terbitkan OpenTelemetry Collector di lingkungan Anda (sebagai sidecar, agen, atau gateway)
- Konfigurasikan aplikasi Rust Anda untuk diekspor ke Kolektor menggunakan OTLP (Protokol OpenTelemetry)
- Mengonfigurasi Kolektor dengan pengekspor Azure Monitor untuk meneruskan data ke Application Insights
Opsi 2: Azure Storage + DATA Ingestion API
Untuk skenario di mana Anda memerlukan kontrol lebih atas pemrosesan data:
- Ekspor telemetri ke Azure Storage (Blob Storage atau Data Lake)
- Memproses data menggunakan Azure Functions, Logic Apps, atau aplikasi kustom
- Menyerap data yang diproses ke Azure Monitor menggunakan API Penyerapan Log
Opsi 3: Streaming Pusat Aktivitas
Untuk pemrosesan telemetri real time:
- Melakukan streaming telemetri ke Azure Event Hubs dari aplikasi Rust Anda
- Memproses peristiwa menggunakan Azure Stream Analytics, Azure Functions, atau konsumen kustom
- Meneruskan telemetri yang diproses ke Azure Monitor atau Application Insights
Menyesuaikan data telemetri
OpenTelemetry menyediakan kerangka kerja yang fleksibel untuk menyesuaikan data telemetri agar sesuai dengan kebutuhan aplikasi Anda. Gunakan strategi ini untuk meningkatkan telemetri Anda:
Tambahkan instrumentasi pada kode aplikasi Anda
Menambahkan instrumentasi kustom ke kode aplikasi membantu Anda menghubungkan logika bisnis Anda dengan operasi Azure SDK. Korelasi ini memudahkan untuk memahami alur operasi yang lengkap.
| Technique | Tujuan | Implementation |
|---|---|---|
| Rentang kustom untuk operasi Azure | Membuat hierarki yang jelas yang menunjukkan bagaimana logika aplikasi berkaitan dengan operasi Azure | Membungkus panggilan Azure SDK dengan menggunakan metode pembuatan span OpenTelemetry. |
| Menghubungkan logika aplikasi dengan panggilan SDK | Menghubungkan operasi bisnis dengan panggilan Azure SDK yang mendasarinya | Menggunakan konteks rentang untuk menautkan operasi bisnis dengan panggilan layanan Azure yang dipicu |
| Membuat jejak diagnostik | Menangkap konteks penting untuk telemetri di seluruh alur kerja | Menambahkan bidang terstruktur (ID pengguna, ID permintaan, pengidentifikasi objek bisnis) ke rentang |
Analisis Performa
OpenTelemetry memberikan wawasan terperinci tentang pola performa Azure SDK. Wawasan ini membantu Anda mengidentifikasi dan mengatasi hambatan performa.
| Jenis Analisis | Apa yang Diungkapkannya | Cara penggunaan |
|---|---|---|
| Durasi operasi SDK | Berapa lama operasi Azure yang berbeda berlangsung | Gunakan waktu rentang yang ditangkap OpenTelemetry secara otomatis untuk mengidentifikasi operasi lambat |
| Penyempitan panggilan layanan | Di mana aplikasi Anda menghabiskan waktu menunggu respons Azure | Membandingkan waktu di seluruh layanan dan operasi Azure untuk menemukan masalah performa |
| Pola operasi bersamaan | Tumpang tindih dan dependensi antar operasi | Menganalisis data telemetri untuk memahami peluang paralelisasi saat melakukan beberapa panggilan Azure |
Diagnosis kesalahan
OpenTelemetry menangkap konteks kesalahan kaya yang melampaui pesan kesalahan sederhana. Konteks ini membantu Anda memahami bukan hanya apa yang gagal, tetapi mengapa dan dalam keadaan apa.
Memahami penyebaran kesalahan SDK: Lacak bagaimana kesalahan menggelegak melalui kode aplikasi Anda dan lapisan Azure SDK. Jejak ini membantu Anda memahami jalur kesalahan lengkap dan mengidentifikasi akar penyebabnya.
Kegagalan sementara log vs. permanen: Membedakan antara kegagalan sementara (seperti batas waktu jaringan yang mungkin berhasil saat mencoba kembali) dan kegagalan permanen (seperti kesalahan autentikasi yang memerlukan perubahan konfigurasi). Perbedaan ini membantu Anda membangun aplikasi tangguh.
Memahami log, metrik, dan pemberitahuan
Aplikasi dan layanan Anda menghasilkan data telemetri untuk membantu Anda memantau kesehatan, performa, dan penggunaannya. Azure mengategorikan telemetri ini ke dalam log, metrik, dan pemberitahuan.
Azure menawarkan empat jenis telemetri:
| Jenis telemetri | Apa yang diberikannya kepada Anda | Tempat menemukannya untuk setiap layanan |
|---|---|---|
| Metrics | Numerik, data rangkaian waktu (CPU, memori, dll.) |
Metrik di portal atau az monitor metrics CLI |
| Alerts | Pemberitahuan proaktif saat ambang mencapai |
Pemberitahuan di portal atau az monitor metrics alert CLI |
| Catatan | Peristiwa dan diagnostik berbasis teks (web, aplikasi) | Log Layanan Aplikasi, Monitor Fungsi, Diagnostik Container Apps |
| Log kustom | Telemetri aplikasi Anda sendiri melalui App Insights | Tabel Log (Penelusuran) dari sumber daya Application Insights Anda |
Pilih telemetri yang tepat untuk pertanyaan Anda:
| Scenario | Menggunakan catatan log | Menggunakan metrik | Menggunakan pemberitahuan |
|---|---|---|---|
| Apakah aplikasi web saya sudah aktif dan merespons? | Log server web App Service (Log) | N/A | N/A |
| Apakah fungsi saya kedaluwarsa atau gagal? | Log pemanggilan fungsi (Monitor) | Metrik durasi eksekusi fungsi | Peringatan pada "Kesalahan Fungsi >0" |
| Seberapa padat layanan saya dan apakah layanan tersebut dapat ditingkatkan skalanya? | N/A | Throughput/CPU untuk layanan dalam Metrik | Pemberitahuan skala otomatis pada CPU% > 70% |
| "Apa pengecualian yang dilemparkan oleh kode saya?" | Log Jejak Kustom di Application Insights | N/A | Pemberitahuan tentang "ServerExceptions >0" |
| "Apakah saya telah melebihi batas transaksi atau kuota saya?" | N/A | Metrik terkait kuota (Transaksi, Pembatasan Kecepatan) | Peringatan pada "ThrottlingCount >0" |
Menampilkan data telemetri di Azure Monitor
Setelah menyiapkan OpenTelemetry di aplikasi Rust Anda dan mengonfigurasi mekanisme ekspor perantara, Anda dapat melihat data telemetri di Azure Monitor melalui Application Insights. Karena Rust tidak memiliki kemampuan ekspor Azure Monitor langsung, Anda harus menerapkan salah satu pendekatan berikut:
- OpenTelemetry Collector: Mengonfigurasi OpenTelemetry Collector untuk menerima data dari aplikasi Rust Anda dan meneruskannya ke Azure Monitor
- Integrasi Azure Storage: Ekspor telemetri ke Azure Storage dan gunakan API penyerapan data Azure Monitor untuk mengimpor data
- Pengaliran Event Hubs: Mengalirkan data telemetri melalui Azure Event Hubs dan memprosesnya untuk penyerapan Azure Monitor
Setelah data telemetri Anda mencapai Azure Monitor melalui salah satu metode ini, Anda dapat menganalisisnya:
Masuk ke Application Insights di portal Azure.
az monitor app-insights component show \ --app $APP_INSIGHTS_NAME \ --resource-group $RESOURCE_GROUP \ --query "{name:name,appId:appId,instrumentationKey:instrumentationKey}"Lihat jejak dan log:
- Bukapencarian Transaksi>
- Cari jejak dengan nama operasi seperti
get_keyvault_secrets - Periksa bagian Log dan jalankan kueri KQL:
traces | where timestamp > ago(1h) | where message contains "Azure operations" or message contains "secrets" | order by timestamp descLihat jejak terdistribusi:
- Buka Peta Aplikasi untuk melihat dependensi layanan
- Pilih Performa untuk melihat waktu operasi
- Gunakan rincian transaksi end-to-end untuk mengakses seluruh proses permintaan.
Kueri KQL kustom untuk aplikasi Rust Anda:
// View all custom logs from your Rust app traces | where customDimensions.["service.name"] == "rust-azure-app" | order by timestamp desc // View Azure SDK HTTP operations dependencies | where type == "HTTP" | where target contains "vault.azure.net" | order by timestamp desc // Monitor error rates traces | where severityLevel >= 3 // Warning and above | summarize count() by bin(timestamp, 1m), severityLevel | render timechart
Memantau dalam waktu nyata
Siapkan pemantauan langsung untuk melihat data saat tiba:
# Stream live logs (requires Azure CLI)
az monitor app-insights events show \
--app $APP_INSIGHTS_NAME \
--resource-group $RESOURCE_GROUP \
--event traces \
--start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%S)
Pengoptimalan biaya
Anda dapat secara signifikan mengurangi biaya untuk Azure Monitor dengan memahami praktik terbaik untuk opsi konfigurasi dan peluang untuk mengurangi jumlah data yang dikumpulkan Azure Monitor.
Strategi utama untuk aplikasi Rust:
- Gunakan tingkat log yang sesuai: Mengonfigurasi tingkat log OpenTelemetry dengan tepat agar produksi dapat mengurangi volume
- Menerapkan pengambilan sampel: Mengonfigurasi pengambilan sampel OpenTelemetry untuk aplikasi volume tinggi
- Memfilter data sensitif: Hindari mencatat rahasia, token, atau payload besar yang meningkatkan biaya
- Memantau penyerapan data: Meninjau penggunaan dan biaya data Application Insights Anda secara teratur