{
"nbs.app_name" : "go app",
"nbs.agent_enabled" : true,
"nbs.license_key" : "999-999-999",
"nbs.log_file_name" : "agent.log",
"nbs.audit" : true,
"nbs.max_log_count": 5,
"nbs.max_log_size": 10,
"nbs.ssl" : true,
"nbs.savecount" : 2
}
应用拓扑
当一个账号下存在多个应用的相互调用关系时, 可以利用API追踪应用之间的调用关系。 调用者 CreateTrackId, 被调用者SetTrackId, 在报表内就会产生“调用者” -> "被调用者" 的拓扑图。
url := "thrift://192.168.1.5/login"
c := tingyun.GetAction(w).CreateExternalComponent(url, "thrift.login")
//调用CreateTrackId生成调用信息
track := c.CreateTrackId()
//将track传递给thrift服务器
thriftLogin(url, track)
//
c.Finish()
//从thrift数据内获取track, 并SetTrackId, 生成调用关系
track := getTrack(r)
tingyun.GetAction(w).SetTrackId(track)
url := "http://192.168.1.5/extern"
c := tingyun_beego.GetAction(w).CreateExternalComponent(url, "main.Extern")
//产生一个跨应用追踪ID,传递给被调用端
track_id := c.CreateTrackId()
result, response, err := HttpGet(url, map[string]string{"X-Tingyun-Id": track_id}) if response != nil {
if tx_data := response.Header.Get("X-Tingyun-Tx-Data"); len(tx_data) > 0 { //外部调用返回txData,调用Component.SetTxData接口保存 c.SetTxData(tx_data)
}
]
//
c.Finish()
//读取http头里的跨应用追踪ID
if track_id := r.Header.Get("X-Tingyun-Id"); len(track_id) > 0 {
//调用Action.SetTrackId接口保存追踪ID tingyun_beego.GetAction(w).SetTrackId(track_id)
}
//...事务处理过程
//http应答,取当前事务的性能数据
if tx_data := tingyun_beego.GetAction(w).GetTxData(); len(tx_data) > 0 {
//将数据写入http响应头
w.Header().Set("X-Tingyun-Tx-Data", tx_data)
}
w.WriteHeader(200)
w.Write(result)
跨应用追踪
当产生拓扑关系的应用过程性能超过阈值时,会产生慢过程跟踪数据,同时在慢过程跟踪数据内会记录调用者和被调用者的详细追踪信息。
通过点击慢过程跟踪图表内的链接,可以跳转到被调用者的详细追踪数据。