Dela via


Använda OpenTelemetry- och aktivitetsspårningar

Data API Builder (DAB) stöder OpenTelemetry för distribuerad spårning och mått, så att du kan övervaka och diagnostisera beteende i REST, GraphQL, databasåtgärder och interna mellanprogram.

Diagram som visar OpenTelemetry-flödet.

Förutsättningar

  • Befintlig DAB-konfigurationsfil.
  • Köra OpenTelemetry-insamlare eller backend-system (till exempel Azure Monitor eller Jaeger).
  • Data-API-byggarens CLI. Installera CLI

Kör verktyget

Använd dab add-telemetry för att lägga till OpenTelemetry-inställningar i konfigurationen.

  1. Kontrollera att du har en konfigurationsfil. Om du behöver skapa en, kör:

    dab init \
        --database-type mssql \
        --connection-string "<sql-connection-string>"
    
  2. Lägg till OpenTelemetry-inställningar i konfigurationsfilen.

    dab add-telemetry \
        -c dab-config.json \
        --otel-enabled true \
        --otel-endpoint "http://localhost:4317" \
        --otel-protocol "grpc" \
        --otel-service-name "dab"
    
  3. Starta DAB.

    dab start
    

Testa i telemetriserverdelen

  1. Öppna openTelemetry-serverdelen eller insamlargränssnittet.

  2. Bekräfta att spårningar och mått anländer för REST-, GraphQL- eller databasanrop.

Anmärkning

.NET Aspire-instrumentpanelen är en idealisk del av utvecklarslingan. Den innehåller inbyggda vyer för OpenTelemetry-spårningar och mått.

Data API Builder-spårningar

DAB skapar OpenTelemetry "aktiviteter" för:

  • Inkommande HTTP-begäranden (REST-slutpunkter )
  • GraphQL-åtgärder
  • Databasfrågor (per entitet)
  • Interna mellanprogramssteg (till exempel hantering av begäranden, felspårning)

Varje aktivitet innehåller detaljerade taggar (metadata), till exempel:

  • http.method, http.url, , http.querystringstatus.code
  • action.type (CRUD, GraphQL-åtgärd)
  • user.role, user-agent
  • data-source.type, data-source.name
  • api.type (REST eller GraphQL)

Fel och undantag spåras också med detaljerad information.

Data-API Builderns mätvärden

DAB genererar OpenTelemetry-mått som:

  • Totalt antal begäranden: Räknare, märkt med HTTP-metod, status, slutpunkt och API-typ.
  • Fel: Räknare, märkt efter feltyp, HTTP-metod, status, slutpunkt och API-typ.
  • Varaktighet för begäran: Histogram (i millisekunder), märkt med HTTP-metod, status, slutpunkt och API-typ.
  • Aktiva begäranden: Upp/ned-räknare för samtidiga begäranden.

Mått använder .NET Meter API och OpenTelemetry SDK.

Configuration

Lägg till ett open-telemetry avsnitt under runtime.telemetry i konfigurationsfilen.

{
    "runtime": {
        "telemetry": {
            "open-telemetry": {
                "enabled": true,
                "endpoint": "http://otel-collector:4317",
                "service-name": "dab",
                "exporter-protocol": "grpc"
            }
        }
    }
}

Command-line

Konfigurera OpenTelemetry via dab add-telemetry.

  • --otel-enabled
  • --otel-endpoint
  • --otel-protocol
  • --otel-service-name
  • --otel-headers

Example

dab add-telemetry \
    -c dab-config.json \
    --otel-enabled true \
    --otel-endpoint "http://localhost:4317" \
    --otel-protocol "grpc" \
    --otel-service-name "dab"

Resulterande konfiguration

Anmärkning

OpenTelemetry-alternativ är inte tillgängliga på dab configure.

{
    "runtime": {
        "telemetry": {
            "open-telemetry": {
                "enabled": true,
                "endpoint": "http://localhost:4317",
                "service-name": "dab",
                "exporter-protocol": "grpc"
            }
        }
    }
}

Exportera och visualisera

Telemetri exporteras via .NET OpenTelemetry SDK till din konfigurerade serverdel, till exempel Azure Monitor eller Jaeger. Kontrollera att backend-systemet är igång och kan nås på den angivna endpoint. Du kan använda valfri OpenTelemetry-kompatibel serverdel för visualisering.

OpenTelemetry SDK styr exporttidpunkten. Den exporterar spårningar när aktiviteterna har slutförts. Den exporterar mått med ett periodiskt intervall som konfigurerats av SDK:et. Om du inte anger ett intervall använder SDK:t standardvärdet.

Anmärkning

Tillfälliga containrar som stängs av snabbt kan avslutas innan exporten slutförs. Tillåt en smidig stängningsprocess och undvik aggressiv avslutning så att väntande telemetri kan rensas.

Implementeringsanteckningar

  • Spårningar och mått omfattar alla REST-, GraphQL- och databasåtgärder
  • Mellanprogram och felhanterare genererar också telemetri
  • Kontexten sprids via begäranden