Delen via


OpenTelemetry in Azure SDK voor Rust crates

Wanneer u met Azure SDK voor Rust kratten werkt, hebt u inzicht in SDK-bewerkingen nodig om problemen op te sporen, prestaties te bewaken en te begrijpen hoe uw toepassing communiceert met Azure-services. In dit artikel leest u hoe u effectieve op OpenTelemetry gebaseerde logboekregistratie- en telemetriestrategieën implementeert die inzicht bieden in de interne werking van Rust-toepassingen in Azure.

Telemetrie voor Azure-ontwikkelaars

De Azure SDK voor Rust crates bieden uitgebreide waarneembaarheid door integratie met OpenTelemetry, wat we aanbevelen voor scenario's van monitoring en gedistribueerde tracering. Of u nu verificatiestromen wilt oplossen, API-aanvraagcycli bewaakt of prestatieknelpunten analyseert, in deze handleiding worden de OpenTelemetry-hulpprogramma's en technieken beschreven die u nodig hebt om inzicht te krijgen in uw Azure SDK-bewerkingen.

Azure SDK voor Rust-pakketten maakt gebruik van OpenTelemetry als standaardbenadering voor observability. Dit biedt:

  • Standaardtelemetrie: OpenTelemetry-indelingen gebruiken die compatibel zijn met bewakingsplatforms
  • Gedistribueerde tracering: aanvragen bijhouden voor meerdere services en Azure-resources
  • Geavanceerde exporteurs: Gegevens verzenden naar Jaeger, Prometheus, Grafana en andere waarneembaarheidsplatforms
  • Correlatie tussen services: traceringscontext automatisch doorgeven tussen microservices
  • Productiebewaking: gebouwd voor grootschalige productieomgevingen met sampling- en prestatieoptimalisaties

Belangrijk

Momenteel biedt Microsoft geen directe Azure Monitor OpenTelemetry-exporteur voor Rust-toepassingen. De Azure Monitor OpenTelemetry Distro ondersteunt alleen .NET, Java, Node.jsen Python. Voor Rust-toepassingen moet u OpenTelemetry-gegevens exporteren naar een tussenliggend systeem (zoals Azure Storage, Event Hubs of OpenTelemetry Collector) en die gegevens vervolgens importeren in Azure Monitor met behulp van ondersteunde opnamemethoden.

Logboekregistratie van OpenTelemetry instellen

Als u OpenTelemetry wilt gebruiken, hebt u de azure_core_opentelemetry krat nodig. Het azure_core pakket bevat alleen geen Ondersteuning voor OpenTelemetry.

  1. Meld u aan bij Azure CLI:

    az login
    
  2. Azure Monitor-resources maken met behulp van 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"
    
  3. Configureer uw Rust-project. Voeg de vereiste afhankelijkheden toe aan uw 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"] }
    

    Opmerking

    De opentelemetry-otlp kist is opgenomen voor het exporteren van telemetriegegevens naar een OpenTelemetry Collector, waarmee de gegevens vervolgens naar Azure Monitor kunnen worden doorgestuurd. Directe Azure Monitor-export vanuit Rust-toepassingen wordt niet ondersteund.

  4. Maak uw hoofdtoepassing met openTelemetry-configuratie. Zie de azure_core_opentelemetry documentatie voor meer informatie.

  5. Stel de vereiste omgevingsvariabelen in en voer uw toepassing uit:

    # 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
    

Nadat u OpenTelemetry in uw toepassing hebt geconfigureerd en uitgevoerd, kunt u aangepaste instrumentatie toevoegen en de telemetriegegevens bewaken.

Telemetrie exporteren naar Azure Monitor

Omdat Rust geen directe Azure Monitor OpenTelemetry-exporteur heeft, moet u een indirecte benadering implementeren om uw telemetriegegevens op te halen in Azure Monitor. Dit zijn de aanbevolen methoden:

De OpenTelemetry Collector fungeert als een middelste laag die telemetrie van uw Rust-toepassing kan ontvangen en doorsturen naar Azure Monitor:

  1. De OpenTelemetry Collector implementeren in uw omgeving (als sidecar, agent of gateway)
  2. Uw Rust-toepassing configureren om te exporteren naar de collector met behulp van OTLP (OpenTelemetry Protocol)
  3. De collector configureren met de Azure Monitor-exporteur om gegevens door te sturen naar Application Insights

Optie 2: Azure Storage + Gegevensopname-API

