OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing

《OpenShift / RHEL / DevSecOps 汇总目录》
说明:本文已经在支持 OpenShift 4.13 的环境中验证

文章目录

  • 技术架构
  • 部署 Distributed Tracing 运行环境
  • 安装测试应用并进行观测跟踪
  • 参考

说明

  • 本文使用的测试应用采用的是 “手动 Instrumentation” 方式在应用代码中通过 OpenTelemetry 的 API 获取的跟踪数据。应用代码 https://github.com/rbaumgar/otelcol-demo-app/blob/main/src/main/java/org/acme/opentelemetry/TracedResource.java
  • 非侵入式的 “自动 Instrumentation” 实现方式可参见《OpenShift 4 - 可观测性之 Distributed Tracing - 通过向被观测应用注入OpenTelemetry Agent 实现自动跟踪(附视频)》

技术架构

在这里插入图片描述

部署 Distributed Tracing 运行环境

  1. 使用OpenShift 集群管理员安装 OpenShift distributed tracing platform Operator,安装过程默认选项即可。在 OpenShift distributed tracing platform Operator 中包含 Jaeger 环境。
  2. 创建 jaeger-demo 项目,并授权 developer 用户为该项目的 admin。
$ oc new-project jaeger-demo
$ oc policy add-role-to-user admin developer -n jaeger-demo 
  1. 用 developer 登录 OpenShift。
$ oc login -u developer
  1. 基于以下 YAML 在 jaeger-demo 项目中创建 Jaeger 对象。
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:name: my-jaegernamespace: jaeger-demo
spec: {}
  1. 执行命令确认 Jaeger 运行环境,其中 my-jaeger-collector 的服务可以接收来自架构图中 Otel 采集的数据。说明:由于本文只是演示,因此只将 my-jaeger-collector 收集的数据存放在内存中。
$ oc get svc -n jaeger-demo
NAME                              TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                    AGE
my-jaeger-agent                   ClusterIP   None           <none>        5775/UDP,5778/TCP,6831/UDP,6832/UDP                        3h33m
my-jaeger-collector               ClusterIP   10.217.4.151   <none>        9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP   3h33m
my-jaeger-collector-headless      ClusterIP   None           <none>        9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP   3h33m
my-jaeger-query                   ClusterIP   10.217.4.108   <none>        443/TCP,16685/TCP                                          3h33m$ oc get pod -n jaeger-demo
NAME                                    READY   STATUS    RESTARTS   AGE
my-jaeger-74c489cb94-mb8vb          2/2     Running   0          52m
  1. 可以在 OpenShift 控制台中可以看到 4317 端口提供的是 grpc-otel 协议组合的服务。
    在这里插入图片描述
  2. 点击上图 my-jaeger 右上方的箭头,可以看到 Jaeger 的控制台。
    在这里插入图片描述

安装测试应用并进行观测跟踪

  1. 基于以下 YAML 部署测试应用。
    说明:测试应用使用了手动 Instrumentation 方式获取的跟踪数据,应用代码参见 https://github.com/rbaumgar/otelcol-demo-app/blob/main/src/main/java/org/acme/opentelemetry/TracedResource.java
    注意:其中在 Deployment 中对 OTELCOL_SERVER 参数使用了以上 my-jaeger-collector 服务的地址。
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: otel-demo-appname: otel-demo-app
spec:replicas: 1selector:matchLabels:app: otel-demo-apptemplate:metadata:labels:app: otel-demo-appspec:containers:- image: quay.io/rbaumgar/otelcol-demo-app-jvmimagePullPolicy: IfNotPresentname: otel-demo-appenv:- name: OTELCOL_SERVERvalue: 'http://my-jaeger-collector:4317'  
---
apiVersion: v1
kind: Service
metadata:labels:app: otel-demo-appname: otel-demo-app
spec:ports:- port: 8080protocol: TCPtargetPort: 8080name: webselector:app: otel-demo-apptype: ClusterIP
---
apiVersion: route.openshift.io/v1
kind: Route
metadata:labels:app: otel-demo-appname: otel-demo-app
spec:path: /to:kind: Servicename: otel-demo-appport:targetPort: web
  1. 执行以下命令访问测试应用。
