opentelemetry-3-终篇-接管可观测数据
目录
根据前面两篇文章,基本了解了opentelemetry,并且搭建了一套基于opentelemetry的可观测平台,其中包括日志的loki,监控的prometheus,链路的tempo,以及UI的grafana。
接下来,本文将为java服务接入opentelemetry-java-instrumentation,实现java无代码入侵接入opentelemetry。
首先需要下载opentelemetry-javaagent, 然后将java agent上传到私有s3存储,便于后续下载。
然后修改流水线,将java agent添加进去,方式很多,作者这里使用Dockerfile来做。
|
|
这里修改Dockerfile之后需要在流水线中获取opentelemetry-javaagent.jar包
|
|
最后部署服务的时候添加一下ENV,完成配置
|
|
相关配置解释在这里
由于OTEL_TRACES_EXPORTER我们配置了logging,所以生成traceID的时候会输出到控制台,我们Loki同时从promtail接收容器Stdout日志,所以可以直接获取。而配置otlp,则将trace数据传输给了opentelemetry,在上文中,我们opentelemetry是将数据传给了tempo,那么,现在从loki中查询到的traceID,可以直接关联到tempo中了。
如下图演示:
我们先请求一下我们的java服务,产生一下trace数据。
进到grafana,选择我们的服务,搜索一下刚刚请求的接口。

发现搜索到了日志

我们点开日志

发现匹配到了TraceID,我们点击Tempo,页面上同时展示日志和链路信息

此时可以点击链路内容进行问题排查,例如作者这里的可以显示是执行了某段sql。

CloudNativeQingFeng