django分布式链路监控之Zipkin

简介

Zipkin分布式跟踪系统;它可以帮助收集时间数据,解决在microservice架构下的延迟问题;它管理这些数据的收集和查找;Zipkin的设计是基于谷歌的Google Dapper论文。

每个应用程序向Zipkin报告定时数据,Zipkin UI呈现了一个依赖图表来展示多少跟踪请求经过了每个应用程序;如果想解决延迟问题,可以过滤或者排序所有的跟踪请求,并且可以查看每个跟踪请求占总跟踪时间的百分比

安装zipkin

这里就不详细说明安装了,直接使用docker启动一个容器

1
docker run -d -p 9411:9411 openzipkin/zipkin

使用浏览器访问:http://${IP}/zipkin即可看到Zipkin UI

Django-py-zipkin

django-py-zipkin

兼容python 2和3

安装

1
pip install django-py-zipkin

⚠️注意 因为发送数据到zipkin服务端是celery异步消息队列,这里还需要安装配置celery,相关文档见django-celery异步消息队列

项目配置

  • 添加app
1
2
3
4
INSTALLED_APPS = [
...
"django_py_zipkin"
]
  • 添加MIDDLEWARE
1
2
3
4
MIDDLEWARE = [
...
'django_py_zipkin.middleware.ZipkinMiddleware', //添加至最后
]
  • zipkin配置项
1
2
3
4
5
6
7
8
服务名称,必须配置
ZIPKIN_SERVICE_NAME = 'test-service'
是否启用跟踪,默认False
ZIPKIN_TRACING_ENABLED = True
zipkin地址
ZIPKIN_HTTP_ENDPOINT = 'http://127.0.0.1:9411/api/v1/spans'

分布式系统调用方法

1
2
3
4
5
6
7
8
9
10
import requests
from django_py_zipkin.transport import trace
with trace('test-server', request.zipkin_tracer) as context:
url = 'http://127.0.0.1:8000/test/'
traced_value = requests.get(url=url)
context.update({ // 传入需要记录的值
'response.data': traced_value.text,
'url': url,
})

验证

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器