Puede recibir datos de trazas, métricas y registros desde sus aplicaciones. Admite dos métodos de reporte: el reporte directo y el reenvío mediante un OpenTelemetry Collector.
Elija un método de reporte
Los datos de telemetría se pueden reportar directamente a Managed Service for OpenTelemetry o reenviarlos mediante un OpenTelemetry Collector. Elija el método según el tipo de datos de telemetría que desee reportar.
|
Método de reporte |
Tipos de datos compatibles |
|
Reporte directo |
Trazas y métricas |
|
OpenTelemetry Collector (Core) |
Trazas y métricas |
|
OpenTelemetry Collector (Contrib) |
Trazas, métricas y registros |
Los datos de registro se reenvían a Simple Log Service (SLS) mediante un OpenTelemetry Collector (Contrib). Si necesita reportar datos de registro, utilice el método de reenvío del Collector con la edición Contrib.
Si decide reenviar los datos mediante un OpenTelemetry Collector, elija una opción de despliegue. El OpenTelemetry Collector está disponible en dos ediciones:
OpenTelemetry Collector (Core): admite el reporte de datos de trazas y métricas.
OpenTelemetry Collector (Contrib): admite el reporte de datos de trazas, métricas y registros. A continuación se presenta una tabla que compara las opciones de despliegue descritas en este tema.
|
Opción de despliegue |
Edición compatible |
Tipos de datos compatibles |
|
Despliegue en un clúster de ACK desde ACK Marketplace |
OpenTelemetry Collector (Core) |
Trazas y métricas |
|
Despliegue con Docker |
OpenTelemetry Collector (Core) y OpenTelemetry Collector (Contrib) |
Trazas y métricas (Core). Trazas, métricas y registros (Contrib). |
|
Otros métodos de instalación y despliegue |
Varía según el método |
Antes de empezar
Para reportar datos de registro, primero active Simple Log Service (SLS), cree un Project y un Logstore, y create an AccessKey pair for log data reporting.
Obtenga los endpoints y las credenciales de autenticación. En la siguiente tabla se enumeran todas las variables de configuración que se utilizan en este tema. En los ejemplos de código y de configuración, debe sustituir los marcadores de posición con el formato
${VAR}por los valores reales que preparó. Prepare los endpoints y las credenciales que requiera su escenario, según el tipo de datos que reporte y el método de reporte que utilice. Para obtener más información, consulte Get started with Managed Service for OpenTelemetry.
| Caso de uso | Variable | Descripción | Ejemplo |
| Reportar datos de trazas y métricas mediante gRPC | ${GRPC_ENDPOINT} | El endpoint de gRPC de Managed Service for OpenTelemetry, que admite el reporte de datos de trazas y métricas. Si su servicio se ejecuta en Alibaba Cloud dentro de la misma región que el endpoint seleccionado, utilice el endpoint interno de Alibaba Cloud. De lo contrario, utilice el endpoint público. |
|
| Reportar datos de trazas y métricas mediante gRPC | ${GRPC_AUTHENTICATION_TOKEN} | El token de autenticación obligatorio para reportar datos mediante gRPC a Managed Service for OpenTelemetry. Para obtener información sobre cómo conseguir el token, consulte Get started with Managed Service for OpenTelemetry. | abcdef1234@abcdef****56789_abcdef1234@abcdef****56789 |
| Reportar datos de trazas y métricas mediante HTTP | ${HTTP_TRACES_ENDPOINT} | El endpoint HTTP de Managed Service for OpenTelemetry, que admite el reporte de datos de trazas. Si su servicio se ejecuta en Alibaba Cloud dentro de la misma región que el endpoint seleccionado, utilice el endpoint interno de Alibaba Cloud. De lo contrario, utilice el endpoint público. |
|
| Reportar datos de trazas y métricas mediante HTTP | ${HTTP_METRICS_ENDPOINT} | El endpoint HTTP de Managed Service for OpenTelemetry, que admite el reporte de datos de métricas. Si su servicio se ejecuta en Alibaba Cloud dentro de la misma región que el endpoint seleccionado, utilice el endpoint interno de Alibaba Cloud. De lo contrario, utilice el endpoint público. |
|
| Reportar datos de registro | ${SLS_ENDPOINT} | El endpoint del proyecto de SLS. Es obligatorio únicamente cuando reporta datos de registro. Para conocer los pasos necesarios para obtener el endpoint, consulte Endpoint. | test-project.cn-hangzhou.log.aliyuncs.com |
| Reportar datos de registro | ${SLS_PROJECT} | El nombre del proyecto de SLS. Es obligatorio únicamente cuando reporta datos de registro. | test-project |
| Reportar datos de registro | ${SLS_LOGSTORE} | El nombre del logstore de SLS. Es obligatorio únicamente cuando reporta datos de registro. | test-logstore |
| Reportar datos de registro | ${ALIYUN_ACCESS_KEY_ID} | El AccessKey ID de su cuenta de Alibaba Cloud. Es obligatorio únicamente cuando reporta datos de registro. Se recomienda utilizar el par de claves de acceso (AccessKey ID y AccessKey secret) de un usuario de Resource Access Management (RAM) que tenga permisos de escritura exclusivos sobre el proyecto de SLS. Para obtener información sobre cómo otorgar a un usuario de RAM permisos de escritura en un proyecto específico, consulte RAM custom policy examples. Para saber cómo obtener un par de claves de acceso, consulte AccessKey pair. | N/A |
| Reportar datos de registro | ${ALIYUN_ACCESS_KEY_SECRET} | El AccessKey secret de su cuenta de Alibaba Cloud. Es obligatorio únicamente cuando reporta datos de registro. Se recomienda utilizar el par de claves de acceso de un usuario de RAM que tenga permisos de escritura exclusivos sobre el proyecto de SLS. | N/A |
Reporte directo
Configure el endpoint de reporte y la información de autenticación en el agente o SDK de OpenTelemetry. De esta forma, los datos de trazas y métricas recopilados se envían directamente al servidor de Managed Service for OpenTelemetry.
Opción 1: Configurar los ajustes de reporte en el código (ejemplo en Java)
En los siguientes ejemplos de código Java se muestra cómo configurar los endpoints de Managed Service for OpenTelemetry, que admiten el reporte mediante HTTP o gRPC. Para consultar el código de integración completo y las demostraciones, visite el Centro de integración o consulte Report trace data from Java applications by using OpenTelemetry.
Reporte mediante 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();
...
Reporte mediante 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();
...
Opción 2: Configurar los ajustes de reporte con variables de entorno
OpenTelemetry también permite configurar el endpoint de reporte de datos mediante variables de entorno. En la siguiente tabla se enumeran las variables de entorno obligatorias para reportar datos a Managed Service for OpenTelemetry. Para conocer más variables de entorno OTLP de OpenTelemetry, consulte Configuración del exportador OTLP.
Reenvío de datos mediante un OpenTelemetry Collector
Un OpenTelemetry Collector recibe los datos de trazas, métricas y registros de sus aplicaciones. Posteriormente, los reenvía a Managed Service for OpenTelemetry según su configuración de exportador.
Opción 1: Desplegar en un clúster de ACK desde ACK Marketplace
Con esta opción, el collector se despliega en un clúster de Container Service for Kubernetes (ACK) desde ACK Marketplace. Actualmente, ACK Marketplace solo ofrece la edición OpenTelemetry Collector (Core), no la edición Contrib. Para recopilar datos de registro, utilice alguno de los otros métodos de despliegue.
Paso 1: Desplegar el collector
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en .
En Marketplace, busque
opentelemetry-collector, haga clic en él y luego haga clic en Deploy en la esquina superior derecha de la página.En la página Create , seleccione el clúster y el namespace donde desea desplegar
opentelemetry-collector. El namespace predeterminado es otel-collector. Luego, haga clic en Next.En la página Parameter Configurations, establezca el parámetro mode en
deploymentodaemonset, y luego haga clic en OK.
Paso 2: Configurar los parámetros del collector
En la página Clusters, haga clic en el clúster de destino.
En el panel de navegación izquierdo, elija .
Seleccione el namespace donde se desplegó opentelemetry-collector. El namespace predeterminado es otel-collector.
En la página Configuration Item, busque opentelemetry-collector y haga clic en YAML.
-
Configure las secciones exporters, processors, receivers y service con base en el siguiente contenido YAML. Después, haga clic en OK.
Elemento de configuración opentelemetry-collector (reporte mediante 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]Elemento de configuración opentelemetry-collector (reporte mediante 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] Una vez completada la configuración, reinicie manualmente opentelemetry-collector.
Opción 2: Desplegar con Docker
Con esta opción, el collector se ejecuta como un contenedor de Docker. Están disponibles tanto la edición Core como la Contrib.
Paso 1: Extraer la imagen
opentelemetry-collector
Para especificar una versión de imagen, visite https://hub.docker.com/r/otel/opentelemetry-collector/tags.
docker pull otel/opentelemetry-collector:latest
opentelemetry-collector-contrib
Para especificar una versión de imagen, visite https://hub.docker.com/r/otel/opentelemetry-collector-contrib/tags.
docker pull otel/opentelemetry-collector-contrib:latest
Paso 2: Preparar el archivo de configuración
Cree un archivo config.yaml y configure los parámetros correspondientes. En los siguientes ejemplos, debe sustituir los marcadores de posición con el formato ${VAR} por los valores que preparó en la sección Antes de empezar. Estos marcadores son distintos de la sintaxis de expansión nativa del Collector ${env:...}, como ${env:MY_POD_IP}, que el Collector resuelve a partir de variables de entorno durante la ejecución.
Elemento de configuración opentelemetry-collector (reporte mediante 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]
Elemento de configuración opentelemetry-collector (reporte mediante 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]
Elemento de configuración opentelemetry-collector-contrib (reporte mediante 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]
Elemento de configuración opentelemetry-collector-contrib (reporte mediante 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]
Paso 3: Montar el archivo de configuración personalizado y ejecutar el collector
Las marcas -p publican los puertos del receptor para que sus aplicaciones puedan enviar datos al collector. Ajuste la asignación de puertos para que coincida con los endpoints del receptor definidos en su archivo de configuración.
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
Para conocer otros métodos de despliegue, consulte Otros métodos de instalación y despliegue.