现在我想实现这么一个功能:在k8s环境中部署了一个具有多个微服务的系统,现在我想对其进行链路追踪,追踪后的数据格式如下所示:
{
"req_id": "trace1234normal",
"spans": [
{
"service_name": "订单服务 (A)",
"operation_name": "处理订单(正常)",
"request": {
"method": "POST",
"url": "/order/submit",
"headers": {
"Content-Type": "application/json"
},
"body": {
"user_id": 102,
"items": [{"item_id": 56, "quantity": 2}],
"address": "用户地址信息"
}
},
"response": {
"status_code": 200,
"body": {
"order_id": 3001,
"message": "订单处理成功"
}
},
"dependencies": [
{
"dependent_service": "库存服务 (B)",
"status": "success"
},
{
"dependent_service": "支付服务 (C)",
"status": "success"
}
]
},
{
"service_name": "库存服务 (B)",
"operation_name": "检查库存",
"request": {
"method": "GET",
"url": "/inventory/check",
"headers": {},
"body": {
"item_id": 56
}
},
"response": {
"status_code": 200,
"body": {
"item_id": 56,
"available_quantity": 10
}
}
},
{
"service_name": "支付服务 (C)",
"operation_name": "处理支付",
"request": {
"method": "POST",
"url": "/payment/process",
"headers": {
"Content-Type": "application/json"
},
"body": {
"order_id": 3001,
"amount": 100
}
},
"response": {
"status_code": 200,
"body": {
"payment_id": 4001,
"status": "支付成功"
}
}
}
]
}
也就是获取到一个请求所涉及到各个微服务的请求和响应的详细内容。
要求用非侵入式的方案进行实现,不修改原有项目的代码。