OpenTelemetria az Azure SDK Rust csomagokban

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.

  1. Jelentkezzen be az Azure CLI-be:

    az login
    
  2. Azure 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"
    
  3. 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-otlp lá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.

  4. 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.

  5. Á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:

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:

  1. Az OpenTelemetry Collector üzembe helyezése az Ön környezetében (oldalkocsiként, ügynökként vagy átjáróként)
  2. A Rust-alkalmazás konfigurálása a gyűjtőbe való exportáláshoz az OTLP (OpenTelemetry Protocol) használatával
  3. 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:

  1. Telemetriai adatok exportálása az Azure Storage-ba (Blob Storage vagy Data Lake)
  2. Az adatok feldolgozása az Azure Functions, a Logic Apps vagy az egyéni alkalmazások használatával
  3. 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:

  1. Telemetriai adatok streamelése az Azure Event Hubsba a Rust-alkalmazásból
  2. Események feldolgozása az Azure Stream Analytics, az Azure Functions vagy az egyéni felhasználók használatával
  3. 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:

  1. 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}"
    
  2. 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 desc
    
  3. Elosztott 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
  4. 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

Erőforrások és következő lépések