$ export URL=$(oc get route otel-demo-app -o jsonpath='{.spec.host}')
$ curl $URL/hello
hello 
$ curl $URL/sayHello/demo1
hello: demo1
$ curl $URL/sayRemote/demo2
hello: demo2 from http://otel-demo-app-jaeger-demo.apps-crc.testing/
  1. 在 Jaeger 控制台中查看 my-service,然后查看跟踪到的结果。
    在这里插入图片描述
    可以进入 sayRemote 查看跟踪到的服务调用。
    在这里插入图片描述

参考

https://www.opensourcerers.org/2022/04/18/using-opentelemetry-and-jaeger/
https://github.com/rbaumgar/otelcol-demo-app/blob/main/README.md
https://medium.com/@akashjoffical08/implement-distributed-tracing-with-jaeger-opentelemetry-on-kubernetes-3e35cb77b536
https://docs.openshift.com/container-platform/4.13/distr_tracing/distr_tracing_install/distr-tracing-deploying-jaeger.html
https://www.aneasystone.com/archives/2022/11/opentelemetry-observability.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/9352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF快速开发(2):图标库知识点

文章目录 前言知识点windows资源Style:样式Setter:属性继承关系 Trigger:触发器 WPF层级划分数据绑定声明数据上下文绑定数据模板 前言 图标资源下载 iconfont 知识点 windows资源 Window.Resources&#xff1a;资源位置声明X:Key&#xff1a;资源Id&#xff0c;用于前端的…

2023年JAVA最新面试题

2023年JAVA最新面试题 1 JavaWeb基础1.1 HashMap的底层实现原理&#xff1f;1.2 HashMap 和 HashTable的异同&#xff1f;1.5 Collection 和 Collections的区别&#xff1f;1.6 Collection接口的两种区别1.7 ArrayList、LinkedList、Vector者的异同&#xff1f;1.8 String、Str…

前端JS 展示上传图片缩略图(本地图片读取)

需求&#xff1a; 点击上传图片按钮&#xff0c;选择图片以后&#xff0c;不请求后端接口&#xff0c;直接将图片展示在缩略图中。 解决方案&#xff1a; 使用 FileReader 和 FileReader 中的 readAsDataURL 方法。 第一步 从input[type“file”] (上传文件标签) 里面拿到fil…

数据库管理-第九十四期 19c OCM之路-第四堂(02)(20230725)

第九十四期 19c OCM之路-第四堂&#xff08;02&#xff09;&#xff08;20230725&#xff09; 第四堂继续&#xff01; 考点3&#xff1a;SQL statement tuning SQL语句调优 收集Schema统计信息 exec dbms_stats.gather_schems_stats(HR);开启制定表索引监控 create index…

C语言每日一题:6.移除元素+合并两个有序数组。

第一题&#xff1a;移除元素 思路一&#xff1a; 一&#xff1a;暴力查找的方法&#xff1a; 1.找到对应val值的下标&#xff0c;返回数组的下标。 2.删除对应的下标&#xff0c;从前向后用后面覆盖前面。当后一个是数组最后一个数值是就赋值结束了&#xff08;注意数组越界的问…

width: calc(~“100% - 267px“);动态css 调样式

