jaeger 链路追踪
一、jaeger docker-compose部署
docker-compose.yaml文件
version: '2'services:hotrod:image: jaegertracing/example-hotrod:latestports:- '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/samplingdepends_on:- jaeger-agentjaeger-collector:image: jaegertracing/jaeger-collectorcommand:- "--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=adaptiveports:- "14269:14269"- "14268:14268"- "14250"- "9411:9411"restart: on-failuredepends_on:- cassandra-schemajaeger-query:image: jaegertracing/jaeger-querycommand: ["--cassandra.keyspace=jaeger_v1_dc1", "--cassandra.servers=cassandra"]ports:- "16686:16686"- "16687"restart: on-failuredepends_on:- cassandra-schemajaeger-agent:image: jaegertracing/jaeger-agentcommand: ["--reporter.grpc.host-port=jaeger-collector:14250"]ports:- "5775:5775/udp"- "6831:6831/udp"- "6832:6832/udp"- "5778:5778"restart: on-failuredepends_on:- jaeger-collectorcassandra:image: cassandra:4.0volumes:- /data:/var/lib/cassandrarestart: alwayscassandra-schema:image: jaegertracing/jaeger-cassandra-schemadepends_on:- cassandra
docker-compose -f docker-compose.yaml up -d
二、jaeger 创建yaml文件
elasticsearch相关yaml文件
apiVersion: v1kind: ConfigMapmetadata:name: jaeger-configurationlabels:app: jaegerjaeger-infra: configurationdata:span-storage-type: elasticsearchcollector: |es:server-urls: http://elasticsearch:9200username: elasticpassword: changemecollector:zipkin:http-port: 9411query: |es:server-urls: http://elasticsearch:9200username: elasticpassword: changeme
apiVersion: apps/v1kind: StatefulSetmetadata:name: elasticsearchlabels:app: jaegerjaeger-infra: elasticsearch-statefulsetspec:serviceName: elasticsearchselector:matchLabels:app: jaeger-elasticsearchreplicas: 1template:metadata:labels:app: jaeger-elasticsearchjaeger-infra: elasticsearch-replicaspec:containers:- name: elasticsearchimage: docker.elastic.co/elasticsearch/elasticsearch:5.6.0imagePullPolicy: Alwayscommand:- bin/elasticsearchargs:- "-Ehttp.host=0.0.0.0"- "-Etransport.host=127.0.0.1"volumeMounts:- name: datamountPath: /datareadinessProbe:exec:command:- curl- --fail- --silent- --output- /dev/null- --user- elastic:changeme- localhost:9200initialDelaySeconds: 5periodSeconds: 5timeoutSeconds: 4volumes:- name: dataemptyDir: {}
apiVersion: v1kind: Servicemetadata:name: elasticsearchlabels:app: jaegerjaeger-infra: elasticsearch-servicespec:clusterIP: Noneselector:app: jaeger-elasticsearchports:- port: 9200name: elasticsearch- port: 9300name: transport
kubectl apply -f configmap.yamlkubectl apply -f elasticsearch-statefulset.yamlkubectl apply -f elasticsearch-service.yaml
jaeger 相关yaml文件
apiVersion: apps/v1kind: Deploymentmetadata:name: jaeger-querylabels:app: jaegerjaeger-infra: query-deploymentspec:selector:matchLabels:app: jaegerreplicas: 1strategy:type: Recreatetemplate:metadata:labels:app: jaegerjaeger-infra: query-podannotations:prometheus.io/scrape: "true"prometheus.io/port: "16686"spec:containers:- image: jaegertracing/jaeger-query:latestname: jaeger-queryargs: ["--config-file=/conf/query.yaml"]ports:- containerPort: 16686protocol: TCPreadinessProbe:httpGet:path: "/"port: 16687volumeMounts:- name: jaeger-configuration-volumemountPath: /confenv:- name: SPAN_STORAGE_TYPEvalueFrom:configMapKeyRef:name: jaeger-configurationkey: span-storage-typevolumes:- configMap:name: jaeger-configurationitems:- key: querypath: query.yamlname: jaeger-configuration-volume
apiVersion: v1kind: Servicemetadata:name: jaeger-querylabels:app: jaegerjaeger-infra: query-servicespec:ports:- name: jaeger-queryport: 80protocol: TCPtargetPort: 16686selector:jaeger-infra: query-podtype: LoadBalancer
apiVersion: apps/v1kind: Deploymentmetadata:name: jaeger-collectorlabels:app: jaegerjaeger-infra: collector-deploymentspec:selector:matchLabels:app: jaegerreplicas: 1strategy:type: Recreatetemplate:metadata:labels:app: jaegerjaeger-infra: collector-podannotations:prometheus.io/scrape: "true"prometheus.io/port: "14268"spec:containers:- image: jaegertracing/jaeger-collector:latestname: jaeger-collectorargs: ["--config-file=/conf/collector.yaml"]ports:- containerPort: 14267protocol: TCP- containerPort: 14268protocol: TCP- containerPort: 9411protocol: TCPreadinessProbe:httpGet:path: "/"port: 14269volumeMounts:- name: jaeger-configuration-volumemountPath: /confenv:- name: SPAN_STORAGE_TYPEvalueFrom:configMapKeyRef:name: jaeger-configurationkey: span-storage-typevolumes:- configMap:name: jaeger-configurationitems:- key: collectorpath: collector.yamlname: jaeger-configuration-volume
apiVersion: v1kind: Listitems:- apiVersion: v1kind: Servicemetadata:name: jaeger-collectorlabels:app: jaegerjaeger-infra: collector-servicespec:ports:- name: jaeger-collector-tchannelport: 14267protocol: TCPtargetPort: 14267- name: jaeger-collector-httpport: 14268protocol: TCPtargetPort: 14268- name: jaeger-collector-zipkinport: 9411protocol: TCPtargetPort: 9411selector:jaeger-infra: collector-podtype: ClusterIP- apiVersion: v1kind: Servicemetadata:name: zipkinlabels:app: jaegerjaeger-infra: zipkin-servicespec:ports:- name: jaeger-collector-zipkinport: 9411protocol: TCPtargetPort: 9411selector:jaeger-infra: collector-podtype: ClusterIP
kibana 相关yaml文件
apiVersion: apps/v1kind: Deploymentmetadata:name: kibana-logginglabels:name: kibana-loggingkubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcilespec:replicas: 1selector:matchLabels:name: kibana-loggingtemplate:metadata:labels:name: kibana-loggingannotations:seccomp.security.alpha.kubernetes.io/pod: 'docker/default'spec:containers:- name: kibana-loggingimage: docker.elastic.co/kibana/kibana:5.6.0resources:# need more cpu upon initialization, therefore burstable classlimits:cpu: 1000mrequests:cpu: 100menv:- name: ELASTICSEARCH_URLvalue: http://elasticsearch:9200- name: ELASTICSEARCH_USERNAMEvalue: elastic- name: ELASTICSEARCH_PASSWORDvalue: changemeports:- containerPort: 5601name: uiprotocol: TCP
apiVersion: v1kind: Servicemetadata:name: kibana-logginglabels:name: kibana-loggingkubernetes.io/cluster-service: "true"kubernetes.io/name: "Kibana"spec:type: NodePortports:- port: 5601protocol: TCPtargetPort: uinodePort: 30012selector:name: kibana-logging
三、jaeger 架构解析
四、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.端口说明
如果觉得《jaeger 链路追踪》对你有帮助,请点赞、收藏,并留下你的观点哦!