基于kubernetes的jaeger 链路追踪部署
- jaeger的相关知识
- 介绍
- 架构图
- 对OpenTracing的原生支持
- 多个存储后端
- 基于k8s的jaeger安装
-
- 1.configmap 部署: jaeger-config.yaml
- 2. jaeger-query 部署安装: jaeger-query-deployment.yml
- 3.jaeger query service的安装:jaeger-query-service.yml
- 4.jaeger-collector 部署安装:jaeger-query-collector.yml
- 5. jaeger collector service的安装:jaeger-collector-service.yml
- 6. 测试用例hotrod 与代理jaeger-agent的部署
- 7.配置ingress 来访问服务,也可以使用NodePort的方式来访问
- 使用docker启动jaeger 测试环境 所有数据都是存储到内存中
- Docker部署jaeger并使用elasticsearch作为存储引擎
- docker + query安装
- docker + agent安装
- 欢迎扫码关注V信公众号一起交流:**一苦四甜**
jaeger的相关知识
https://blog.youkuaiyun.com/douzizuibang/article/details/83312674
https://yq.aliyun.com/articles/514488
官网:https://www.jaegertracing.io/docs/1.7/
github上的jaeger: https://github.com/jaegertracing,https://github.com/jaegertracing/jaeger-kubernetes
介绍
Jaeger是Uber Technologies用GO语言开发的分布式跟踪系统,现已开源。它用于监视和排除基于微服务的分布式系统,包括:
- 分布式上下文传播
- 分布式事务监控
- 根本原因分析
- 服务依赖性分析
- 性能/延迟优化
架构图

对OpenTracing的原生支持
Jaeger后端,Web UI和仪器库已经完全设计为支持OpenTracing标准。
- 通过跨度参考将跟踪表示为有向非循环图(不仅仅是树)
- 支持强类型span 标记和结构化日志
- 通过行李支持通用分布式上下文传播机制
多个存储后端
Jaeger支持两个流行的开源NoSQL数据库作为跟踪存储后端:Cassandra 3.4+和Elasticsearch 6.x / 7.x. 正在进行使用其他数据库的社区实验,例如ScyllaDB,InfluxDB,Amazon DynamoDB。Jaeger还提供了一个简单的内存存储器,用于测试设置。
jaeger-agent(代理)
Jaege-agent client 与 collector 中间的代理层,监听发送过来的 spans 数据并批量发送至 collector。
jaeger-collector
Jaeger-collector接收发送自 jaeger-agent 的 trace 数据(或者可直接发送 zipkin spans 至 collector),验证、索引、转换及存储 trace 数据。
Jaeger的存储是一个可插拔的组件,目前支持Cassandra,Elasticsearch和Kafka。
jaeger-query
jaeger-query从storage 中查询 trace 及前端 ui 展示。
hotrod
测试案例部署。
基于k8s的jaeger安装
PS:因为需要使用到es所有与es与kibana、fluentd放入同一namespace
1.configmap 部署: jaeger-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: jaeger-configuration
namespace: logging
labels:
app: jaeger
jaeger-infra: configuration
data:
span-storage-type: elasticsearch
collector: |
es:
server-urls: http://elasticsearch:9200
username: elastic
password: changeme
collector:
zipkin:
http-port: 9411
query: |
es:
server-urls: http://elasticsearch:9200
username: elastic
2. jaeger-query 部署安装: jaeger-query-deployment.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jaeger-query
namespace: logging
labels:
app: jaeger
jaeger-infra: query-deployment
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
app: jaeger
jaeger-infra: query-pod
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "16686"
spec:
containers:
- image: jaegertracing/jaeger-query:latest
name: jaeger-query
args: ["--config-file=/conf/query.yaml"]
ports:
- containerPort: 16686
protocol: TCP
readinessProbe:
httpGet:
path: "/"
port: 16687
volumeMounts:
- name: jaeger-configuration-volume
mountPath: /conf
env:
- name: SPAN_STORAGE_TYPE
valueFrom:
configMapKeyRef:
name: jaeger-configuration
key: span-storage-type
volumes:
- configMap:
name: jaeger-configuration
items:

Jaeger是Uber开发的分布式追踪系统,用于微服务监控和问题排查。本文详细介绍了如何在Kubernetes环境中配置Jaeger,包括jaeger-agent、jaeger-collector、jaeger-query的部署,以及使用Elasticsearch作为存储后端。此外,还涉及了hotrod测试案例和通过Ingress访问服务的方法。
最低0.47元/天 解锁文章
2808

被折叠的 条评论
为什么被折叠?