.result-filtering {color: #8b8b8b;display: flex;// width: 82.6%;width: calc(~"100% - 267px");}

5.python设计模式【单例模式】

内容&#xff1a;保证一个类只有一个实例&#xff0c;并提供一个访问它的全局访问点角色&#xff1a; 单例&#xff08;Singleton&#xff09; UML图 举个例子&#xff1a; 需求&#xff1a;一个类只能实例化一个对象&#xff0c;不能实例化多个对象 from abc import abstract…

RocketMQ教程-(5)-功能特性-事务消息

事务消息为 Apache RocketMQ 中的高级特性消息&#xff0c;本文为您介绍事务消息的应用场景、功能原理、使用限制、使用方法和使用建议。 事务消息为 Apache RocketMQ 中的高级特性消息&#xff0c;本文为您介绍事务消息的应用场景、功能原理、使用限制、使用方法和使用建议。…

数据库触发器简介——修改数据的触发器、删除数据的触发器

1.修改数据的触发器 修改数据的触发器 create trigger tb_user_update_triggerafter update on tb_user for each row begininsert int user_logs(id,operation,operate_time,operate_id,operate_params)VALUES(null,update,now(),new.id,concat(更新之前的数据&#xff1a;i…

如何设置Axure中文版 Mac系统下axurerp10怎么设置成中文

有许多小伙伴肯定想知道axure rp 10怎么转换为中文版&#xff0c;接下来就为大家带来最详细的汉化教程&#xff0c;大家可以根据教程一步一步操作&#xff0c;保证可以汉化成功&#xff01; 准备工作 安装好axurerp10 axurerp10汉化包 百度网盘链接: 百度网盘 请输入提取码 …

PostgreSQL实战-数据库迁移部署

PostgreSQL实战-数据库迁移部署 介绍 根据项目需求&#xff0c;我们需要将现有的PostgreSQL数据库重新部署到新的服务器上。由于项目本身就是基于PostgreSQL数据库构建的&#xff0c;因此数据库迁移将变得十分便捷。接下来&#xff0c;我将简要介绍我们的迁移步骤。 迁移步骤…

2.1 色彩空间

色彩发送器 色彩认知&#xff1a;光源是出生点&#xff0c;光源发射出光线&#xff0c;光线通过直射反射折射等路径最终进入人眼。但是人眼接收到光线后&#xff0c;人眼的细胞产生了一系列化学反应。由此把产生的新号传入大脑&#xff0c;最终大脑对颜色产生了认知感知。 光的…

第一百一十六天学习记录:C++提高:STL-string(黑马教学视频)

string基本概念 string是C风格的字符串&#xff0c;而string本质上是一个类 string和char区别 1、char是一个指针 2、string是一个类&#xff0c;类内部封装了char*&#xff0c;管理这个字符串&#xff0c;是一个char型的容器。 特点&#xff1a; string类内部封装了很多成员方…

PostMan+Jmeter工具介绍及安装

目录 一、PostMan介绍​编辑 二、下载安装 三、Postman与Jmeter的区别 一、开发语言区别&#xff1a; 二、使用范围区别&#xff1a; 三、使用区别&#xff1a; 四、Jmeter安装 附一个详细的Jmeter按照新手使用教程&#xff0c;感谢作者&#xff0c;亲测有效。 五、Jme…

【数据结构】树状数组和线段树

树状数组和线段树 下文为自己的题解总结&#xff0c;参考其他题解写成&#xff0c;取其精华&#xff0c;做以笔记&#xff0c;如有描述不清楚或者错误麻烦指正&#xff0c;不胜感激&#xff0c;不喜勿喷&#xff01; 树状数组 需求&#xff1a; 能够快速计算区间和保证在修改…

fastadmin采坑之接口分页处理

其实不算fastadmin的代码而是thinkphp自带的分页代码 paginate函数就是自带的分页函数&#xff0c;开始我以为这个只能用于渲染模板不能用于接口&#xff0c;后面看到源代码发现请求参数带page就可以 /*** ApiTitle (获取协会会员)* ApiSummary (获取协会会员)* ApiMethod …

excel 生成sql技巧

"update 表名 set 字段名"&A2&" where 字段名"&B2&";"

【C语言进阶】程序环境和预处理

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;C语言 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、程序的翻译环境和执行环境 二、详解编译和链接 2.1翻译环境 2.2编译的过…

现代控制理论

B站学习视频https://space.bilibili.com/230105574/channel/seriesdetail?sid1569601 一.引入状态-空间表达 &#xff08;本质上是使用一组向量的线性组合来表示整个系统任意物理量&#xff0c;也就是一个特征分解的过程&#xff09; 现代控制理论的基础是 状态-空间表达方…

Emacs之实现跨程序选中自动复制功能(一百一十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…