Démarrer avec OpenTelemetry

OpenTelemetry

Instrumentation Java avec OpenTelemetry

    #!/bin/bash

    if [ $# -ne 3 ]; then
        echo "Usage: ./setup.sh [servicename] [endpoint] [logginglevel]"
        echo Example : ./setup.sh http://collector debug
        exit 1
    fi
        
    export OTEL_SERVICE_NAME=$1
    export OTEL_LOG_LEVEL=$3
    export OTEL_METRICS_EXPORTER=otlp
    export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
    export OTEL_EXPORTER_OTLP_ENDPOINT=$2:4318
    export OTEL_INSTRUMENTATION_OSHI_EXPERIMENTAL_METRICS_ENABLED=true
    export OTEL_INSTRUMENTATION_RUNTIME_TELEMETRY_EMIT_EXPERIMENTAL_TELEMETRY=true
    export OTEL_INSTRUMENTATION_HTTP_CLIENT_CAPTURE_REQUEST_HEADERS=Authorization,Cookie
    export OTEL_INSTRUMENTATION_HTTP_SERVER_CAPTURE_REQUEST_HEADERS=Authorization,Cookie
Utilisation : 
`./setup.sh [servicename] [endpoint] [logginglevel]`

+ __[servicename]__: nom du service.
+ __[endpoint]__ : url de Nudge Exporter (OTEL Collector).
+ __[logginglevel]__ : niveau de log. Valeurs possibles : error, warn, info, debug, trace. Par défaut : info.

OSHI Core [Facultatif]

OSHI Core permet de remonter les métriques “mémoire” affichées dans l’onglet Service/Système.

Version 5.3.1 et plus supportées.

Dans le pom.xml, ajouter les dépendances requises :

<!-- opentelemetry-->
    <dependency>
    <groupId>io.opentelemetry.instrumentation</groupId>
    <artifactId>opentelemetry-oshi</artifactId>
    <version>0.16.1</version>
    <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.github.oshi</groupId>
        <artifactId>oshi-core</artifactId>
        <version>5.3.1</version>
    </dependency>

Dans l’entrypoint de l’application Java, ajouter l’enregistrement des observers de métriques.

import io.opentelemetry.instrumentation.oshi.ProcessMetrics;
import io.opentelemetry.instrumentation.oshi.SystemMetrics;
public static void main(String[] args) {
		/*
         * ...
         */
		SystemMetrics.registerObservers();
		ProcessMetrics.registerObservers();
	}

Lancement de l’application

java -javaagent:path/to/opentelemetry-javaagent.jar -jar myapp.jar

Instrumentation NodeJS avec OpenTelemetry

Instrumentation Dotnet avec OpenTelemetry

L’instrumentation automatique OpenTelemetry .NET devrait fonctionner avec tous les systèmes d’exploitation et toutes les versions de .NET officiellement pris en charge. La version minimale prise en charge de .NET Framework est 4.6.2. Les architectures de processeur prises en charge sont les suivantes : x86 AMD64 (x86-64) ARM64 (expérimental)

On utilisera OpenTelemetry v1.14.0.

Configuration {dotnet-configuration}

Ajouter d’autres applications à instrumenter

Pour ajouter une nouvelle application à instrumenter, réutiliser la commande suivante ; ATTENTION ! cette commande va redémarrer IIS. Register-OpenTelemetryForIIS -OTelServiceName <service_name> -AppPoolName <app_pool_name> -OtelExporterOtlpEndpoint <endpoint_url><service_name> correspond au nom du service, <app_pool_name> est le nom du pool d’application dans IIS, <endpoint_url> est l’url du collecteur otelcol (http://localhost:4318).

Ajouter le bloc de configuration suivant :

  attributes/<application_name>:
    actions:
      - action: insert
        key: nudge_application_id
        value: <app_id>
    include:
      match_type: strict
      resources:
        - key: service.name
          value: <service_name>
        - key: telemetry.sdk.language
          value: dotnet

  transform/<application_name>:
    error_mode: ignore
    metric_statements:
      - context: datapoint
        statements:
          - set(attributes["nudge_application_id"], "<app_id>")
            where resource.attributes["service.name"] == "<service_name>" and resource.attributes["telemetry.sdk.language"] == "dotnet"

Remplacer :

Dans la section de pipelines, ajouter :

service:
  pipelines:
    # Logs pipeline
    # Le pipeline logs (exceptions, errors ...) permet de traiter les logs envoyés par les applications.
    logs:
      receivers: [otlpnudge] #, uls]
      processors: [memory_limiter, insert_schema, attributes/<application_name>, logs_traces_merge, schema, batch]
      exporters: [nudgehttp] #, nudgedebug]

    # Traces pipeline
    # Le pipeline traces permet de traiter les traces HTTP, SQL, CQL ... envoyées par les applications.
    traces:
      receivers: [otlpnudge]
      processors: [memory_limiter, insert_schema, attributes/<application_name>, logs_traces_merge, schema, batch]
      exporters: [nudgehttp] #, nudgedebug]

    # Metrics pipeline
    # Le pipeline metrics permet de traiter les métriques disques, cpus, memoire ... envoyées par les applications.
    metrics:
      receivers: [otlpnudge]
      processors: [memory_limiter, insert_schema, transform/<application_name>, attributes/<application_name>, schema, batch]
      exporters: [nudgehttp] #, nudgedebug]

Sharepoint

Dépannage

Désinstaller OpenTelemetry