Voor scenario's waarin u meer controle over gegevensverwerking nodig hebt:

  1. Telemetrie exporteren naar Azure Storage (Blob Storage of Data Lake)
  2. De gegevens verwerken met behulp van Azure Functions, Logic Apps of aangepaste toepassingen
  3. Verwerkte gegevens opnemen in Azure Monitor met behulp van de Logboekopname-API

Optie 3: Event Hubs Streaming

Voor realtime telemetrieverwerking:

  1. Telemetrie streamen naar Azure Event Hubs vanuit uw Rust-toepassing
  2. Gebeurtenissen verwerken met behulp van Azure Stream Analytics, Azure Functions of aangepaste consumenten
  3. Verwerkte telemetrie doorsturen naar Azure Monitor of Application Insights

Telemetriegegevens aanpassen

OpenTelemetry biedt een flexibel framework voor het aanpassen van telemetriegegevens aan de behoeften van uw toepassing. Gebruik deze strategieën om uw telemetrie te verbeteren:

Uw toepassingscode instrumenteren

Door aangepaste instrumentatie toe te voegen aan uw toepassingscode kunt u uw bedrijfslogica correleren met Azure SDK-bewerkingen. Deze correlatie maakt het gemakkelijker om inzicht te hebben in de volledige stroom van bewerkingen.

