Managed Service for OpenTelemetry peut recevoir des données de trace, de métrique et de journal depuis vos applications. Il prend en charge deux méthodes d'envoi : l'envoi direct et la redirection via un collecteur OpenTelemetry.
Choisir une méthode d'envoi
Vous pouvez envoyer les données de télémétrie directement à Managed Service for OpenTelemetry ou les rediriger via un collecteur OpenTelemetry. Choisissez la méthode adaptée au type de données de télémétrie que vous souhaitez envoyer.
| Méthode d'envoi | Types de données pris en charge |
| Envoi direct | Traces et métriques |
| Collecteur OpenTelemetry (Core) | Traces et métriques |
| Collecteur OpenTelemetry (Contrib) | Traces, métriques et journaux |
Les données de journal sont redirigées via un collecteur OpenTelemetry (Contrib) vers Simple Log Service (SLS). Si vous souhaitez envoyer des données de journal, utilisez la méthode de redirection avec l'édition Contrib.
Si vous redirigez les données via un collecteur OpenTelemetry, choisissez une option de déploiement. Le collecteur OpenTelemetry est disponible en deux éditions :
Collecteur OpenTelemetry (Core) : prend en charge l'envoi des données de trace et de métrique.
Collecteur OpenTelemetry (Contrib) : prend en charge l'envoi des données de trace, de métrique et de journal. Le tableau suivant compare les options de déploiement décrites dans cette rubrique.
| Option de déploiement | Édition prise en charge | Types de données pris en charge |
| Déploiement sur un cluster ACK depuis le Marketplace ACK | Collecteur OpenTelemetry (Core) | Traces et métriques |
| Déploiement avec Docker | Collecteur OpenTelemetry (Core) et Collecteur OpenTelemetry (Contrib) | Traces et métriques (Core). Traces, métriques et journaux (Contrib). |
| Autres méthodes d'installation et de déploiement | Consultez Autres méthodes d'installation et de déploiement. | Varie selon la méthode |
Avant de commencer
Pour envoyer des données de journal, activez d'abord Simple Log Service (SLS), créez un Project et un Logstore, puis créez une paire AccessKey pour l'envoi des données de journal.
Obtenez les endpoints et les identifiants d'authentification. Le tableau suivant répertorie toutes les variables de configuration utilisées dans cette rubrique. Dans les exemples de code et de configuration, remplacez les espaces réservés au format
${VAR}par les valeurs réelles que vous avez préparées. Préparez les endpoints et les identifiants requis par votre scénario, en fonction du type de données que vous envoyez et de la méthode d'envoi utilisée. Pour plus d'informations, consultez la rubrique Prise en main de Managed Service for OpenTelemetry.
| Cas d'utilisation | Variable | Description | Exemple |
| Envoyer des données de trace et de métrique via gRPC | ${GRPC_ENDPOINT} | L'endpoint gRPC de Managed Service for OpenTelemetry, qui prend en charge l'envoi des données de trace et de métrique. Si votre service s'exécute sur Alibaba Cloud dans la même région que celle de l'endpoint sélectionné, utilisez l'endpoint interne Alibaba Cloud. Sinon, utilisez l'endpoint public. |
|
| Envoyer des données de trace et de métrique via gRPC | ${GRPC_AUTHENTICATION_TOKEN} | Le jeton d'authentification requis pour envoyer des données via gRPC vers Managed Service for OpenTelemetry. Pour savoir comment obtenir ce jeton, consultez la rubrique Prise en main de Managed Service for OpenTelemetry. | abcdef1234@abcdef****56789_abcdef1234@abcdef****56789 |
| Envoyer des données de trace et de métrique via HTTP | ${HTTP_TRACES_ENDPOINT} | L'endpoint HTTP de Managed Service for OpenTelemetry, qui prend en charge l'envoi des données de trace. Si votre service s'exécute sur Alibaba Cloud dans la même région que celle de l'endpoint sélectionné, utilisez l'endpoint interne Alibaba Cloud. Sinon, utilisez l'endpoint public. |
|
| Envoyer des données de trace et de métrique via HTTP | ${HTTP_METRICS_ENDPOINT} | L'endpoint HTTP de Managed Service for OpenTelemetry, qui prend en charge l'envoi des données de métrique. Si votre service s'exécute sur Alibaba Cloud dans la même région que celle de l'endpoint sélectionné, utilisez l'endpoint interne Alibaba Cloud. Sinon, utilisez l'endpoint public. |
|
| Envoyer des données de journal | ${SLS_ENDPOINT} | L'endpoint du Project SLS. Requis uniquement lors de l'envoi des données de journal. Pour obtenir l'endpoint, suivez les étapes décrites dans la rubrique Endpoint. | test-project.cn-hangzhou.log.aliyuncs.com |
| Envoyer des données de journal | ${SLS_PROJECT} | Le nom du Project SLS. Requis uniquement lors de l'envoi des données de journal. | test-project |
| Envoyer des données de journal | ${SLS_LOGSTORE} | Le nom du Logstore SLS. Requis uniquement lors de l'envoi des données de journal. | test-logstore |
| Envoyer des données de journal | ${ALIYUN_ACCESS_KEY_ID} | L'AccessKey ID de votre compte Alibaba Cloud. Requis uniquement lors de l'envoi des données de journal. Nous vous recommandons d'utiliser la paire AccessKey (composée d'un AccessKey ID et d'un AccessKey secret) d'un utilisateur Resource Access Management (RAM) disposant uniquement des autorisations d'écriture sur le Project SLS. Pour savoir comment accorder à un utilisateur RAM les autorisations d'écriture sur un Project spécifique, consultez la rubrique Exemples de politiques personnalisées RAM. Pour savoir comment obtenir une paire AccessKey, consultez la rubrique Paire AccessKey. | N/A |
| Envoyer des données de journal | ${ALIYUN_ACCESS_KEY_SECRET} | L'AccessKey secret de votre compte Alibaba Cloud. Requis uniquement lors de l'envoi des données de journal. Nous vous recommandons d'utiliser la paire AccessKey d'un utilisateur RAM disposant uniquement des autorisations d'écriture sur le Project SLS. | N/A |
Envoi direct
Configurez l'endpoint d'envoi et les informations d'authentification dans l'agent OpenTelemetry ou le SDK pour envoyer directement les données de trace et de métrique collectées par OpenTelemetry au serveur Managed Service for OpenTelemetry.
Option 1 : Configurer les paramètres d'envoi dans le code (exemple Java)
Les exemples de code Java suivants montrent comment configurer les endpoints de Managed Service for OpenTelemetry, qui prend en charge l'envoi via HTTP ou gRPC. Pour consulter le code d'intégration complet et les démos, rendez-vous sur le Centre d'intégration ou consultez la rubrique Envoyer des données de trace depuis des applications Java à l'aide d'OpenTelemetry.
Envoi HTTP
...
// Report trace data
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpHttpSpanExporter.builder()
.setEndpoint("${HTTP_TRACES_ENDPOINT}") // Set the HTTP traces endpoint to report trace data to Managed Service for OpenTelemetry.
.build()).build())
.build();
// Report metric data
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpHttpMetricExporter.builder()
.setEndpoint("${HTTP_METRICS_ENDPOINT}") // Set the HTTP metrics endpoint to report metric data to Managed Service for OpenTelemetry.
.build()).build())
.build();
...
Envoi gRPC
...
// Report trace data
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder()
.setEndpoint("${GRPC_ENDPOINT}") // Set the gRPC endpoint to report trace data to Managed Service for OpenTelemetry.
.addHeader("Authentication","${GRPC_AUTHENTICATION_TOKEN}") // Set the authentication token of Managed Service for OpenTelemetry.
.build()).build())
.setResource(resource)
.build();
// Report metric data
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder()
.setEndpoint("${GRPC_ENDPOINT}") // Set the gRPC endpoint to report metric data to Managed Service for OpenTelemetry.
.addHeader("Authentication", "${GRPC_AUTHENTICATION_TOKEN}") // Set the authentication token of Managed Service for OpenTelemetry.
.build()).build())
.setResource(resource)
.build();
...
Option 2 : Configurer les paramètres d'envoi avec des variables d'environnement
OpenTelemetry permet également de configurer l'endpoint d'envoi des données à l'aide de variables d'environnement. Le tableau suivant répertorie les variables d'environnement requises pour envoyer des données vers Managed Service for OpenTelemetry. Pour plus d'informations sur les autres variables d'environnement OTLP d'OpenTelemetry, consultez la documentation Configuration de l'exportateur OTLP.
Redirection des données via un collecteur OpenTelemetry
Un collecteur OpenTelemetry reçoit les données de trace, de métrique et de journal depuis vos applications et les redirige vers Managed Service for OpenTelemetry en fonction de sa configuration d'exportateur.
Option 1 : Déploiement sur un cluster ACK depuis le Marketplace ACK
Dans cette option, vous déployez le collecteur sur un cluster Container Service for Kubernetes (ACK) depuis le Marketplace ACK. Le Marketplace ACK propose actuellement uniquement l'édition Core du collecteur OpenTelemetry, et non l'édition Contrib. Pour collecter des données de journal, utilisez l'une des autres méthodes de déploiement.
Étape 1 : Déployer le collecteur
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur .
Dans le Marketplace, recherchez et cliquez sur
opentelemetry-collector, puis cliquez sur Deploy dans le coin supérieur droit de la page.Sur la page Create , sélectionnez le cluster et le namespace dans lesquels vous souhaitez déployer
opentelemetry-collector. Le namespace par défaut est otel-collector. Cliquez ensuite sur Next.Sur la page Parameter Configurations, définissez le paramètre mode sur
deploymentoudaemonset, puis cliquez sur OK.
Étape 2 : Configurer les paramètres du collecteur
Sur la page Clusters, cliquez sur le cluster cible.
Dans le volet de navigation de gauche, choisissez .
Sélectionnez le namespace dans lequel opentelemetry-collector est déployé. Le namespace par défaut est otel-collector.
Sur la page Configuration Item, recherchez opentelemetry-collector, puis cliquez sur YAML.
-
Configurez les sections exporters, processors, receivers et service en vous basant sur le contenu YAML suivant, puis cliquez sur OK.
Élément de configuration opentelemetry-collector (envoi gRPC)
exporters: otlp: endpoint: "${GRPC_ENDPOINT}" headers: Authentication: "${GRPC_AUTHENTICATION_TOKEN}" tls: insecure: true processors: batch: {} memory_limiter: check_interval: 5s # The interval at which memory usage is checked. Change the value as needed. limit_percentage: 80 # The maximum memory usage as a percentage. Change the value as needed. spike_limit_percentage: 25 # The additional memory as a percentage that is allowed for spikes. Change the value as needed. receivers: otlp: protocols: grpc: endpoint: ${env:MY_POD_IP}:4317 http: endpoint: ${env:MY_POD_IP}:4318 service: pipelines: traces: exporters: [otlp] processors: [memory_limiter, batch] receivers: [otlp] metrics: exporters: [otlp] processors: [memory_limiter, batch] receivers: [otlp]Élément de configuration opentelemetry-collector (envoi HTTP)
exporters: otlphttp: traces_endpoint: "${HTTP_TRACES_ENDPOINT}" metrics_endpoint: "${HTTP_METRICS_ENDPOINT}" tls: insecure: true timeout: 5s # The timeout period. The default value is 5s. Change the value as needed. processors: batch: {} memory_limiter: check_interval: 5s # The interval at which memory usage is checked. Change the value as needed. limit_percentage: 80 # The maximum memory usage as a percentage. Change the value as needed. spike_limit_percentage: 25 # The additional memory as a percentage that is allowed for spikes. Change the value as needed. receivers: otlp: protocols: grpc: endpoint: ${env:MY_POD_IP}:4317 http: endpoint: ${env:MY_POD_IP}:4318 service: pipelines: traces: exporters: [otlphttp] processors: [memory_limiter, batch] receivers: [otlp] metrics: exporters: [otlphttp] processors: [memory_limiter, batch] receivers: [otlp] Une fois la configuration terminée, redémarrez manuellement opentelemetry-collector.
Option 2 : Déploiement avec Docker
Dans cette option, vous exécutez le collecteur en tant que conteneur Docker. Les éditions Core et Contrib sont disponibles.
Étape 1 : Extraire l'image
opentelemetry-collector
Pour spécifier une version d'image, consultez https://hub.docker.com/r/otel/opentelemetry-collector/tags.
docker pull otel/opentelemetry-collector:latest
opentelemetry-collector-contrib
Pour spécifier une version d'image, consultez https://hub.docker.com/r/otel/opentelemetry-collector-contrib/tags.
docker pull otel/opentelemetry-collector-contrib:latest
Étape 2 : Préparer le fichier de configuration
Créez un fichier config.yaml et configurez les paramètres associés. Dans les exemples suivants, remplacez les espaces réservés au format ${VAR} par les valeurs que vous avez préparées dans la section Avant de commencer. Ces espaces réservés diffèrent de la syntaxe d'expansion native du collecteur ${env:...}, telle que ${env:MY_POD_IP}, que le collecteur résout à partir des variables d'environnement au moment de l'exécution.
Élément de configuration opentelemetry-collector (envoi gRPC)
# config.yaml
exporters:
otlp:
endpoint: "${GRPC_ENDPOINT}"
headers:
Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
tls:
insecure: true
processors:
batch: {}
memory_limiter:
check_interval: 5s # The interval at which memory usage is checked. Change the value as needed.
limit_percentage: 80 # The maximum memory usage as a percentage. Change the value as needed.
spike_limit_percentage: 25 # The additional memory as a percentage that is allowed for spikes. Change the value as needed.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # The default value is localhost:4317. Change the value as needed.
http:
endpoint: 0.0.0.0:4318 # The default value is localhost:4318. Change the value as needed.
service:
pipelines:
traces:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
Élément de configuration opentelemetry-collector (envoi HTTP)
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # The timeout period. The default value is 5s. Change the value as needed.
processors:
batch: {}
memory_limiter:
check_interval: 5s # The interval at which memory usage is checked. Change the value as needed.
limit_percentage: 80 # The maximum memory usage as a percentage. Change the value as needed.
spike_limit_percentage: 25 # The additional memory as a percentage that is allowed for spikes. Change the value as needed.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # The default value is localhost:4317. Change the value as needed.
http:
endpoint: 0.0.0.0:4318 # The default value is localhost:4318. Change the value as needed.
service:
pipelines:
traces:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
Élément de configuration opentelemetry-collector-contrib (envoi gRPC)
# config.yaml
exporters:
otlp:
endpoint: "${GRPC_ENDPOINT}"
headers:
Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
tls:
insecure: true
# Log exporter configuration (optional)
alibabacloud_logservice/logs:
endpoint: "${SLS_ENDPOINT}"
project: "${SLS_PROJECT}"
logstore: "${SLS_LOGSTORE}"
access_key_id: "${ALIYUN_ACCESS_KEY_ID}"
access_key_secret: "${ALIYUN_ACCESS_KEY_SECRET}"
processors:
batch: {}
memory_limiter:
check_interval: 5s # The interval at which memory usage is checked. Change the value as needed.
limit_percentage: 80 # The maximum memory usage as a percentage. Change the value as needed.
spike_limit_percentage: 25 # The additional memory as a percentage that is allowed for spikes. Change the value as needed.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # The default value is localhost:4317. Change the value as needed.
http:
endpoint: 0.0.0.0:4318 # The default value is localhost:4318. Change the value as needed.
service:
pipelines:
traces:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
# Log data processing pipeline (optional)
logs:
exporters: [alibabacloud_logservice/logs]
processors: [memory_limiter, batch]
receivers: [otlp]
Élément de configuration opentelemetry-collector-contrib (envoi HTTP)
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # The timeout period. The default value is 5s. Change the value as needed.
# Log exporter configuration (optional)
alibabacloud_logservice/logs:
endpoint: "${SLS_ENDPOINT}"
project: "${SLS_PROJECT}"
logstore: "${SLS_LOGSTORE}"
access_key_id: "${ALIYUN_ACCESS_KEY_ID}"
access_key_secret: "${ALIYUN_ACCESS_KEY_SECRET}"
processors:
batch: {}
memory_limiter:
check_interval: 5s # The interval at which memory usage is checked. Change the value as needed.
limit_percentage: 80 # The maximum memory usage as a percentage. Change the value as needed.
spike_limit_percentage: 25 # The additional memory as a percentage that is allowed for spikes. Change the value as needed.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # The default value is localhost:4317. Change the value as needed.
http:
endpoint: 0.0.0.0:4318 # The default value is localhost:4318. Change the value as needed.
service:
pipelines:
traces:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
# Log data processing pipeline (optional)
logs:
exporters: [alibabacloud_logservice/logs]
processors: [memory_limiter, batch]
receivers: [otlp]
Étape 3 : Monter le fichier de configuration personnalisé et exécuter le collecteur
Les indicateurs -p publient les ports du récepteur afin que vos applications puissent envoyer des données au collecteur. Ajustez le mappage des ports pour qu'il corresponde aux endpoints du récepteur dans votre fichier de configuration.
opentelemetry-collector
docker run -p 4317:4317 -p 4318:4318 -v $(pwd)/config.yaml:/etc/otelcol/config.yaml otel/opentelemetry-collector:latest
opentelemetry-collector-contrib
docker run -p 4317:4317 -p 4318:4318 -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest
Pour les autres méthodes de déploiement, consultez Autres méthodes d'installation et de déploiement.