通过OpenTelemetry接入Java应用数据
OpenTelemetry简介
OpenTelemetry 是 CNCF 的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方供应商无关的服务。它是一组标准和工具的集合,旨在管理观测类数据,如 Traces、Metrics、Logs 等 ,目前已经是业内的标准。
前提条件
- 下载OpenTelemetry Agent
- 下载OpenTelemetry Collector
- 目前基调听云应用与微服务只支持OpenTelemetry Java探针的数据接入。
在平台获取License 及接入点信息,具体操作如下:
获取License:将鼠标悬浮在平台左下角的账号名称位置,在悬浮菜单中选择账户管理,在账号信息页签中查看LicenseKey。
获取接入点信息:接入点为应用与微服务Data Center开放的一个端口。您可以在SkyWalking探针接入页面中获取接入点信息。
数据上报说明
您可以通过两种方式集成OpenTelemetry Trace和Metric数据,分别是直接上报和OpenTelemetry Collector转发。向基调听云应用与微服务Data Center上报数据时目前仅支持HTTP协议。
直接上报
如果您的应用使用了OpenTelemetry Agent,可以通过OpenTelemetry gRPC协议直接向DC发送数据,您只需要配置接入点信息以及license信息。您可以通过以下两种方式直接上报数据。
- 方式一:通过修改Java启动的VM参数上报数据。
java -javaagent:<opentelemetry-agent-path>
-Dotel.service.name=<appName>
-Dotel.exporter.otlp.protocol=http/protobuf
-Dotel.exporter.otlp.endpoint=<endpoint>
-Dotel.resource.attributes=tingyun.license=<license>
-jar myapp.jar
- 方式二:通过新增环境变量上报数据。
#新增环境变量
OTEL_RESOURCE_ATTRIBUTES=tingyun.license=<license>
OTEL_SERVICE_NAME=<appName>
OTEL_EXPORTER_OTLP_ENDPOINT=<endpoint>
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
#启动应用
java -javaagent:<opentelemetry-agent-path> \
-jar myapp.jar
OpenTelemetry Collector转发
如果您的应用使用了OpenTelemetry Agent和OpenTelemetry Collector,OpenTelemetry Agent将接入点配置为本地部署的OpenTelemetry Collector地址后(无需修改其他配置),需在OpenTelemetry Collector配置OTLP Exporter向应用与微服务的DC上报数据。
修改collector 配置文件otel-config.yaml,并按照下发配置修改exporters部分。
exporters: otlphttp: endpoint: <endpoint> service: pipelines: traces: exporters: [otlphttp] metrics: exporters: [otlphttp]
启动OpenTelemetry Collector。
组件支持列表
OpenTelemetry Java探针支持的组件列表,请参见此文档。
平台暂不支持功能
基调听云应用与微服务对接入的OpenTelemetry 探针数据暂不支持以下功能:
- 无心跳告警
应用分析
- 定义指标
- 线程剖析
- JVM信息下HTTP信息的展示
- 环境信息下除环境信息以外的信息
事务分析
- 自定义指标
- 线程剖析
- 连接池
- 健康规则
- 应用配置(包括所有配置:自定义嵌码、采样率、配置数据项等)
- 追踪详情:全栈快照、数据项