{
"nbs.agent_enabled" : true,
"nbs.license_key" : "666-666-666",
"nbs.log_file_name" : "/home/liqiang/workspace/cpp/test/beacon/agent.log",
"nbs.audit" : true,
"nbs.max_log_count": 5,
"nbs.max_log_size": 10,
"nbs.ssl" : false,
"nbs.savecount" : 2,
"nbs.host" : "http://192.168.1.254",
"nbs.port" : 8081
}
应用拓扑 当一个账号下存在多个应用的相互调用关系时, 可以利用API追踪应用之间的调用关系。
按照上述操作后,在报表内就会产生“调用者” -> "被调用者" 的拓扑图。
//流程
//1.创建一个外部调用组件
//2.调用ComponentCreateTrackId生成跨应用追踪id(字符串)
//3.发送id到server端
//3.1如果外部调用为私有rpc协议,请自行传输这个id
//3.2如果是http(s)请求,将这个id作为http头的 "X-Tingyun-Id" 字段发送
//4.如果http应答头里携带”X-Tingyun-Tx-Data“,调用ComponentSetTxData完成跨应用追踪
//需要的API:
int ComponentCreateTrackId(TComponentId component, char *idbuffer, int buffersize);
void ComponentSetTxData(TComponentId component, const char *tx_data);
//调用过程
//1.
TComponentId external == CreateExternalComponent(action, "http://192.168.1.253/servermethod");
//2.
char cross_id[1024] = {0};
ComponentCreateTrackId(external, cross_id, sizeof(cross_id) - 1);
//添加cross_id到http请求头 (如果是http(s))
...
//3.
//发送数据到服务器
...
//应答完成后
//取应答头里的 ”X-Tingyun-Tx-Data“
...
//4.
ComponentSetTxData(external, tingyun_txdata);
ComponentFinish(external);
//所需接口
void ActionSetTrackId(TActionId action, const char *TrackId);
const char * ActionGetTxData(action);
char track_id[1024] = {0};
//1.解析出客户端传过来的跨应用追踪ID
...
//2.创建事务
TActionId action = CreateAction(appid, "/servermethod");
//3.
ActionSetTrackId(action, track_id);
//Action其他处理过程
//取跨应用追踪数据,发送给调用方
const char *tx_data = ActionGetTxData(action);
//将tx_data添加到http应答头
//发送http应答头
...
//发送http数据
ActionDestroy(action);
跨应用追踪 当产生拓扑关系的应用过程性能超过阈值时,会产生慢过程跟踪数据,同时在慢过程跟踪数据内会记录调用者和被调用者的详细追踪信息。 通过点击慢过程跟踪图表内的链接,可以跳转到被调用者的详细追踪数据。