Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ha az Azure SDK for Rust-ládák használatával dolgozik, az SDK-műveletekbe való betekintésre van szüksége a hibák hibakereséséhez, a teljesítmény monitorozásához és annak megértéséhez, hogy az alkalmazás hogyan kommunikál az Azure-szolgáltatásokkal. Ez a cikk bemutatja, hogyan valósíthat meg hatékony OpenTelemetry-alapú naplózási és telemetriai stratégiákat, amelyek betekintést nyújtanak a Rust-alkalmazások azure-beli belső működésébe.
Telemetriai adatok Azure-fejlesztőknek
Az Azure SDK for Rust-rekeszek átfogó megfigyelhetőséget biztosítanak az OpenTelemetry-integráción keresztül, amelyet figyelési és elosztott nyomkövetési forgatókönyvekhez ajánlunk. Ez az útmutató a hitelesítési folyamatok hibaelhárítását, az API-kérések ciklusainak monitorozását vagy a teljesítmény szűk keresztmetszeteinek elemzését ismerteti, azOkat az OpenTelemetry-eszközöket és technikákat ismerteti, amelyekre szüksége van ahhoz, hogy betekintést nyerjen az Azure SDK-műveletekbe.
Az Azure SDK for Rust-ládák az OpenTelemetryt használják a megfigyelhetőség standard megközelítéseként, amely a következő lehetőségeket biztosítja:
- Iparági szintű telemetria: Monitorozási platformokkal kompatibilis OpenTelemetria-formátumok használata
- Elosztott nyomkövetés: Kérelmek nyomon követése több szolgáltatás és Azure-erőforrás között
- Fejlett exportőrök: Adatok küldése a Jaeger, a Prometheus, a Grafana és más megfigyelhető platformokra
- A szolgáltatások közötti korreláció: Nyomkövetési környezet automatikus propagálása a mikroszolgáltatások között
- Gyártási monitorozás: Nagy léptékű gyártási környezetekhez készült mintavételezéssel és teljesítményoptimalizálással
Fontos
Jelenleg Microsoft nem biztosít közvetlen Azure Monitor OpenTelemetry-exportőrt Rust-alkalmazásokhoz. Az Azure Monitor OpenTelemetry Distro csak a .NET, a Java, a Node.jsés a Python használatát támogatja. Rust-alkalmazások esetében az OpenTelemetry-adatokat egy köztes rendszerbe (például az Azure Storage-ba, az Event Hubsba vagy az OpenTelemetry Collectorbe) kell exportálnia, majd a támogatott betöltési módszerekkel importálnia kell ezeket az adatokat az Azure Monitorba.
OpenTelemetria-naplózás beállítása
Az OpenTelemetria használatához szüksége van a azure_core_opentelemetry láda használatára. A azure_core csomag önmagában nem tartalmazza az OpenTelemetria támogatását.
Jelentkezzen be az Azure CLI-be:
az loginAzure Monitor-erőforrások létrehozása az Azure CLI használatával:
# 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"Konfigurálja a Rust-projektet. Adja hozzá a szükséges függőségeket a következőhöz
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"] }Megjegyzés:
A
opentelemetry-otlpláda tartalmazza a telemetriai adatok OpenTelemetry Collectorbe való exportálását, amely ezután továbbíthatja az adatokat az Azure Monitornak. A Rust-alkalmazásokból származó közvetlen Azure Monitor exportálás nem támogatott.Hozza létre a fő alkalmazást az OpenTelemetry konfigurációjával. Részletekért tekintse meg a azure_core_opentelemetry dokumentációját.
Állítsa be a szükséges környezeti változókat, és futtassa az alkalmazást:
# 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
Miután konfigurálta az OpenTelemetryt az alkalmazásban, és futtatta azt, hozzáadhat egyéni rendszerállapotokat, és figyelheti a telemetriai adatokat.
Telemetriai adatok exportálása az Azure Monitorba
Mivel a Rust nem rendelkezik közvetlen Azure Monitor OpenTelemetry-exportőrrel, közvetett megközelítést kell alkalmaznia a telemetriai adatok Azure Monitorba való beolvasásához. A javasolt módszerek a következők:
1. lehetőség: OpenTelemetry Collector (ajánlott)
Az OpenTelemetry Collector egy középső rétegként működik, amely telemetriát fogad a Rust-alkalmazásból, és továbbítja azt az Azure Monitornak:
- Az OpenTelemetry Collector üzembe helyezése az Ön környezetében (oldalkocsiként, ügynökként vagy átjáróként)
- A Rust-alkalmazás konfigurálása a gyűjtőbe való exportáláshoz az OTLP (OpenTelemetry Protocol) használatával
- A gyűjtő konfigurálása az Azure Monitor-exportőrrel az adatok Application Insightsba való továbbításához
2. lehetőség: Azure Storage + Data Ingestion API
Olyan forgatókönyvek esetén, ahol nagyobb mértékű adatkezelésre van szükség:
- Telemetriai adatok exportálása az Azure Storage-ba (Blob Storage vagy Data Lake)
- Az adatok feldolgozása az Azure Functions, a Logic Apps vagy az egyéni alkalmazások használatával
- Feldolgozott adatok betöltése az Azure Monitorba a Logs Ingestion API használatával
3. lehetőség: Event Hubs Streaming
Valós idejű telemetria-feldolgozáshoz:
- Telemetriai adatok streamelése az Azure Event Hubsba a Rust-alkalmazásból
- Események feldolgozása az Azure Stream Analytics, az Azure Functions vagy az egyéni felhasználók használatával
- Feldolgozott telemetria továbbítása az Azure Monitorba vagy az Application Insightsba
Telemetriaadatok testreszabása
Az OpenTelemetry rugalmas keretrendszert biztosít a telemetriai adatok testreszabásához az alkalmazás igényeinek megfelelően. Az alábbi stratégiák segítségével javíthatja a telemetriát:
Az alkalmazás kódját alakítsa ki
Ha egyéni instrumenálást ad hozzá az alkalmazáskódhoz, az segít korrelálni üzleti logikáját az Azure SDK-műveletekkel. Ez a korreláció megkönnyíti a műveletek teljes folyamatának megértését.
| Technique | Cél | Implementation |
|---|---|---|
| Egyéni tartományok az Azure-műveletekhez | Egyértelmű hierarchia létrehozása, amely bemutatja, hogyan kapcsolódik az alkalmazáslogika az Azure-műveletekhez | Azure SDK-hívások burkolása OpenTelemetry span létrehozási módszerekkel |
| Alkalmazáslogika korrelálása SDK-hívásokkal | Üzleti műveletek csatlakoztatása mögöttes Azure SDK-hívásokhoz | Üzleti műveletek összekapcsolása az aktivált Azure-szolgáltatáshívásokkal a span környezet használatával |
| Diagnosztikai zsemlék létrehozása | A munkafolyamatok telemetriájának fontos kontextusának rögzítése | Strukturált mezők (felhasználói azonosítók, kérelemazonosítók, üzleti objektumazonosítók) hozzáadása a tartományokhoz |
Teljesítményelemzés
Az OpenTelemetry részletes betekintést nyújt az Azure SDK teljesítménymintáiba. Ezek az elemzések segítenek a teljesítmény szűk keresztmetszeteinek azonosításában és megoldásában.
| Elemzés típusa | Mit árul el? | Használat |
|---|---|---|
| SDK-művelet időtartama | Mennyi ideig tart a különböző Azure-műveletek? | Az OpenTelemetry által automatikusan rögzített időtartam használata a lassú műveletek azonosításához |
| Szolgáltatáshívási szűk keresztmetszetek | Ahol az alkalmazás időt tölt az Azure-válaszokra való várakozásra | Teljesítményproblémák keresése az Azure-szolgáltatások és -műveletek időzítésének összehasonlítása |
| Egyidejű műveleti minták | Átfedés és függőségek a műveletek között | Telemetriai adatok elemzése a párhuzamosítási lehetőségek megértéséhez több Azure-hívás esetén |
Hibadiagnosztika
Az OpenTelemetry olyan részletes hibakörnyezetet rögzít, amely túlmutat az egyszerű hibaüzeneteken. Ez a kontextus nem csak a sikertelenség, hanem a miért és a körülmények megértésében is segít.
Az SDK-hibák propagálásának ismertetése: Nyomon követheti, hogyan buborékosodnak a hibák az alkalmazáskódon és az Azure SDK-rétegeken. Ez a nyomkövetés segít megérteni a teljes hiba elérési útját, és azonosítani a kiváltó okot.
Napló átmeneti és állandó hibák: Különbséget kell tenni az ideiglenes hibák (például az újrapróbálkozások során esetleg sikeres hálózati időtúllépések) és az állandó hibák (például a konfigurációmódosítást igénylő hitelesítési hibák) között. Ezzel a különbségtételsel rugalmas alkalmazásokat hozhat létre.
Naplók, metrikák és riasztások ismertetése
Az alkalmazások és szolgáltatások telemetriai adatokat hoznak létre az állapotuk, teljesítményük és használatuk figyeléséhez. Az Azure naplókba, metrikákba és riasztásokba kategorizálja ezt a telemetriát.
Az Azure négyféle telemetriát kínál:
| Telemetriai típus | Milyen előnyöket nyújt? | Hol található az egyes szolgáltatásokhoz? |
|---|---|---|
| Mértékek | Numerikus, idősoros adatok (CPU, memória stb.) |
Metrikák a portálon vagy az monitor metrics a parancssori felületen |
| Riasztások | Proaktív értesítések a küszöbértékek elérésekor |
Riasztások a portálon vagy az monitor metrics alert a parancssori felületen |
| Naplók | Szöveges események és diagnosztikák (web, alkalmazás) | App Service-naplók, Functions Felügyelet, Container Apps Diagnosztika |
| Egyéni naplók | Saját alkalmazástelemetria az App Insightson keresztül | Az Application Insights-erőforrás Naplók (Trace) táblája |
Válassza ki a megfelelő telemetriát a kérdéséhez:
| Scenario | Naplók használata | Metrikák alkalmazása | Riasztások használata |
|---|---|---|---|
| "A webalkalmazásom elindult és válaszolt?" | App Service webkiszolgálói naplók (naplók) | N/A | N/A |
| "A függvényem időtúllépést vagy hibát jelez?" | Függvényhívási naplók (Monitor) | Függvényvégrehajtás időtartamának metrikája | Riasztás a(z) ">0 függvényhiba" miatt |
| "Mennyire van kihasználva a szolgáltatásom, és skálázható-e?" | N/A | Szolgáltatás átviteli sebessége/CPU a metrikákban | Automatikus skálázás riasztás a CPU-kihasználtság 70% alatt > |
| Milyen kivételeket dob a kódom? | Egyéni nyomkövetési naplók az Application Insightsban | N/A | "ServerExceptions >0" riasztás |
| "Túlléptem a tranzakciós vagy kvótakorlátokat?" | N/A | Kvótával kapcsolatos metrikák (tranzakciók, szabályozás) | Riasztás a "ThrottlingCount >0" beállításról |
A telemetriai adatok megtekintése az Azure Monitorban
Miután beállította az OpenTelemetryt a Rust-alkalmazásban, és konfigurálta a köztes exportálási mechanizmust, az Application Insights segítségével megtekintheti az Azure Monitor telemetriai adatait. Mivel a Rust nem rendelkezik közvetlen Azure Monitor-exportálási képességekkel, az alábbi módszerek egyikét kell implementálnia:
- OpenTelemetry Collector: Konfigurálja az OpenTelemetry Collectort , hogy adatokat fogadjon a Rust-alkalmazásból, és továbbítsa azOkat az Azure Monitornak
- Azure Storage-integráció: Telemetriai adatok exportálása az Azure Storage-ba, és az Adatok importálása az Azure Monitor adatbetöltési API-kkal
- Event Hubs-streamelés: Telemetriai adatok streamelése az Azure Event Hubson keresztül, és feldolgozás az Azure Monitor-betöltéshez
Miután a telemetriai adatok az alábbi módszerek egyikével érik el az Azure Monitort, elemezheti azokat:
Lépjen az Application Insightsra az Azure Portalon:
az monitor app-insights component show \ --app $APP_INSIGHTS_NAME \ --resource-group $RESOURCE_GROUP \ --query "{name:name,appId:appId,instrumentationKey:instrumentationKey}"Nyomkövetések és naplók megtekintése:
- Ugrás az Application Insights>tranzakciókeresésére
- Keresd a nyomokat olyan műveletnevekkel, mint a
get_keyvault_secrets - Ellenőrizze a Naplók szakaszt , és futtassa a KQL-lekérdezéseket:
traces | where timestamp > ago(1h) | where message contains "Azure operations" or message contains "secrets" | order by timestamp descElosztott nyomkövetések megtekintése:
- Nyissa meg az Alkalmazástérképet a szolgáltatásfüggőségek megtekintéséhez
- A teljesítmény kiválasztása a művelet időzítésének megtekintéséhez
- Teljes körű tranzakcióadatok használata a teljes kérelemfolyamatok megtekintéséhez
Egyéni KQL-lekérdezések a Rust-alkalmazáshoz:
// 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
Monitorozás valós időben
Állítsa be az élő monitorozást az adatok érkezéskor való megtekintéséhez:
# 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)
Költségoptimalizálás
Az Azure Monitor költségei jelentősen csökkenthetők a konfigurációs lehetőségek ajánlott eljárásainak és az Azure Monitor által gyűjtött adatok mennyiségének csökkentésére vonatkozó lehetőségeknek a megismerésével.
A Rust-alkalmazások főbb stratégiái:
- A megfelelő naplószintek használata: Az OpenTelemetria naplószintjeinek megfelelő konfigurálása az éles környezethez a mennyiség csökkentése érdekében
- Mintavételezés megvalósítása: OpenTelemetria-mintavételezés konfigurálása nagy mennyiségű alkalmazásokhoz
- Bizalmas adatok szűrése: Kerülje a titkok, jogkivonatok vagy nagy méretű adatcsomagok naplózását, amelyek költségeket növelnek
- Adatbetöltés monitorozása: Az Application Insights-adatok használatának és költségeinek rendszeres áttekintése