jaeger 链路追踪

jaeger 链路追踪

一、jaeger docker-compose部署

docker-compose.yaml文件

version: '2'
services:
    hotrod:
      image: jaegertracing/example-hotrod:latest
      ports:
        - '8080:8080'
        - '8089:8089'
      command: ["-m","prometheus","all"]
      environment:
        - JAEGER_AGENT_HOST=jaeger-agent
        - JAEGER_AGENT_PORT=6831
        - JAEGER_SAMPLER_TYPE=remote
        - JAEGER_SAMPLING_ENDPOINT=http://jaeger-agent:5778/sampling
      depends_on:
        - jaeger-agent
    jaeger-collector:
      image: jaegertracing/jaeger-collector
      command:
        - "--cassandra.keyspace=jaeger_v1_dc1"
        - "--cassandra.servers=cassandra"
        - "--collector.zipkin.host-port=9411"
        - "--sampling.initial-sampling-probability=.5"
        - "--sampling.target-samples-per-second=.01"
      environment:
        - SAMPLING_CONFIG_TYPE=adaptive
      ports:
        - "14269:14269"
        - "14268:14268"
        - "14250"
        - "9411:9411"
      restart: on-failure
      depends_on:
        - cassandra-schema
    jaeger-query:
      image: jaegertracing/jaeger-query
      command: ["--cassandra.keyspace=jaeger_v1_dc1", "--cassandra.servers=cassandra"]
      ports:
        - "16686:16686"
        - "16687"
      restart: on-failure
      depends_on:
        - cassandra-schema
    jaeger-agent:
      image: jaegertracing/jaeger-agent
      command: ["--reporter.grpc.host-port=jaeger-collector:14250"]
      ports:
        - "5775:5775/udp"
        - "6831:6831/udp"
        - "6832:6832/udp"
        - "5778:5778"
      restart: on-failure
      depends_on:
        - jaeger-collector
    cassandra:
      image: cassandra:4.0
      volumes:
        - /data:/var/lib/cassandra
      restart: always
    cassandra-schema:
      image: jaegertracing/jaeger-cassandra-schema
      depends_on:
        - cassandra
docker-compose -f   docker-compose.yaml  up  -d

二、jaeger 创建yaml文件

elasticsearch相关yaml文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: jaeger-configuration
  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
      password: changeme
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: elasticsearch
  labels:
    app: jaeger
    jaeger-infra: elasticsearch-statefulset
spec:
  serviceName: elasticsearch
  selector:
    matchLabels:
      app: jaeger-elasticsearch
  replicas: 1
  template:
    metadata:
      labels:
        app: jaeger-elasticsearch
        jaeger-infra: elasticsearch-replica
    spec:
      containers:
        - name: elasticsearch
          image: docker.elastic.co/elasticsearch/elasticsearch:5.6.0
          imagePullPolicy: Always
          command:
            - bin/elasticsearch
          args:
            - "-Ehttp.host=0.0.0.0"
            - "-Etransport.host=127.0.0.1"
          volumeMounts:
            - name: data
              mountPath: /data
          readinessProbe:
            exec:
              command:
              - curl
              - --fail
              - --silent
              - --output
              - /dev/null
              - --user
              - elastic:changeme
              - localhost:9200
            initialDelaySeconds: 5
            periodSeconds: 5
            timeoutSeconds: 4
      volumes:
        - name: data
          emptyDir: {}
apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  labels:
    app: jaeger
    jaeger-infra: elasticsearch-service
spec:
  clusterIP: None
  selector:
    app: jaeger-elasticsearch
  ports:
  - port: 9200
    name: elasticsearch
  - port: 9300
    name: transport
kubectl  apply  -f  configmap.yaml
kubectl  apply  -f  elasticsearch-statefulset.yaml
kubectl  apply  -f  elasticsearch-service.yaml 

jaeger 相关yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jaeger-query
  labels:
    app: jaeger
    jaeger-infra: query-deployment
spec:
  selector:
    matchLabels:
      app: jaeger
  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:
              - key: query
                path: query.yaml
          name: jaeger-configuration-volume
apiVersion: v1
kind: Service
metadata:
  name: jaeger-query
  labels:
    app: jaeger
    jaeger-infra: query-service
spec:
  ports:
  - name: jaeger-query
    port: 80
    protocol: TCP
    targetPort: 16686
  selector:
    jaeger-infra: query-pod
  type: LoadBalancer
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jaeger-collector
  labels:
    app: jaeger
    jaeger-infra: collector-deployment
