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 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();
}
java -javaagent:path/to/opentelemetry-javaagent.jar -jar myapp.jar
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.
Import-Module ./env.psm1Install-OpenTelemetryCore. Cela installe les fichiers OpenTelemetry (v1.14.0) dans Program Files par défaut.ATTENTION : cette commande va redémarrer IIS. Register-OpenTelemetryForIIS -OTelServiceName <service_name> -AppPoolName <app_pool_name> -OtelExporterOtlpEndpoint <endpoint_url> où <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).
Pour vérifier que les variables d’environnement ont bien été installées : Ouvrir IIS. Aller dans le pool concerné par l’application puis “Editeur de configuration” puis “Configuration de recherche” (attendre que la page charge). Ouvrir le fichier de config (ApplicationHost.config ou web.config) et vérifier que les variables d’environnement sont bien installées (utiliser le fichier env_vars.txt).
<app_id> par l’application id que vous aurez récupéré depuis votre application sur Nudge (type d’application = DOTNET). Remplacer <otel_service_name> par le <service_name> fournit à l’étape précédente. attributes/dotnetapp:
actions:
- action: insert
key: nudge_application_id
value: <app_id>
include:
# strict ou regexp
match_type: strict
# The Span service name must be equal to "petclinic"
resources:
- key: service.name
value: <otel_service_name>
- key: telemetry.sdk.language
value: dotnet
transform/dotnetapp:
error_mode: ignore
metric_statements:
- context: datapoint
statements:
- set(attributes["nudge_application_id"], "<app_id>")
where resource.attributes["service.name"] == "<otel_service_name>" and resource.attributes["telemetry.sdk.language"] == "dotnet"
nudgehttp:
endpoint: https://apm.atakama-technologies.com/
pathCollect: collect/rawdata
# Niveau de log
level: Warn
otelcol.exe --config=file:./config.yaml --feature-gates=service.profilesSupportDécommenter la section “uls” et remplacer <uls_log_path> au chemin correspondant des logs générés par SharePoint. Par défaut : C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\LOGS*.log. Vérifier si ce chemin existe bien.
uls:
include:
- <uls_log_path>
Décommenter #, uls] dans la section
service:
pipelines:
logs:
receivers:
receivers: [otlpnudge] #, uls]
Les logs de l’exporteur Nudge (otelcol) se trouvent dans le dossier où il a été exécuté.
Les logs OpenTelemetry se trouvent dans :
Import-Module ./env.psm1
- Uninstall-OpenTelemetryCore
- Unregister-OpenTelemetryForIIS --AppPoolName=<app_pool_name> où <app_pool_name> est le nom du pool renseigné lors de l’installation d’Opentelemetry.