Technique Purpose Implementation
Aangepaste spans voor Azure-bewerkingen Een duidelijke hiërarchie maken die laat zien hoe toepassingslogica zich verhoudt tot Azure-bewerkingen Azure SDK-aanroepen omhullen met behulp van methoden voor het aanmaken van OpenTelemetry-spans
Toepassingslogica correleren met SDK-aanroepen Zakelijke activiteiten verbinden met onderliggende Azure SDK-aanroepen Spancontext gebruiken om zakelijke activiteiten te koppelen aan geactiveerde Azure-service-aanroepen
Diagnostische breadcrumbs maken Belangrijke context vastleggen voor telemetrie tussen werkstromen Gestructureerde velden (gebruikers-id's, aanvraag-id's, bedrijfsobject-id's) toevoegen aan spans

Prestatieanalyse

OpenTelemetry biedt gedetailleerde inzichten in azure SDK-prestatiepatronen. Deze inzichten helpen u bij het identificeren en oplossen van prestatieknelpunten.

Analysetype Wat het onthult Hoe te gebruiken
Duur van SDK-bewerking Hoe lang verschillende Azure-bewerkingen duren Gebruik de door OpenTelemetry automatisch vastgelegde tijdmetingen om trage bewerkingen te identificeren
Knelpunten voor serviceaanroepen Waar uw toepassing tijd besteedt aan het wachten op Azure-antwoorden Tijdsinstelling vergelijken tussen Azure-services en -bewerkingen om prestatieproblemen te vinden
Gelijktijdige bewerkingspatronen Overlapping en afhankelijkheden tussen bewerkingen Telemetriegegevens analyseren om inzicht te krijgen in parallelle mogelijkheden bij het maken van meerdere Azure-aanroepen

Foutdiagnose

OpenTelemetry legt uitgebreide foutcontext vast die verder gaat dan eenvoudige foutberichten. Deze context helpt u niet alleen te begrijpen wat is mislukt, maar waarom en onder welke omstandigheden.

Begrijp SDK-foutpropagatie: Traceer hoe fouten opkomen in uw toepassingscode en de Azure SDK-lagen. Deze tracering helpt u inzicht te hebben in het volledige foutpad en de hoofdoorzaak te identificeren.

Tijdelijke logboekfouten versus permanente fouten: onderscheid maken tussen tijdelijke fouten (zoals netwerktime-outs die kunnen slagen bij opnieuw proberen) en permanente fouten (zoals verificatiefouten waarvoor configuratiewijzigingen nodig zijn). Dit onderscheid helpt u bij het bouwen van tolerante toepassingen.

Logboeken, metrische gegevens en waarschuwingen begrijpen

Uw toepassingen en services genereren telemetriegegevens om u te helpen hun status, prestaties en gebruik te bewaken. Azure categoriseert deze telemetrie in logboeken, metrische gegevens en waarschuwingen.

Azure biedt vier soorten telemetrie:

Telemetrietype Wat het u geeft Waar u deze voor elke service kunt vinden
Metrics Numerieke, tijdreeksgegevens (CPU, geheugen, enzovoort) Metrische gegevens in de portal of az monitor metrics CLI
Waarschuwingen Proactieve meldingen wanneer drempelwaarden worden bereikt Waarschuwingen in de portal of az monitor metrics alert CLI
Logs Op tekst gebaseerde gebeurtenissen en diagnostische gegevens (web, app) App Service-logboeken, Functions Monitor, Diagnostische gegevens van Container Apps
Aangepaste logboeken Uw eigen toepassingstelemetrie via App Insights De Logboeken (Trace) tabel van uw Application Insights-resource

Kies de juiste telemetrie voor uw vraag:

Scenario Logboeken gebruiken... Metrische gegevens gebruiken... Waarschuwingen gebruiken...
Is mijn web-app gestart en reageert deze? App Service webserverlogboeken N/A N/A
Heeft mijn functie een time-out of faalt deze? Aanroeplogboeken van functies (Monitor) Metrische waarde voor uitvoeringsduur van functie Waarschuwing voor 'Functiefouten >0'
"Hoe druk is mijn service en kan deze worden geschaald?" N/A Servicedoorvoer/CPU in metrische gegevens Waarschuwing voor automatische schaalaanpassing voor CPU-% > 70%
"Welke uitzonderingen werpt mijn code?" Aangepaste traceerlogboeken in Application Insights N/A Waarschuwing op "ServerExceptions >0"
"Heb ik mijn transactie- of quotumlimieten overschreden?" N/A Metrische gegevens over quota (transacties, beperking) Waarschuwing over 'ThrottlingCount >0'

De telemetriegegevens weergeven in Azure Monitor

Nadat u OpenTelemetry hebt ingesteld in uw Rust-toepassing en een tussenliggend exportmechanisme hebt geconfigureerd, kunt u de telemetriegegevens in Azure Monitor bekijken via Application Insights. Omdat Rust geen directe exportmogelijkheden van Azure Monitor heeft, moet u een van de volgende methoden implementeren:

  • OpenTelemetry Collector: De OpenTelemetry Collector configureren om gegevens van uw Rust-toepassing te ontvangen en door te sturen naar Azure Monitor
  • Azure Storage-integratie: telemetrie exporteren naar Azure Storage en azure Monitor-API's voor gegevensopname gebruiken om de gegevens te importeren
  • Event Hubs-streaming: telemetrie streamen via Azure Event Hubs en verwerken voor azure Monitor-opname

Zodra uw telemetriegegevens Azure Monitor via een van deze methoden bereiken, kunt u deze analyseren:

  1. Navigeer naar Application Insights in Azure Portal:

    az monitor app-insights component show \
      --app $APP_INSIGHTS_NAME \
      --resource-group $RESOURCE_GROUP \
      --query "{name:name,appId:appId,instrumentationKey:instrumentationKey}"
    
  2. Traceringen en logboeken weergeven:

    • Ga naar Application Insights>Transaction Search
    • Zoeken naar traceringen met bewerkingsnamen zoals get_keyvault_secrets
    • Controleer de sectie Logboeken en voer KQL-query's uit:
    traces
    | where timestamp > ago(1h)
    | where message contains "Azure operations" or message contains "secrets"
    | order by timestamp desc
    
  3. Gedistribueerde traceringen weergeven:

    • Ga naar Toepassingsoverzicht om serviceafhankelijkheden weer te geven
    • Prestaties selecteren om de tijdsinstellingen van de bewerking weer te geven
    • Gebruik End-to-end transactiegegevens om volledige aanvraagstromen te bekijken
  4. Aangepaste KQL-query's voor uw Rust-toepassing:

    // 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
    

In realtime monitoren

Live monitoring instellen om gegevens te zien wanneer deze binnenkomen:

# 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)

Kostenoptimalisatie

U kunt uw kosten voor Azure Monitor aanzienlijk verlagen door inzicht te krijgen in best practices voor configuratieopties en mogelijkheden om de hoeveelheid gegevens te verminderen die Azure Monitor verzamelt.

Belangrijke strategieën voor Rust-toepassingen:

  • Gebruik de juiste logboekniveaus: Configureer logboekniveaus van OpenTelemetry op de juiste manier voor productie om het volume te verminderen
  • Sampling implementeren: OpenTelemetry-steekproeven configureren voor toepassingen met een hoog volume
  • Gevoelige gegevens filteren: voorkom het loggen van geheimen, tokens of grote payloads die de kosten verhogen
  • Gegevensopname bewaken: Controleer regelmatig het gebruik en de kosten van uw Application Insights-gegevens

Middelen en volgende stappen