spec:
  selector:
    matchLabels:
      app: jaeger
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: jaeger
        jaeger-infra: collector-pod
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "14268"
    spec:
      containers:
      - image: jaegertracing/jaeger-collector:latest
        name: jaeger-collector
        args: ["--config-file=/conf/collector.yaml"]
        ports:
        - containerPort: 14267
          protocol: TCP
        - containerPort: 14268
          protocol: TCP
        - containerPort: 9411
          protocol: TCP
        readinessProbe:
          httpGet:
            path: "/"
            port: 14269
        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:
              - key: collector
                path: collector.yaml
          name: jaeger-configuration-volume

apiVersion: v1
kind: List
items:
- apiVersion: v1
  kind: Service
  metadata:
    name: jaeger-collector
    labels:
      app: jaeger
      jaeger-infra: collector-service
  spec:
    ports:
    - name: jaeger-collector-tchannel
      port: 14267
      protocol: TCP
      targetPort: 14267
    - name: jaeger-collector-http
      port: 14268
      protocol: TCP
      targetPort: 14268
    - name: jaeger-collector-zipkin
      port: 9411
      protocol: TCP
      targetPort: 9411
    selector:
      jaeger-infra: collector-pod
    type: ClusterIP
- apiVersion: v1
  kind: Service
  metadata:
    name: zipkin
    labels:
      app: jaeger
      jaeger-infra: zipkin-service
  spec:
    ports:
    - name: jaeger-collector-zipkin
      port: 9411
      protocol: TCP
      targetPort: 9411
    selector:
      jaeger-infra: collector-pod
    type: ClusterIP

kibana 相关yaml文件


apiVersion: apps/v1
kind: Deployment
metadata:
  name: kibana-logging
  labels:
    name: kibana-logging
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
spec:
  replicas: 1
  selector:
    matchLabels:
      name: kibana-logging
  template:
    metadata:
      labels:
        name: kibana-logging
      annotations:
        seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
    spec:
      containers:
      - name: kibana-logging
        image: docker.elastic.co/kibana/kibana:5.6.0
        resources:
          # need more cpu upon initialization, therefore burstable class
          limits:
            cpu: 1000m
          requests:
            cpu: 100m
        env:
          - name: ELASTICSEARCH_URL
            value: http://elasticsearch:9200
          - name: ELASTICSEARCH_USERNAME
            value: elastic
          - name: ELASTICSEARCH_PASSWORD
            value: changeme
        ports:
        - containerPort: 5601
          name: ui
          protocol: TCP
apiVersion: v1
kind: Service
metadata:
  name: kibana-logging
  labels:
    name: kibana-logging
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: "Kibana"
spec:
  type: NodePort
  ports:
  - port: 5601
    protocol: TCP
    targetPort: ui
    nodePort: 30012
  selector:
    name: kibana-logging

三、jaeger 架构解析

img

四、jaeger 测试环境搭建

1.环境搭建

docker run -d -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778  -p 16686:16686 -p 14268:14268  -p 14269:14269   -p 9411:9411 jaegertracing/all-in-one:latest

2.端口说明

端口协议功能
9411HTTP可以接收Thrift,JSON and Proto 格式的ZIPkin Span (默认是禁用的)
14250gRPC由jaeger Agent 用来发送范围模型.proto格式
14268HTTP可以接收直接从客户端发送来的Span,以jaeger Thrift格式,通过二进制Trift协议上传
14269HTTP管理端口,可用于健康检查(API: /)和指标采集(/metrics)
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Jaeger链路追踪是一种用于监控和追踪分布式系统中请求的工具。它可以帮助开发人员跟踪请求在系统中的传递路径,并提供详细的性能指标和错误信息。Jaeger的安装可以参考官方地址\[1\]和相关教程\[2\]。Jaeger由多个组件组成,包括Agent、Collector、Query Service等\[2\]。 在使用Go语言进行Jaeger链路追踪时,可以通过Jaeger客户端发送单个或多个span来追踪请求\[3\]。同时,还可以使用grpc发送span消息\[3\]。在Gin框架中,可以通过添加拦截器实现Jaeger的注入\[3\]。此外,还可以修改grpc_opentracing源码来实现Gin和gRPC的追踪\[3\]。 总结来说,Jaeger链路追踪是一种用于监控和追踪分布式系统中请求的工具,可以帮助开发人员跟踪请求的传递路径和性能指标。在Go语言中,可以使用Jaeger客户端发送span来实现链路追踪,并通过拦截器和修改源码来实现Gin和gRPC的追踪。 #### 引用[.reference_title] - *1* [【链路追踪Jaeger基于go的「Gin」「gRPC」进行链路追踪](https://blog.csdn.net/the_shy_faker/article/details/129044832)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [35、jaeger链路追踪](https://blog.csdn.net/qq23001186/article/details/126339369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向 着 太 阳 出 发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值