可观测链路 OpenTelemetry 版支持接收应用的链路追踪、指标和日志数据,提供直接上报和通过 OpenTelemetry Collector 转发两种上报方式。
前提条件
如您需要上报 Logs 数据,请确保日志服务已开通,Project 和 Logstore 已创建完成,并创建用于日志数据上报的 AK 和 SK。
获取接入点和鉴权信息。以下表格给出了本文涉及到的所有配置变量,请您根据使用场景(上报数据类型和上报方式),提前准备好所需的接入点和鉴权信息。更多信息,请参见准备工作。
使用场景
变量名
说明
示例
使用场景
变量名
说明
示例
上报 Traces 与 Metrics 数据
gRPC 方式上报
${GRPC_ENDPOINT}
可观测链路 OpenTelemetry 版的 gRPC 上报地址,支持上报 Traces 与 Metrics 数据。
若您的服务部署在阿里云上,且所属地域与选择的接入地域一致,推荐使用阿里云内网地址,否则选择公网地址。
内网地址:http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090
公网地址:http://tracing-analysis-dc-hz.aliyuncs.com:8090
${GRPC_AUTHENTICATION_TOKEN}
使用 gRPC 上报至可观测链路 OpenTelemetry 版时所需的鉴权 Token。获取方式,请参见准备工作。
abcdef1234@abcdef****56789_abcdef1234@abcdef****56789
HTTP 方式上报
${HTTP_TRACES_ENDPOINT}
可观测链路 OpenTelemetry 版的 HTTP 上报地址,支持上报 Traces 数据。
若您的服务部署在阿里云上,且所属地域与选择的接入地域一致,推荐使用阿里云内网地址,否则选择公网地址。
内网地址:http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/traces
公网地址: http://tracing-analysis-dc-hz.aliyuncs.com/adapt_***_***/api/otlp/traces
${HTTP_METRICS_ENDPOINT}
可观测链路 OpenTelemetry 版的 HTTP 上报地址,支持上报 Metrics 数据。
若您的服务部署在阿里云上,且所属地域与选择的接入地域一致,推荐使用阿里云内网地址,否则选择公网地址。
内网地址:http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/metrics
公网地址: http://tracing-analysis-dc-hz.aliyuncs.com/adapt_***_***/api/otlp/metrics
上报 Logs 数据
${SLS_ENDPOINT}
日志服务Project的接入地址,仅上报 Logs 数据时需要填写。获取接入地址的操作步骤,请参见服务入口。
test-project.cn-hangzhou.log.aliyuncs.com
${SLS_PROJECT}
日志服务Project名称。仅上报 Logs 数据时需要填写。
test-project
${SLS_LOGSTORE}
日志服务 Logstore 名称。仅上报 Logs 数据时需要填写。
test-logstore
${ALIYUN_ACCESS_KEY_ID}
阿里云账号AccessKey ID。仅上报 Logs 数据时需要填写。
建议您使用只具备日志服务Project写入权限的RAM用户的AccessKey(包括AccessKey ID和AccessKey Secret)。授予RAM用户向指定Project写入数据权限的具体操作,请参见RAM自定义授权示例。如何获取AccessKey的具体操作,请参见访问密钥。
无
${ALIYUN_ACCESS_KEY_SECRET}
阿里云账号AccessKey Secret。仅上报 Logs 数据时需要填写。
建议您使用只具备日志服务Project写入权限的RAM用户的AccessKey。
无
直接上报
通过配置 OpenTelemetry Agent 或 SDK 的上报接入点信息和鉴权信息,您可以将 OpenTelemetry 采集到的 Traces 与 Metrics 数据直接发送到可观测链路 OpenTelemetry 版服务端。
方案一:在代码中配置上报信息(以 Java 为例)
以下 Java 代码示例展示如何配置可观测链路 OpenTelemetry 版的接入点信息,支持通过 HTTP 或 gRPC 协议上报。请访问接入中心或通过OpenTelemetry上报Java应用数据查看完整接入代码和 Demo。
...
// 上报 Traces 数据
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpHttpSpanExporter.builder()
.setEndpoint("${HTTP_TRACES_ENDPOINT}") // 设置HTTP Traces接入点,将Traces数据上报至可观测链路OpenTelemetry版
.build()).build())
.build();
// 上报 Metrics 数据
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpHttpMetricExporter.builder()
.setEndpoint("${HTTP_METRICS_ENDPOINT}") // 设置HTTP Metrics接入点,将Metrics数据上报至可观测链路OpenTelemetry版
.build()).build())
.build();
...
...
// 上报 Traces 数据
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder()
.setEndpoint("${GRPC_AUTHENTICATION_TOKEN}") // 设置gRPC接入点,将Traces数据上报至可观测链路OpenTelemetry版
.addHeader("Authentication","${GRPC_AUTHENTICATION_TOKEN}") // 设置可观测链路OpenTelemetry版的鉴权Token信息
.build()).build())
.setResource(resource)
.build();
// 上报 Metrics 数据
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder()
.setEndpoint("${GRPC_METRICS_ENDPOINT}") // 设置gRPC接入点,将Traces数据上报至可观测链路OpenTelemetry版
.addHeader("Authentication", "${GRPC_AUTHENTICATION_TOKEN}") // 设置可观测链路OpenTelemetry版的鉴权Token信息
.build()).build())
.setResource(resource)
.build();
...
方案二:通过环境变量方式设置上报信息
OpenTelemetry 还支持通过环境变量方式配置数据上报点。以下表格为上报至可观测链路 OpenTelemetry 版时所需环境变量,更多 OpenTelemetry OTLP 环境变量,请参考 OTLP Exporter Configuration。
环境变量名 | 说明 | 示例 |
环境变量名 | 说明 | 示例 |
OTEL_SERVICE_NAME | 应用名 | export OTEL_SERVICE_NAME=opentelemetry-demo-service |
OTEL_EXPORTER_OTLP_PROTOCOL | 上报协议。 Traces 支持 grpc、http/protobuf、http/json。 Metrics 支持 grpc、http/protobuf。 当您选择 gRPC 上报点时,请设置为 | export OTEL_EXPORTER_OTLP_PROTOCOL=grpc |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | Traces 上报点。支持 HTTP 和 gRPC 上报点。 上报点为前提条件中获取到的 ${GRPC_ENDPOINT} 或 ${HTTP_TRACES_ENDPOINT}。 |
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/traces
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090 |
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | Metrics 上报点,支持 HTTP 和 gRPC 上报点。 上报点为前提条件中获取到的 ${GRPC_ENDPOINT} 或 ${HTTP_METRICS_ENDPOINT}。 |
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/metrics
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090 |
OTEL_EXPORTER_OTLP_HEADERS | gRPC 上报时的请求头信息,主要用于身份验证。 填写格式为Authentication=${GRPC_AUTHENTICATION_TOKEN},${GRPC_AUTHENTICATION_TOKEN}为前提条件中获取到的鉴权 Token。 | export OTEL_EXPORTER_OTLP_HEADERS=Authentication=abcdef1234@abcdef****56789_abcdef1234@abcdef****56789 |
通过 OpenTelemetry Collector 转发
版本说明
OpenTelemetry Collector(核心版):支持上报 Traces 和 Metrics 数据
OpenTelemetry Collector Contrib(扩展版):支持上报 Traces、Metrics 和 Logs 数据。
部署方案一: ACK 应用市场一键部署至 ACK 集群
ACK 应用市场当前仅支持 OpenTelemetry Collector 核心版,未提供 Contrib 版本。如果您有采集 Logs 的需求,请参考其他方式部署。
1、部署 Collector
登录容器服务管理控制台,在左侧导航栏选择 。
在应用市场中搜索并单击
opentelemetry-collector
,单击页面右上角一键部署。在创建页面选择需要部署
opentelemetry-collector
的集群和命名空间(默认为 otel-collector),然后单击下一步。在参数配置页面,设置 mode 参数为
deployment
或daemonset
,然后单击确定。
2、配置 Collector 参数
在集群列表页面单击目标集群。
在左侧导航栏选择
。选择 opentelemetry-collector 所在的命名空间(默认为 otel-collector)。
在配置项页面找到opentelemetry-collector,然后单击YAML 编辑。
参考以下 YAML 中的内容,配置 exporters、processors、receivers 和 service 四部分内容,然后单击确定。
opentelemetry-collector 配置项(gRPC上报)opentelemetry-collector 配置项(HTTP上报)exporters: otlp: endpoint: "${GRPC_ENDPOINT}" headers: Authentication: "${GRPC_AUTHENTICATION_TOKEN}" tls: insecure: true processors: batch: {} memory_limiter: check_interval: 5s # 检查内存使用的时间间隔,请按需更改 limit_percentage: 80 # 最大内存使用百分比,请按需更改 spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改 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]
exporters: otlphttp: traces_endpoint: "${HTTP_TRACES_ENDPOINT}" metrics_endpoint: "${HTTP_METRICS_ENDPOINT}" tls: insecure: true timeout: 5s # 超时时间,默认5s,请按需更改 processors: batch: {} memory_limiter: check_interval: 5s # 检查内存使用的时间间隔,请按需更改 limit_percentage: 80 # 最大内存使用百分比,请按需更改 spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改 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]
配置完成后,手动重启 opentelemetry-collector 。
部署方案二:Docker 部署
1、拉取镜像
如要指定镜像版本,请访问 https://hub.docker.com/r/otel/opentelemetry-collector/tags。
docker pull otel/opentelemetry-collector:latest
如要指定镜像版本,请访问 https://hub.docker.com/r/otel/opentelemetry-collector-contrib/tags。
docker pull otel/opentelemetry-collector-contrib:latest
2、准备配置文件
创建 config.yaml 文件并配置相关参数。
# config.yaml
exporters:
otlp:
endpoint: "${GRPC_ENDPOINT}"
headers:
Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
tls:
insecure: true
processors:
batch: {}
memory_limiter:
check_interval: 5s # 检查内存使用的时间间隔,请按需更改
limit_percentage: 80 # 最大内存使用百分比,请按需更改
spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # 默认值为 localhost:4317,请按需修改
http:
endpoint: 0.0.0.0:4318 # 默认值为 localhost:4318,请按需修改
service:
pipelines:
traces:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # 超时时间,默认5s,请按需更改
processors:
batch: {}
memory_limiter:
check_interval: 5s # 检查内存使用的时间间隔,请按需更改
limit_percentage: 80 # 最大内存使用百分比,请按需更改
spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # 默认值为 localhost:4317,请按需修改
http:
endpoint: 0.0.0.0:4318 # 默认值为 localhost:4318,请按需修改
service:
pipelines:
traces:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
# config.yaml
exporters:
otlp:
endpoint: "${GRPC_ENDPOINT}"
headers:
Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
tls:
insecure: true
# 日志导出器配置(可选)
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 # 检查内存使用的时间间隔,请按需更改
limit_percentage: 80 # 最大内存使用百分比,请按需更改
spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # 默认值为 localhost:4317,请按需修改
http:
endpoint: 0.0.0.0:4318 # 默认值为 localhost:4318,请按需修改
service:
pipelines:
traces:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
# 日志数据处理流程(可选)
logs:
exporters: [alibabacloud_logservice/logs]
processors: [memory_limiter, batch]
receivers: [otlp]
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # 超时时间,默认5s,请按需更改
# 日志导出器配置(可选)
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 # 检查内存使用的时间间隔,请按需更改
limit_percentage: 80 # 最大内存使用百分比,请按需更改
spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # 默认值为 localhost:4317,请按需修改
http:
endpoint: 0.0.0.0:4318 # 默认值为 localhost:4318,请按需修改
service:
pipelines:
traces:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
# 日志数据处理流程(可选)
logs:
exporters: [alibabacloud_logservice/logs]
processors: [memory_limiter, batch]
receivers: [otlp]
3、挂载自定义配置文件并运行
docker run -v $(pwd)/config.yaml:/etc/otelcol/config.yaml otel/opentelemetry-collector:latest
docker run -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest
其他安装部署方式
参考文档
- 本页导读 (1)
- 前提条件
- 直接上报
- 方案一:在代码中配置上报信息(以 Java 为例)
- 方案二:通过环境变量方式设置上报信息
- 通过 OpenTelemetry Collector 转发
- 版本说明
- 部署方案一: ACK 应用市场一键部署至 ACK 集群
- 部署方案二:Docker 部署
- 其他安装部署方式
- 参考文档