Sist endret: 18. jun. 2024

Konfigurasjon

En oversikt over konfigurasjonsmuligheter for monitorering i Altinn Apps.

Denne siden refererer til konfigurasjon når OpenTelemetry (OTel) er i bruk i appen fra v8 og nyere. Det eksisterende Application Insights SDK oppsettet er utgått, og vil fjernes i neste hovedversjon av Altinn.App biblioteker

Det nye oppsettet for monitorering og instrumenterting kan aktiveres ved å sette UseOpenTelemetry til true i appsettings.json eller ekvivalent.

{
  "AppSettings": {
    "UseOpenTelemetry": true
  }
}

Med denne instillingen blir OpenTelemetry konfigurert i stedet for den klassiske Application Insights SDK. All telemetri blir så eksportert til det lokale monitoreringsoppsettet ved lokal kjøring, og til Azure monotipr ved kjøring i miljø. Eventuelt kan en oppgi instrumenteringsnøkkel eller Application Insights connection string til Appsettings eller miljø lokalt, og da vil Altinn.App ekspoertere til Azure monitor. Når appen kjøres med UseOpenTelemetry så vil det følge med auto-intrumentert telemtri for HTTP (traces og metrikk), pluss domenespesifikke trace og metrikk for Altinn.App.

Det er også mulig å konfigurere opentelemetry. Neste seksjon bekriver hvordan dette gjøres, samt hvordan migrere fra Application Insights for de som har laget egendefinert telemetri med denne SDK’en. For informasjon om hvordan legge inn egendefinert telemetri se Instrumentering.

Konfigurering av OpenTelemetry SDK

Hvis appen har behov for å konfigurere OTel så kan utvidelsesmetodene under brukes for å få relevant provider-builde fra Otel SDK. Dette er relevant dersom du

  • Trenger egendefinert enrichment
  • egendefinert sampling
  • Trenger å eksportere telemetri til en annen backend

I eksempelet under blir det lagt til en ekstra eksporterer (ConsoleExporter) for de respektive provider-builders.

Først oppdaterer vi App.csproj-fila:

        <PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.9.0" />

Deretter må vi oppdatere konfigurasjonen i Program.cs:

using OpenTelemetry.Logs;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;

void RegisterCustomAppServices(IServiceCollection services, IConfiguration config, IWebHostEnvironment env)
{
    // Konfigurer eksport for telemetrien (metrics, traces, logs).
    // Her bruker vi konsoll-eksport som eksempel.
    // Dette kunne også sendt telemetrien til en custom backend.
    services.ConfigureOpenTelemetryMeterProvider(builder =>
        builder.AddConsoleExporter(
            (_, readerOptions) =>
            {
                // Høyere frekvens på eksport av metrikker, for å se endringer raskere
                readerOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 5_000;
                readerOptions.PeriodicExportingMetricReaderOptions.ExportTimeoutMilliseconds = 4_000;
            }
        )
    );
    services.ConfigureOpenTelemetryTracerProvider(builder =>
    {
        // Egendefiner sampling
        builder.SetSampler(new ParentBasedSampler(new AlwaysOnSampler()));
        builder.AddConsoleExporter();
    });
    services.ConfigureOpenTelemetryLoggerProvider(builder => builder.AddConsoleExporter());
}

For å lære mer om hva som kan konfigureres og hvordan, se de respektive dokumentene i opentelemetry-dotnet repo:

Migrering fra classic Application Insights SDK

Microsoft har dokumentert at

The long-term plan for Application Insights is to collect data using OpenTelemetry.

(Den langsiktige planen for Application Insights er å samle inn data med OpenTelemetry)

Som betyr at classic SDK vil med stor sannsynlighet utfases i fremtiden. Det er derfor å anbefale en migrering når mulig, ved å følge instruksene over. må bli migrert til sine respektive OTel abstraksjoner. Telemetri initializers og processors må bli migrert til sine respektive OTel abstraksjoner.

Application InsightsOpenTelemetry
ITelemetryInitializerProcessor
ITelemetryProcessorProcessor

Considerations

  • Både OTel og App Insights SDK brukes W3C Trace-Context propogasjon som standard for distributed traces, så korrelasjon på tvers av systemer skal fungere i en migreringsfase