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

这篇具有很好参考价值的文章主要介绍了OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


说明
  • 本文使用的测试应用采用的是 “手动 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 实现自动跟踪(附视频)》

技术架构

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

部署 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-jaeger
  namespace: 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 协议组合的服务。
    OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing,openshift
  2. 点击上图 my-jaeger 右上方的箭头,可以看到 Jaeger 的控制台。
    OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing,openshift

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

  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-app
  name: otel-demo-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: otel-demo-app
  template:
    metadata:
      labels:
        app: otel-demo-app
    spec:
      containers:
        - image: quay.io/rbaumgar/otelcol-demo-app-jvm
          imagePullPolicy: IfNotPresent
          name: otel-demo-app
          env:
            - name: OTELCOL_SERVER
              value: 'http://my-jaeger-collector:4317'  
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: otel-demo-app
  name: otel-demo-app
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
    name: web
  selector:
    app: otel-demo-app
  type: ClusterIP
---
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  labels:
    app: otel-demo-app
  name: otel-demo-app
spec:
  path: /
  to:
    kind: Service
    name: otel-demo-app
  port:
    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,然后查看跟踪到的结果。
    OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing,openshift
    可以进入 sayRemote 查看跟踪到的服务调用。
    OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing,openshift

参考

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文章来源地址https://www.toymoban.com/news/detail-608386.html

到了这里,关于OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenShift Route 的实现原理

    OpenShift 中的 Route 解决了从集群外部访问服务的需求,与 Kubernetes 中的 Ingress 类似。 OpenShift 中 Route 资源 API 定义如下: 与 Ingress 类似需要指定: host 也就是服务的域名,也就是主机地址 to route 通过该 service 选择器对接至服务背后的 endpoint 如果希望服务更安全可以通过配置

    2024年02月09日
    浏览(31)
  • 深度学习之用PyTorch实现逻辑回归

    0.1 学习视频源于:b站:刘二大人《PyTorch深度学习实践》 0.2 本章内容为自主学习总结内容,若有错误欢迎指正! 代码(类比线性回归): BCEloss:   结果: 注:输出结果为类别是1的概率。

    2024年02月13日
    浏览(38)
  • 深度学习之用PyTorch实现线性回归

    1.1 epoch = 100时 1.2 epoch = 1000时   2.1 Adam优化器    2.2 Adamax优化器  3.1 lr = 0.05  3.2 lr = 0.1(loss函数结果发散) 1.1 问题  1.2 解决办法 代码中model.parameters()函数保存的是Weights和Bais参数的值。但是对于其他网络(非线性)来说这个函数可以用吗,里面也是保存的w和b吗?

    2024年02月14日
    浏览(35)
  • Java面试之用两个栈实现队列

    用两个栈实现一个队列,实现在队列尾部插入节点和在队列头部删除节点的功能。 队列是一种特殊的线性表,它只允许在表的前端(队头)进行删除操作,在表的后端(队尾)进行插入。 故队列又称为先进先出(FIFO—first in first out)线性表。 栈作为一种数据结构,是一种只

    2024年02月11日
    浏览(24)
  • 每日一题之用两个栈实现队列

    题目:用两个栈实现队列 用两个栈来实现一个队列,使用 n 个元素来完成 n 次在队列尾部插入整数( push )和 n 次在队列头部删除整数( pop )的功能。队列中的元素为 int 类型。保证操作合法,即保证pop操作时队列内已有元素。 参考牛客的解题思路: 将 stack1 倒序写入 stack2 ,然

    2024年02月13日
    浏览(28)
  • 使用 OpenTelemetry 和 Loki 实现高效的应用日志采集和分析

    在之前的文章陆续介绍了 如何在 Kubernetes 中使用 Otel 的自动插桩 以及 Otel 与 服务网格协同实现分布式跟踪,这两篇的文章都将目标聚焦在分布式跟踪中,而作为可观测性三大支柱之一的日志也是我们经常使用的系统观测手段,今天这篇文章就来体验下应用日志的操作闭环。

    2024年02月04日
    浏览(28)
  • 【链路追踪】「Go语言」OpenTelemetry实现[gin, gRPC, log, gorm, redis]的集成

    OpenTelemetry中文文档:https://github.com/open-telemetry/docs-cn/blob/main/OT.md 之前用的是jaeger实现链路追踪,但是想要换成Zipkin等框架或集成指标监控或集成日志会换框架很麻烦。 OpenTracing制定了一套平台无关、厂商无关的协议标准,使得开发人员能够方便的添加或更换底层APM的实现。

    2024年02月06日
    浏览(30)
  • OpenShift 4 - 在 OpenShift 上运行物体检测 AI 应用

    《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在 OpenShift 4.14 + RHODS 2.5.0 的环境中验证 说明:请先根据《OpenShift AI - 部署 OpenShift AI 环境,运行 AI/ML 应用(视频)》一文完成 OpenShift AI 环境的安装。 注意:如无特殊说明,和 OpenShift AI 相关的 Blog 均无需 GPU。 在 Jupyter N

    2024年01月23日
    浏览(24)
  • openshift应用上云常见问题

    解决方式:到对应节点ping镜像仓库域名看是否能ping通,如果不能ping通,查看/etc/resolv.conf是否配置本地IP和search项,重启dnsmasq服务等。 问题原因:查看异常节点SDN的IP分配情况,如果是因为SDN释放IP异常导致IP分配满了,当前目录下IP文件会非常多。ls -l /var/lib/cni/networks/open

    2024年02月05日
    浏览(31)
  • GitOps - 为 OpenShift GitOps 配置邮件通知

    《OpenShift 4.x HOL教程汇总》 说明:本文已经 在OpenShift 4.15 + OpenShift GitOps 1.11.2 环境中验证 说明:先根据《OpenShift 4 之 GitOps(1)通过OpenShift GitOps Operator 安装 ArgoCD》完成安装,然后在 ArgoCD 中创建 spring-petclinic 应用。 ArgoCD 在更新完应用后可以根据更新的状态触发相关事件,例

    2024年04月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包