Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Když pracujete se sadou Azure SDK for Rust, potřebujete přehled o operacích sady SDK, abyste mohli ladit problémy, monitorovat výkon a pochopit, jak vaše aplikace komunikuje se službami Azure. V tomto článku se dozvíte, jak implementovat efektivní strategie protokolování a telemetrie založené na OpenTelemetry, které poskytují přehled o vnitřních fungování aplikací Rust v Azure.
Telemetrie pro vývojáře Azure
Sada Azure SDK for Rust poskytuje komplexní pozorovatelnost prostřednictvím integrace OpenTelemetry, kterou doporučujeme pro scénáře monitorování a distribuovaného trasování. Ať už řešíte problémy s toky ověřování, monitorováním cyklů požadavků rozhraní API nebo analýzou kritických bodů výkonu, tento průvodce se zabývá nástroji a technikami OpenTelemetry, které potřebujete k získání přehledu o operacích se sadou Azure SDK.
Azure SDK pro Rust balíčky používá OpenTelemetry jako standardní přístup ke sledovatelnosti a nabízí:
- Standardní telemetrie: Použití formátů OpenTelemetry kompatibilních s monitorovacími platformami
- Distribuované trasování: Sledování požadavků napříč několika službami a prostředky Azure
- Pokročilí vývozci: Odesílání dat do Jaegeru, Prometheus, Grafana a dalších platforem pozorovatelnosti
- Korelace mezi službami: Automatické šíření kontextu trasování mezi mikroslužby
- Monitorování v produkčním prostředí: Vytvořeno pro vysoce škálovaná produkční prostředí s využitím vzorkování a optimalizace výkonu
Důležité
V současné době Microsoft neposkytuje přímý Azure Monitor exportér OpenTelemetry pro aplikace Rust. Distribuce OpenTelemetry služby Azure Monitor podporuje pouze .NET, Java, Node.jsa Python. V případě aplikací Rust je potřeba exportovat data OpenTelemetry do zprostředkujícího systému (jako je Azure Storage, Event Hubs nebo Kolekce OpenTelemetry) a pak tato data importovat do Služby Azure Monitor pomocí podporovaných metod příjmu dat.
Nastavení protokolování OpenTelemetry
Chcete-li použít OpenTelemetry, potřebujete azure_core_opentelemetry bednu. Samotný azure_core balíček nezahrnuje podporu OpenTelemetry.
Přihlaste se k Azure CLI:
az loginVytváření prostředků Azure Monitoru pomocí 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"Nakonfigurujte projekt Rust. Přidejte požadované závislosti do :
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"] }Poznámka:
Tato
opentelemetry-otlpbedna je součástí exportu telemetrických dat do kolektoru OpenTelemetry, který pak může předávat data do služby Azure Monitor. Přímý export do Azure Monitoru z aplikací v jazyce Rust není podporován.Vytvořte hlavní aplikaci s konfigurací OpenTelemetry. Podrobnosti najdete v azure_core_opentelemetry dokumentaci.
Nastavte požadované proměnné prostředí a spusťte aplikaci:
# 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
Jakmile ve své aplikaci nakonfigurujete OpenTelemetry a spustíte ji, můžete přidat vlastní instrumentaci a monitorovat telemetrická data.
Export telemetrie do služby Azure Monitor
Vzhledem k tomu, že Rust nemá přímý exportér OpenTelemetry pro Azure Monitor, musíte implementovat nepřímý přístup k získání telemetrických dat do služby Azure Monitor. Tady jsou doporučené metody:
Možnost 1: Kolektor OpenTelemetry (doporučeno)
Kolekce OpenTelemetry funguje jako střední vrstva, která může přijímat telemetrická data z vaší aplikace Rust a předávat ji do služby Azure Monitor:
- Nasaďte OpenTelemetry Collector ve vašem prostředí (jako sidecar, agent nebo brána)
- Konfigurace aplikace Rust pro export do kolektoru pomocí protokolu OTLP (OpenTelemetry Protocol)
- Konfigurujte kolektor s exportérem Azure Monitoru pro odesílání dat do Application Insights
Možnost 2: Azure Storage + rozhraní API pro příjem dat
Ve scénářích, ve kterých potřebujete větší kontrolu nad zpracováním dat:
- Export telemetrie do služby Azure Storage (Blob Storage nebo Datové Jezero)
- Zpracování dat pomocí Azure Functions, Logic Apps nebo vlastních aplikací
- Příjem zpracovaných dat do služby Azure Monitor pomocí rozhraní API pro příjem protokolů
Možnost 3: Streamování služby Event Hubs
Pro zpracování telemetrie v reálném čase:
- Streamování telemetrie do služby Azure Event Hubs z aplikace Rust
- Zpracování událostí pomocí Azure Stream Analytics, Azure Functions nebo vlastních příjemců
- Předávání zpracovaných telemetrických dat do služby Azure Monitor nebo Application Insights
Přizpůsobení telemetrických dat
OpenTelemetry poskytuje flexibilní architekturu pro přizpůsobení telemetrických dat tak, aby vyhovovala potřebám vaší aplikace. Pomocí těchto strategií můžete vylepšit telemetrii:
Instrumentujte kód aplikace
Přidání vlastní instrumentace do kódu aplikace vám pomůže korelovat obchodní logiku s operacemi sady Azure SDK. Tato korelace usnadňuje pochopení kompletního toku operací.
| Technique | Účel | Implementation |
|---|---|---|
| Vlastní rozsahy pro operace Azure | Vytvoření jasné hierarchie, která ukazuje, jak logika aplikace souvisí s operacemi Azure | Obalení volání Azure SDK pomocí metod vytváření spanů OpenTelemetry |
| Korelace logiky aplikace s voláními sady SDK | Propojení obchodních operací s využitím základních volání sady Azure SDK | Použijte kontext rozsahu ke spojení obchodních operací s aktivovanými voláními služeb Azure. |
| Vytváření diagnostických navigačních prvků | Zachycení důležitého kontextu pro telemetrii napříč pracovními postupy | Přidání strukturovaných polí (ID uživatelů, ID žádostí, identifikátory obchodních objektů) do rozsahů |
Analýza výkonu
OpenTelemetry poskytuje podrobné přehledy o vzorech výkonu sady Azure SDK. Tyto přehledy vám pomůžou identifikovat a vyřešit kritické body výkonu.
| Typ analýzy | Co to odhalí | Jak používat |
|---|---|---|
| Doba trvání operace sady SDK | Jak dlouho trvá různé operace Azure | K identifikaci pomalých operací použijte časování rozsahu, které OpenTelemetry zachytává automaticky. |
| Úzká místa ve volání služby | Kde vaše aplikace tráví čas čekáním na odpovědi Azure | Porovnání časování napříč službami a operacemi Azure za účelem zjištění problémů s výkonem |
| Vzory souběžných operací | Překrývání a závislosti mezi operacemi | Analýza telemetrických dat za účelem pochopení příležitostí paralelizace při provádění více volání Azure |
Diagnostika chyb
OpenTelemetry zachycuje bohatý kontext chyb, který přesahuje jednoduché chybové zprávy. Tento kontext vám pomůže pochopit nejen to, co selhalo, ale proč a za jakých okolností.
Vysvětlení šíření chyb sady SDK: Trasujte, jak chyby procházejí kódem vaší aplikace a vrstvami sady Azure SDK. Toto trasování vám pomůže pochopit úplnou cestu k chybě a identifikovat původní příčinu.
Protokol přechodných a trvalých selhání: Rozlišovat mezi dočasnými selháními (například vypršením časového limitu sítě, které můžou při opakování proběhnout úspěšně) a trvalými selháními (například chybami ověřování, které vyžadují změny konfigurace). Tento rozdíl vám pomůže vytvářet odolné aplikace.
Porozumění protokolům, metrikám a upozorněním
Vaše aplikace a služby generují telemetrická data, která vám pomůžou monitorovat jejich stav, výkon a využití. Azure tuto telemetrii kategorizuje do protokolů, metrik a upozornění.
Azure nabízí čtyři druhy telemetrie:
| Typ telemetrie | Co vám to dává | Kde ji najít pro každou službu |
|---|---|---|
| Metrics | Číselná data, data časových řad (procesor, paměť atd.) |
Metriky na portálu nebo az monitor metrics v rozhraní příkazového řádku |
| Alerts | Proaktivní oznámení při dosažení prahových hodnot |
Upozornění na portálu nebo az monitor metrics alert rozhraní příkazového řádku |
| Záznamy | Textové události a diagnostika (web, aplikace) | Protokoly služby App Service, monitorování funkcí, diagnostika kontejnerových aplikací |
| Vlastní protokoly | Vlastní telemetrie aplikací prostřednictvím App Insights | Tabulka protokolů (trasování) prostředku Application Insights |
Vyberte správnou telemetrii pro vaši otázku:
| Scenario | Použití protokolů | Použití metrik | Používání upozornění |
|---|---|---|---|
| "Spustila se moje webová aplikace a reagovala?" | Protokoly webového serveru služby App Service (protokoly) | N/A | N/A |
| Může moje funkce vypršet časově nebo selhat? | Protokoly volání funkcí (Monitor) | Metrika doby trvání provádění funkce | Výstraha na "Chyby funkce >0" |
| "Jak zaneprázdněná je moje služba a dá se škálovat?" | N/A | Propustnost služby / procesor v metrikách | Upozornění automatického nastavení škálování při zatížení CPU > 70% |
| "Jaké výjimky vyvolává můj kód?" | Vlastní záznamy trasování v Application Insights | N/A | Upozornění na ServerExceptions >0 |
| "Překročil(a) jsem limity transakcí nebo kvót?" | N/A | Metriky související s kvótou (transakce, omezování) | Upozornění na "ThrottlingCount >0" |
Zobrazení telemetrických dat ve službě Azure Monitor
Po nastavení OpenTelemetry v aplikaci Rust a konfiguraci přechodného mechanismu exportu můžete zobrazit telemetrická data ve službě Azure Monitor prostřednictvím Application Insights. Vzhledem k tomu, že Rust nemá přímé možnosti exportu služby Azure Monitor, budete muset implementovat jeden z těchto přístupů:
- OpenTelemetry Collector: Nakonfigurujte kolekci OpenTelemetry tak, aby přijímala data z vaší aplikace Rust a předávala je do služby Azure Monitor.
- Integrace služby Azure Storage: Export telemetrie do služby Azure Storage a použití rozhraní API pro příjem dat služby Azure Monitor k importu dat
- Streamování služby Event Hubs: Streamování telemetrie prostřednictvím služby Azure Event Hubs a jejich zpracování pro příjem dat ve službě Azure Monitor
Jakmile vaše telemetrická data dosáhnou služby Azure Monitor prostřednictvím jedné z těchto metod, můžete je analyzovat:
Na webu Azure Portal přejděte na Application Insights:
az monitor app-insights component show \ --app $APP_INSIGHTS_NAME \ --resource-group $RESOURCE_GROUP \ --query "{name:name,appId:appId,instrumentationKey:instrumentationKey}"Zobrazení trasování a záznamů:
- Přejít navyhledávání transakcí>
- Hledejte stopy s názvy operací, například
get_keyvault_secrets - Zkontrolujte část Protokoly a spusťte dotazy KQL:
traces | where timestamp > ago(1h) | where message contains "Azure operations" or message contains "secrets" | order by timestamp descZobrazit distribuované trasování:
- Přejděte na mapu aplikace a zobrazte závislosti služeb.
- Vyberte Výkon pro zobrazení časování operací.
- Zobrazení úplných toků požadavků pomocí podrobných podrobností o transakcích
Vlastní dotazy KQL pro vaši aplikaci Rust:
// 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
Monitorování v reálném čase
Nastavte živé monitorování, abyste viděli data při jejich doručení:
# 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)
Optimalizace nákladů
Náklady na Azure Monitor můžete výrazně snížit pochopením osvědčených postupů pro možnosti konfigurace a příležitostí ke snížení množství dat, která Azure Monitor shromažďuje.
Klíčové strategie pro aplikace Rust:
- Použijte odpovídající úrovně protokolů: Odpovídajícím způsobem nakonfigurujte úrovně protokolů OpenTelemetry pro produkční prostředí, aby se snížil objem.
- Implementace vzorkování: Konfigurace vzorkování OpenTelemetry pro aplikace s velkým objemem
- Filtrování citlivých dat: Vyhněte se protokolování tajných kódů, tokenů nebo velkých datových částí, které zvyšují náklady.
- Monitorování zpracování dat: Pravidelně kontrolujte využití dat a náklady spojené s Application Insights