Python - APM 链路跟踪探针之DDtrace

Python - APM 链路跟踪探针之DDtrace

Max.Bai
2021-03

APM (Application Performance Management),也叫链路跟踪系统,比较熟悉的有Pinpoint, SkyWalking,Zipkin等,系统简单来说由负责收集数据的探针和数据展示分析两部分组成,这个DDtrace就是python的探针。
DDtrace 是DataDog开源的python探针,官网地址 https://docs.datadoghq.com/tracing/setup_overview/compatibility_requirements/python/, 兼容大部分WEB框架,Flask,Django等等。

这里就测试一个Flask的Demo,看看收集到什么数据。

 

测试的方法是写一个flask demo 引入ddtrace,看如何工作,改动是不是很大,同时开另外一个flask数据收集器,让ddtrace把数据发到数据收集器,打印出来看看。


0. 安装

pip install ddtrace


1. 被监控Flask代码

内容简单,根路由,调用另外方法,并返回字符串

# ddtrace test    flaskserver.py
# 设置ddtrace
from ddtrace import patch_all, tracer

patch_all()
 # 数据收集服务器地址配置
tracer.configure(
    hostname="localhost",
    port="5001",
)


# flask 服务代码
import time
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    a = call_other_function_test()   # 调用非路由方法
    return a

@tracer.wrap()       # 非路由方法需要添加这个才可以收集数据
def call_other_function_test():
    print('call test')
    time.sleep(0.5)
    ab=5/0
    return "hello world, from other func!"



if __name__ == '__main__':
    app.run()


2. 数据收集服务器代码

很简单,就是要实现指定的路由地址就可以,我测试的版本是下面2个路由,内容一样的,就是打印收的数据。

/v0.4/traces
/v0.3/traces

# dataserver.py

from flask import Flask, request
import json
import msgpack

app = Flask(__name__)


@app.route("/v0.4/traces", methods=["GET", "POST", "PUT", "DELETE"])
def hello_world():
    print("0.4 data")
    print(request.headers)
    # print(request.get_data(as_text=True))
    # data = json.loads(request.get_data())
    data = msgpack.loads(request.get_data())
    # print(data)
    for item in data:
        print(item)

    return "Hello, World!"


@app.route("/v0.3/traces", methods=["GET", "POST", "PU
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值