分布式跟踪系统Jaeger(四):使用Kubernetes的CronJob进行Jaeger的服务依赖分析

2017-12-06 阅读: jaeger OpenTracing Kubernetes

之前我们已经将Jaeger部署到了Kubernetes上,并且对Jaeger官方的示例应用HotROD进行了分布式跟踪。 我们使用Elasticsearch作为Jaeger的后端存储。借助Jaeger我们可以很容易的进行微服务架构应用的服务链调用追踪,进一步实现应用的性能分析和延迟优化。

Jaeger还提供了一个spark job从存储中收集span数据,分析服务间的连接和依赖,并将分析结果持久化到后端存储中。jaeger query就可以查询到服务的依赖,jaeger ui的Dependencies页面就可以显示服务之间的依赖关系。

本篇我们将使用Kubernetes的CronJob调度执行jaeger的服务依赖分析任务。关于Kubernetes的CronJob可以查看Kubernetes的Cron Job以及Kubernetes的文档Cron Jobs

下面在kube-system这个命名空间中创建如下的CronJob:

---
kind: CronJob
apiVersion: batch/v2alpha1
metadata:
  labels:
    app: jaeger
  name: jaeger-spark-job
  namespace: kube-system
spec:
  schedule: "0 * * * *"
  concurrencyPolicy: Forbid
  successfulJobsHistoryLimit: 10
  failedJobsHistoryLimit: 10
  jobTemplate:
    spec: 
      template:
        metadata:
          labels:
            app: jaeger
        spec:
          containers:
          - name: jaeger-spark-job
            # 此处镜像应替换成本地私有镜像库中的镜像
            image: jaegertracing/spark-dependencies:latest
            imagePullPolicy: IfNotPresent
            env:
              - name: STORAGE
                value: elasticsearch
              - name: ES_NODES
                value: "http://elasticsearch:9200"
            resources:
              requests:
                memory: "1536Mi"
                cpu: "250m"
              limits:
                memory: "1536Mi"
                cpu: "500m"
          restartPolicy: OnFailure

上面创建了一个名称为jaeger-spark-job的cronjob,并将在每小时被调度执行一次。 每次执行的时候会分析基于UTC时间分析当天的数据。

cronjob被调度执行后就会在ES中创建一个名称为jaeger-dependencies-yyyy-MM-dd的索引。 此时在jaeger UI的的dependencies页面就可以看到具体服务依赖图。

参考

标题:分布式跟踪系统Jaeger(四):使用Kubernetes的CronJob进行Jaeger的服务依赖分析
本文链接:https://blog.frognew.com/2017/12/opentracing-jaeger-4.html
转载请注明出处。

目录