Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Rust kasaları için Azure SDK ile çalışırken, sorunların hatalarını ayıklamak, performansı izlemek ve uygulamanızın Azure hizmetleriyle nasıl etkileşime geçtiğini anlamak için SDK işlemlerinin görünürlüğüne ihtiyacınız vardır. Azure'da Rust uygulamalarının iç işleyişiyle ilgili içgörüler sağlayan etkili OpenTelemetry tabanlı günlüklendirme ve telemetri stratejilerini nasıl uygulayabileceğiniz bu makalede gösterilmektedir.
Azure geliştiricileri için telemetri
Rust için Azure SDK kasaları, izleme ve dağıtılmış izleme senaryoları için önerdiğimiz OpenTelemetry tümleştirmesi aracılığıyla kapsamlı gözlemlenebilirlik sağlar. Kimlik doğrulama akışlarında sorun giderme, API istek döngülerini izleme veya performans sorunlarını analiz etme konusunda bu kılavuz, Azure SDK işlemlerinizde görünürlük elde etmek için ihtiyacınız olan OpenTelemetry araçlarını ve tekniklerini kapsar.
Rust kasaları için Azure SDK, gözlemlenebilirlik için standart yaklaşım olarak OpenTelemetry'yi kullanır ve şunları sağlar:
- Endüstri standardı telemetri: İzleme platformlarıyla uyumlu OpenTelemetry biçimlerini kullanın
- Dağıtılmış izleme: Birden çok hizmette ve Azure kaynağında istekleri izleme
- Gelişmiş ihracatçılar: Jaeger, Prometheus, Grafana ve diğer gözlemlenebilirlik platformlarına veri gönderin
- Hizmetler arasında bağıntı: mikro hizmetler arasında izleme bağlamlarını otomatik olarak yayma
- Üretim izleme: Örnekleme ve performans iyileştirmeleri ile yüksek ölçekli üretim ortamları için tasarlanmıştır
Önemli
Microsoft şu anda Rust uygulamaları için doğrudan bir Azure İzleyici OpenTelemetry dışa aktarıcısı sunmuyor. Azure İzleyici OpenTelemetry Distro yalnızca .NET, Java, Node.jsve Python'ı destekler. Rust uygulamaları için OpenTelemetry verilerini bir ara sisteme (Azure Depolama, Event Hubs veya OpenTelemetry Collector gibi) dışarı aktarmanız ve ardından desteklenen alım yöntemlerini kullanarak bu verileri Azure İzleyici'ye aktarmanız gerekir.
OpenTelemetry günlüğünü ayarlama
OpenTelemetry'yi kullanmak için azure_core_opentelemetry paketine ihtiyacınız vardır.
azure_core paketi tek başına OpenTelemetry desteği içermez.
Azure CLI'da oturum açın:
az loginAzure CLI kullanarak Azure İzleyici kaynakları oluşturma:
# 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"Rust projenizi yapılandırın. Gerekli bağımlılıkları
Cargo.tomlöğesine ekleyin.[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"] }Uyarı
OpenTelemetry Toplayıcısı'na telemetri verilerini aktarmak için
opentelemetry-otlppaketi dahildir ve bu, verileri Azure İzleyici'ye iletebilir. Rust uygulamalarından doğrudan Azure İzleyici dışarı aktarma desteklenmez.OpenTelemetry yapılandırmasıyla ana uygulamanızı oluşturun. Ayrıntılar için azure_core_opentelemetry belgelerine bakın.
Gerekli ortam değişkenlerini ayarlayın ve uygulamanızı çalıştırın:
# 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
Uygulamanızda OpenTelemetry'yi yapılandırdıktan ve çalıştırdıktan sonra özel izleme ekleyebilir ve telemetri verilerini izleyebilirsiniz.
Telemetriyi Azure İzleyici'ye aktarma
Rust'ın doğrudan bir Azure İzleme OpenTelemetry ihracatçısı olmadığından, telemetri verilerinizi Azure İzleme'ye almak için dolaylı bir yaklaşım uygulamanız gerekir. Önerilen yöntemler şunlardır:
Seçenek 1: OpenTelemetry Collector (Önerilen)
OpenTelemetry Collector, Rust uygulamanızdan telemetri alabilen ve Azure İzleyici'ye iletebilen bir orta katman görevi görür:
- Ortamınızda OpenTelemetry Toplayıcısı'nı dağıtın (yan konteyner, ajan veya ağ geçidi olarak)
- Rust uygulamanızı OTLP kullanarak Toplayıcıya aktaracak şekilde yapılandırma (OpenTelemetry Protokolü)
- Toplayıcıyı Azure İzleyici veri ihracatçısı ile Application Insights'a veri iletmek üzere yapılandırın
2. Seçenek: Azure Depolama + Veri Alımı API'si
Veri işleme üzerinde daha fazla denetime ihtiyacınız olan senaryolar için:
- Telemetriyi Azure Depolama'ya (Blob Depolama veya Veri Gölü) dışarı aktarma
- Azure İşlevleri, Logic Apps veya özel uygulamaları kullanarak verileri işleme
- İşlenen verileri Günlük Alımı API'si kullanarak Azure İzleyici'a aktar
Seçenek 3: Event Hubs Akış
Gerçek zamanlı telemetri işleme için:
- Rust uygulamanızdan Azure Event Hubs'a telemetri akışı
- Azure Stream Analytics, Azure İşlevleri veya özel tüketicileri kullanarak olayları işleme
- İşlenen telemetriyi Azure İzleyici'ye veya Application Insights'a iletme
Telemetri verilerini özelleştirme
OpenTelemetry, telemetri verilerini uygulamanızın gereksinimlerine uyacak şekilde özelleştirmeye yönelik esnek bir çerçeve sağlar. Telemetrinizi geliştirmek için şu stratejileri kullanın:
Uygulama kodunuzu izleme
Uygulama kodunuza özel ölçümleme eklemek, iş mantığınızı Azure SDK işlemleriyle ilişkilendirmenize yardımcı olur. Bu bağıntı, tam işlem akışının anlaşılmasını kolaylaştırır.
| Technique | Amaç | Implementation |
|---|---|---|
| Azure işlemleri için özel yayılma alanları | Uygulama mantığının Azure işlemleriyle ilişkisini gösteren net bir hiyerarşi oluşturma | OpenTelemetry span oluşturma yöntemlerini kullanarak Azure SDK çağrılarını sarma |
| Uygulama mantığını SDK çağrılarıyla ilişkilendirme | İş operasyonlarını temel alınan Azure SDK çağrılarıyla bağlama | İş işlemlerini tetiklenen Azure hizmet çağrılarıyla bağlamak için span bağlamı kullanma |
| Tanılama izleri oluşturma | İş akışları arasında telemetri için önemli bağlamı yakalama | Span'lara yapılandırılmış alanlar (kullanıcı kimlikleri, istek kimlikleri, iş nesnesi tanımlayıcıları) ekleme |
Performans analizi
OpenTelemetry, Azure SDK performans desenleri hakkında ayrıntılı içgörüler sağlar. Bu içgörüler performans sorunlarını belirlemenize ve çözmenize yardımcı olur.
| Çözümleme Türü | Ortaya Çıkardıkları | Nasıl Kullanılır? |
|---|---|---|
| SDK işlem süresi | Farklı Azure işlemleri ne kadar sürer? | Yavaş işlemleri tanımlamak için OpenTelemetry'nin otomatik olarak yakaladığı yayılma zamanlamasını kullanın |
| Hizmet çağrısı darboğazları | Uygulamanızın Azure yanıtlarını beklerken zaman harcadığı yer | Performans sorunlarını bulmak için Azure hizmetleri ve işlemleri arasındaki zamanlamayı karşılaştırma |
| Eşzamanlı işlem desenleri | İşlemler arasındaki çakışma ve bağımlılıklar | Birden çok Azure çağrısı yaparken paralelleştirme fırsatlarını anlamak için telemetri verilerini analiz etme |
Hata tanılama
OpenTelemetry, basit hata iletilerinin ötesine geçen zengin hata bağlamı yakalar. Bu bağlam yalnızca neyin başarısız olduğunu değil, neden ve hangi koşullar altında başarısız olduğunu anlamanıza yardımcı olur.
SDK hata yayma işlemini anlama: Uygulama kodunuz ve Azure SDK katmanlarınızda hataların nasıl patladığını takip edin. Bu izleme, hata yolunun tamamını anlamanıza ve kök nedeni belirlemenize yardımcı olur.
Günlük geçici ve kalıcı hatalar: Geçici hatalar (yeniden denemede başarılı olabilecek ağ zaman aşımları gibi) ve kalıcı hatalar (yapılandırma değişiklikleri gerektiren kimlik doğrulama hataları gibi) arasında ayrım yapın. Bu ayrım, dayanıklı uygulamalar oluşturmanıza yardımcı olur.
Günlükleri, ölçümleri ve uyarıları anlama
Uygulamalarınız ve hizmetleriniz, sistem durumlarını, performanslarını ve kullanımlarını izlemenize yardımcı olmak için telemetri verileri oluşturur. Azure bu telemetri verilerini günlüklere, ölçümlere ve uyarılara kategorilere ayırır.
Azure dört tür telemetri sunar:
| Telemetri türü | Size ne verir? | Her hizmet için nerede bulunur? |
|---|---|---|
| Metrics | Sayısal, zaman serisi verileri (CPU, bellek vb.) | Portalda veya CLI'da az monitor metrics |
| Alerts | Eşikler aşıldığında proaktif bildirimler | Portalda veya CLI'da az monitor metrics alert |
| Kayıtlar | Metin tabanlı olaylar ve tanılama (web, uygulama) | App Service Günlükleri, İşlevler İzleyicisi, Kapsayıcı Uygulamalar Tanılama |
| Özel günlükler | App Insights aracılığıyla kendi uygulama telemetriniz | Application Insights kaynağınızın Günlükler (İzleme) tablosu |
Sorunuz için doğru telemetriyi seçin:
| Scenario | Günlükleri kullanma | Ölçümleri kullanma | Uyarıları kullanma |
|---|---|---|---|
| "Web uygulamam başladı ve yanıt verdi mi?" | App Service web sunucusu günlükleri (Günlükler) | N/A | N/A |
| "İşlevim zaman aşımına mı uğradı yoksa başarısız mı?" | İşlev çağırma günlükleri (İzleyici) | İşlev yürütme süresi ölçümü | "Uyarı: 'İşlev Hataları >0'" |
| "Hizmetim ne kadar meşgul ve ölçeklendirilebilir mi?" | N/A | Ölçümlerde hizmet aktarım hızı/CPU | CPU% > 70% olduğunda otomatik ölçeklendirme uyarısı |
| Kodum hangi hataları atıyor? | Application Insights'ta Özel İzleme günlükleri | N/A | "ServerExceptions >0" uyarı |
| "İşlem veya kota sınırlarımı aştım mı?" | N/A | Kotaya İlişkin Ölçümler (İşlemler, Kısıtlama) | "ThrottlingCount >0" uyarısı |
Azure İzleyici'de telemetri verilerini görüntüleme
Rust uygulamanızda OpenTelemetry'yi ayarladıktan ve bir ara dışarı aktarma mekanizması yapılandırdıktan sonra Telemetri verilerini Application Insights aracılığıyla Azure İzleyici'de görüntüleyebilirsiniz. Rust doğrudan Azure İzleyici dışarı aktarma özelliklerine sahip olmadığından şu yaklaşımlardan birini uygulamanız gerekir:
- OpenTelemetry Collector: OpenTelemetry Collector'ı Rust uygulamanızdan veri alacak ve Azure İzleyici'ye iletecek şekilde yapılandırın
- Azure Depolama tümleştirmesi: Telemetri verilerini Azure Depolama'ya aktarın ve verileri içeri aktarmak için Azure İzleyici veri alımı API'lerini kullanın
- Event Hubs akışı: Telemetriyi Azure Event Hubs üzerinden akıtın ve Azure İzleyici'e alımı için işleyin.
Telemetri verileriniz şu yöntemlerden biriyle Azure İzleyici'ye ulaştığında, bunları analiz edebilirsiniz:
Azure portalında Application Insights'a gidin:
az monitor app-insights component show \ --app $APP_INSIGHTS_NAME \ --resource-group $RESOURCE_GROUP \ --query "{name:name,appId:appId,instrumentationKey:instrumentationKey}"İzlemeleri ve günlükleri görüntüle
- Application Insights>İşlem aramasına gidin
- "
get_keyvault_secretsgibi işlem adlarına sahip izler arayın" - Günlükler bölümünü denetleyin ve KQL sorgularını çalıştırın:
traces | where timestamp > ago(1h) | where message contains "Azure operations" or message contains "secrets" | order by timestamp descDağıtılmış izlemeleri görüntüleme:
- Hizmet bağımlılıklarını görmek için Uygulama Haritası'na gidin
- İşlem zamanlamasını görmek için Performans'ı seçin
- Tam istek akışlarını görmek için uçtan uca işlem ayrıntılarını kullanma
Rust uygulamanız için özel KQL sorguları:
// 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
Gerçek zamanlı olarak izle
Verileri geldikçe görmek için canlı izlemeyi ayarlayın:
# 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)
Maliyet optimizasyonu
Azure İzleyici'nin topladığı veri miktarını azaltmaya yönelik yapılandırma seçeneklerine ve fırsatlarına yönelik en iyi yöntemleri anlayarak Azure İzleyici maliyetlerinizi önemli ölçüde azaltabilirsiniz.
Rust uygulamaları için temel stratejiler:
- Uygun günlük düzeylerini kullanın: Hacmi azaltmak için OpenTelemetry günlük düzeylerini üretim için uygun şekilde yapılandırın
- Örneklemeyi uygulama: Yüksek hacimli uygulamalar için OpenTelemetry örneklemesini yapılandırma
- Hassas verileri filtreleyin: Maliyetleri artıran sırları, belirteçleri veya büyük yükleri günlüğe kaydetmekten kaçının.
- Veri alımını izleme: Application Insights veri kullanımınızı ve maliyetlerinizi düzenli olarak gözden geçirin