OpenTelemetry部署
一.OpenTelemetry介绍
1.三种应用监控
- logs:日志分析存储系统,例如:Elasticsearch(分布式搜索和分析引擎)
- metrics:开源的监控系统,例如:Prometheus
- traces:分布式链路追踪系统,例如:Zipkin/Jaeger
没有OpenTelemetry之前这三种监控都是单独部署在应用程序上
- logs
- metrics
- traces
2.OpenTelemetry
在有了OPenTelemetr之后,配置信息不需要再直接放到应用程序上,进行零干扰式插入配置
整个 OpenTelemetry 系统其实可以简单分为三个部分:
- 客户端
- OTel collector
- 数据存储
第一个客户端很好理解,也就是我们的业务应用;如果是 Java 应用只需要挂载一个 agent 就可以自动采集系统的指标、链路信息、日志等上传到 Collector 中。
也就是上图的左边部分。
之后就是非常关键的组件 collector,它可以通过 OTLP 协议接收刚才提到的客户端上传的数据,然后再内部进行处理,最终输出到后续的存储系统中。
二.Agent配置与Collector配置
- agent
-javaagent:/path/to/opentelemetry-java-instrumentation.jar -Dotel.resource.attributes=service.name=my-app -Dotel.exporter.otlp.endpoint=<collector-address>:<collector-port>
- collector
三方应用: https://blog.csdn.net/luo15242208310/article/details/134510880
三.实际应用
在 test5 服务器上(b51),使用 openTelemetry-javaAgent 代理启动 appServer 和 doctorService, 并把相关日志采集到 openTelemetry- collector 里, 最后通过 zipkin 展示出来~
1.go安装和环境配置
2.Docker安装
3.zipkin安装
三方应用: https://blog.csdn.net/qq_41538097/article/details/124447411
linux
curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
测试访问端口:http:localhost:9411/zipkin/
4.opentelemetry-collector
- 依赖docker安装docker
三方应用: https://opentelemetry.io/docs/collector/quick-start/
- 非docker
安装配置调用推送或等待拉取接口,启动collector(接收\信息进行推送,调用链信息,log日志,指标信息)
(1)安装
https://gitcode.com/gh_mirrors/op/opentelemetry-collector-releases/overview?utm_source=artical_gitcode&index=top&type=card&webUrl&isLogin=null
(2)配置
receivers:
otlp:
protocols:
grpc:
http:
processors:
batch:
exporters:
zipkin:
endpoint: "localhost:9411/api/v2/spans"
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [zipkin]
(3)启动
otelcol --config=/path/to/your/config/file.yaml
当你启动 OpenTelemetry Collector 时,会在控制台输出一些启动信息,其中可能包含关于监听端口的内容
5.opentelemetry-javaagent
修改javaAgent配置信息collector地址向其进行信息推送
1.安装
- 配置
-javaagent:/path/to/opentelemetry-java-instrumentation.jar -Dotel.resource.attributes=service.name=my-app -Dotel.exporter.otlp.endpoint=<collector-address>:<collector-port>
6.应用程序
修改应用程序启动脚本参数两个javaAgent(在其中应用启动脚本配置javaAgent参数, 应用程序启动时会自动找的该javaAgent并进行启动, javaAgent需要配置collector地址向其进行信息推送)
- 启动应用程序
java -javaagent:/path/to/opentelemetry-java-instrumentation.jar -Dotel.resource.attributes=service.name=appServer-app -Dotel.exporter.otlp.endpoint=localhost:4317 -jar appServer.jar
java -javaagent:/path/to/opentelemetry-java-instrumentation.jar -Dotel.resource.attributes=service.name=doctorService-app -Dotel.exporter.otlp.endpoint=localhost:4317 -jar doctorService.jar