OpenTelemetry部署

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配置

  1. agent
-javaagent:/path/to/opentelemetry-java-instrumentation.jar -Dotel.resource.attributes=service.name=my-app -Dotel.exporter.otlp.endpoint=<collector-address>:<collector-port>
  1. collector

三方应用: https://blog.csdn.net/luo15242208310/article/details/134510880

三.实际应用

在 test5 服务器上(b51),使用 openTelemetry-javaAgent 代理启动 appServer 和 doctorService, 并把相关日志采集到 openTelemetry- collector 里, 最后通过 zipkin 展示出来~

1.go安装和环境配置

三方应用: https://blog.csdn.net/weixin_43833117/article/details/125737674?ops_request_misc=%257B%2522request%255Fid%2522%253A%25229808F651-1BB3-438D-8283-BB74E8394203%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=9808F651-1BB3-438D-8283-BB74E8394203&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-125737674-null-null.142v100control&utm_term=go%E5%AE%89%E8%A3%85%E5%8F%8A%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AEmac&spm=1018.2226.3001.4187

2.Docker安装

三方应用: https://blog.csdn.net/Javachichi/article/details/132668767?ops_request_misc=%257B%2522request%255Fid%2522%253A%25229F8651CB-5903-4D51-9AA7-C8071F999E0B%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=9F8651CB-5903-4D51-9AA7-C8071F999E0B&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-132668767-null-null.142v100pc_search_result_base5&utm_term=docker安装mac&spm=1018.2226.3001.4187

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

三方应用: https://blog.csdn.net/gitblog_09536/article/details/142224307?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522A66513C4-4C09-4DF6-ABC9-4D23BB3267C4%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=A66513C4-4C09-4DF6-ABC9-4D23BB3267C4&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-142224307-null-null.142v100control&utm_term=Opentelemetry%20collector&spm=1018.2226.3001.4187

(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.安装

三方应用: https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar

  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
### OpenTelemetry 部署与配置 #### 准备工作环境 为了确保OpenTelemetry能够顺利部署,在CentOS 7.7环境中,需要先安装必要的依赖工具和服务。Containerd版本应为1.6.19,并确认已正确获取YUM源[^2]。 #### 安装OpenTelemetry Collector 可以通过官方文档指导来完成Collector的安装过程。通常情况下,推荐采用二进制包的方式进行安装: ```bash wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.84.0/otelcol_linux_amd64.tar.gz tar -xzvf otelcol_linux_amd64.tar.gz sudo mv ./otelcol /usr/local/bin/ ``` 上述命令下载并解压适用于Linux系统的最新稳定版OpenTelemetry Collector二进制文件至`/usr/local/bin/`目录下[^1]。 #### 创建配置文件 创建名为`config.yaml`的配置文件,放置于合适位置(如`/etc/otelcol/config.yaml`),该文件定义了数据接收、处理以及导出方式等内容。下面是一个简单的例子: ```yaml receivers: otlp: protocols: grpc: exporters: logging: processors: batch: service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [logging] ``` 这段配置指定了通过gRPC协议接受追踪数据,并经过批处理器后发送给日志记录器。 #### 启动服务 编写Systemd单元文件以便管理OpenTelemetry Collector作为后台进程运行。新建文件路径为`/etc/systemd/system/otelcol.service`,内容如下所示: ```ini [Unit] Description=OpenTelemetry Collector After=network.target [Service] ExecStart=/usr/local/bin/otelcol --config=/etc/otelcol/config.yaml Restart=always User=nobody Group=nogroup [Install] WantedBy=multi-user.target ``` 保存修改后的文件,执行以下指令使新添加的服务生效并启动它: ```bash systemctl daemon-reload systemctl enable otelcol systemctl start otelcol ``` 此时,OpenTelemetry Collector应该已经在系统中作为一个守护程序正常运作了。 #### 结合Kubernetes中的Nginx应用实例 如果计划在一个基于Kubernetes集群内部署的应用程序里集成OpenTelemetry,则可以参照提供的nginx-deployment.yaml模板[^3],适当调整其中镜像标签和其他参数以适应实际需求。同时还需要考虑如何让Pod内的应用程序向外部暴露指标端口供Collector采集信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值