Open-Telemetry-Java-Guides案例,用于测试常用中间件支持及Otel相关组件的使用情况。关于更多Otel请访问Otel官网。
必读部分:数据展示、 前言、环境准备、参数设置, 启动测试服务、结果观测、测试服务列表、测试环境、测试库及框架列表.
🔈:希望各位先fork,后clone,这样关于我新提交的东西您就可以观测到。如果仅仅clone,我的最新提交您可能感知不到。 个人无偿测试和搭建不易,麻烦赏颗星星,感谢您。🙇。
Otel-Col Info By ItSelf :
App-Trace Info By Jaeger:
App-Jvm-Metrics Info By Prometheus And Prometheus Gateway:
关于业务日志, 借助对应的日志框架实现自定义即可,后将数据对接至Otel-Collector即可。
中心化管控:Biz Logging, Trace, Metrics 较为方便。还未尝试Otel让 个人 最惊喜的Tail-Base-Smaple规则。
关于Otel-Col的Tailed Base采样已尝鲜,值得注意的是,该功能的局限性:
基于尾部采样仅仅适合在单个 Collector 内可成功运行,多个Collector之间组成的集群官方及个人均未测试。
基于尾部采样的规则,目前仅仅适用于Trace,其实个人觉得更重要的是业务的Logging数据。
Open Telemetry(下面简称 Otel(与Open Tracing 的Ot做区分))相关资料及文档。
搭建最小测试版的guides服务,仅仅是为了体验和测试Otel,故此数据仅存于内存中。
arch:
暂时不选择Otel-Collector,选择使用最小版Jaeger进行观测。关于如何安装All in One的Jaeger。
下载Otel-Javaagent.jar至磁盘目录下,关于Latest release ,目前最新版本为Beta 0.12.0。
关于docker 安装相关组件请移步这儿
设置VmOptions,指向磁盘中的otel-javaagent.jar的置放目录。
java -javaagent:path/to/opentelemetry-javaagent-all.jar
设置VmOptions,关于Exporter,otel默认为自己的OTLP Exporter,这里我们选择使用zipkin作为默认Exporter,其兼容jaeger的RestApi。使用Http方式上报至Jaeger的Collector中(也可以使用Otel-Collector)。
// 省略此步骤,当你使用Otel-Collector的时候。
-Dotel.exporter=zipkin
向Environment variable添加参数对:
OTEL_RESOURCE_ATTRIBUTES=service.name=otel-simple-moudlename
Docker/Windows 安装 Otel-Collector即可。
向Environment variable添加参数对:
OTEL_RESOURCE_ATTRIBUTES=service.name=your service name
git clone 当前项目. 选择测试的模块(确保环境准备、参数设置已经完成)。详情请进入子模块测试服务read me file,启动子模块。
访问Jaeger-Ui即可观测结果,按步完成后UI默认地址为:http://localhost:16686/。
JDK Version: 1.8.0_171 & Open-Jdk:11-2018.09.25
Otel Java Agent Version: 0.12.0 & 0.14.1
Otel Collector Win10 Version: 0.16.0
Otel Collector Docker Version: 0.16.0-Dev
Otel Collector Contrib Docker Version: 0.17.0-Dev
Maven Version: 3.3.9
IDEA Version: 2018.1.5 x64
OS Version: Win10
Docker Version: 19.03.13
JVM Info: Java HotSpot(TM) 64-Bit Server VM (25.171-b11, mixed mode)
Others:Prometheus, Prometheus Gateway, Jaeger All In One, Grafana ...
Library/Framework | Versions | Test Result | 官方最低版本支持 |
---|---|---|---|
Servlet | 4.0 | Y | 2.2+ |
WebMvc | 5.1.15 | Y | 3.1+ |
WebFlux | 5.1.15 | Y | 5.0+ |
RestTemplate(sync & async) | 5.1.15 | N/Y(错当rest temeplate为http client. 且不支持 async resttemplate.)故此推荐,如果生产使用RestTemplate,将其底层替换为HttpClient,包括连接池、其他参数等 | 官方无支持 |
ApacheHttpClient(sync & async) | 4.5.12/4.1.4 | Y | 2.0+/1.9+ (not including 2.x yet) |
HttpUrlConnection | java8 | Y | Java 7+ |
OkHttp(sync & async) | 3.6.0 | Y | 3.0+ |
JdbcMysqlConnector | 8.0.22 | Y | 无 |
Spring-Data-Jdbc | 2.1.14(1.0.17.RELEASE) | Y | 1.8+ |
Spring-Data-Jpa | 2.1.14(2.1.17.RELEASE) | Y | 1.8+ |
Spring-Data-Rest | 2.1.14(3.1.17.RELEASE) | Y | 1.8+ |
Spring-Data-Mongo | 2.1.14(2.1.17.RELEASE) | Y | 1.8+ |
Spring-data-Redis | 2.1.14(2.1.17.RELEASE) | Y | 1.8+ |
lettuce-core | 5.1.8.RELEASE | Y | 4.0+ (not including 6.x yet) |
Jedis-Client | 2.9.0 | Y | 1.4+ |
Redisson-Client | 0.0.0 | N 还未测试 | 3.0+ |
Spring-data-Es | 2.1.14(3.1.17.RELEASE) | Y | 1.8+ |
Spring-data-Neo4j | 2.1.14(5.1.17.RELEASE) | N 还未测试 | 1.8+ |
Spring-Rabbit | 2.1.14(2.1.14.RELEASE) | Y | 无 |
Rabbit-Client | 5.4.3 | Y | 2.7+ |
Spring-Kafka | 2.1.13 | Y | 无 |
Kafka-Client | 2.0.1 | Y | 0.11+ |
....... | ..... | Y |
单个服务应当部署单独的Otel-Agent去收集你的Logging、Trace、Metrics。
在每条业务架设对应的Otel-Col-Gateway去做总线收集较为妥当(划分依据参考自身业务)。
至于更大的集群模式,请自行尝试。暂时切莫用于生产,待官方发布GA版本,个人将预先尝试。