day10 : 追踪服务

昨天完成了log集中收拢的机,今天就来完成Observability的最後一块拼图tracing,tracing其实同样是分为一个发送tracing资料的来源跟接收的server端,来源的做法有很多种,因为day 5的时候透过rancher的介面安装好了istio+jaeger,今天就来配置管理这些tracing讯息的server。

管理工具有好几种可以选择像是opentelemetry、tempo等等...,因为grafana特别推出这个关於tracing的管理,所以我采用这个架构,以下就是来自官网上的架构图
https://ithelp.ithome.com.tw/upload/images/20210910/201396612EVrdEyVo8.png
应该不难发现,这个架构跟loki非常的相似,所以可以透过几乎同样的配置方式做出来tempo的架构唷,那就先来一个小demo尝试看看tempo吧,首先利用前几天的介绍,创造一个新的cluster出来,并运行下面的指令。
https://github.com/grafana/tempo/tree/main/example/helm

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm upgrade --set traces.jaeger.thriftHttp=true --install tempo grafana/tempo-distributed
helm upgrade -f microservices-grafana-values.yaml --install grafana grafana/grafana
kubectl create -f microservices-extras.yaml

https://ithelp.ithome.com.tw/upload/images/20210910/20139661Y8OAt4DtkU.png
有没有发现元件昨天的loki很相似,并且可以在comfigmap的设定中发现jaeger和storage的配置方法。

接着为了将使用rancher安装的jaeger all-in-one连接到tempo,来简单解释一下jaeger的tracing机制,jaeger all-in-one的设计上会提供16686/TCP这个port做为观看介面,收拢了tracing的资讯
https://ithelp.ithome.com.tw/upload/images/20210910/20139661EGfUCF7dqB.png
但是这个不是给tempo使用的,在这边如果不使用tempo的话可以直接在grafana加入来源jaeger:16868的datasource来看资讯,但是因为缺少资料储存设计,所以并没有那麽优秀。

要改为给tempo使用的话,要些微的挑整一下deployment设定和tempo的service,要将deployment.apps/rancher-istio-tracing中加入env JAEGER_AGENT_HOST 调整为tempo的distributor元件,另外将service/tempo-tempo-distributed-distributor加入jaeger agent的default port 6381,这样调整的概念会像是下面这样,将原本丢到jaeger agent的线调整到tempo distributor。
https://ithelp.ithome.com.tw/upload/images/20210910/20139661xpJ29T4cAQ.png
接着调整storage的设定储存到minio上(如下)

        backend: s3
        s3:
            bucket: tempo
            endppoint:minio_ip:port
            access_key: minioadmin
            secret_key: minioadmin

最後就是将tempo的tempo-tempo-distributed-query-frontend对外暴露出来,让外部的grafana能够设定为datasource,这样在grafana上就可以将pod的metric、log、tracing都查询的到罗。


<<:  Day3-DotCloud? Docker?

>>:  [自然语言处理基础] Regular Expression (I): 「Ctrl + F」立马找出关键字

JavaScript学习日记 : Day9 - 执行环境(Execution Context)

执行环境就是当前Javascript代码被执行时所在的环境,Javascript在运行任何代码都是在...

Day 30 敏捷开发最後的结果会是什麽?

敏捷开发最後的结果会是什麽? 最後我想跟大家分享一段小故事,故事大约是这样的: 男主角丹,因为车祸的...

[Day8] 建立订单交易API_1

这一小节将介绍建立订单交易 首先先分析Request参数,以下是官方范例 虚拟帐号: { "...

岔路上的风景 - 递回

在学习JS的路上意外接触到了递回的概念,一开始觉得这是什麽鬼东西,回圈用的好端端的,为什麽需要学习难...

Day22_CSS语法5

font-style属性设定HTML元素的文字样式 normal : 正常(预设值) italic ...