skywalking根據文本信息找到對應的請求

在定位問題的時候,有時候需要找到導致問題出現的那個請求,比如下單。但是隻有訂單號,怎麼去找呢? 目前我們一般是根據下單時間,然後再根據時間去找對應的請求,但是請求很多,需要一個一個打開請求內容去定位該訂單的下單請求。 本文使用腳本的方式方便快速定位到對應的請求

根據時間和接口名稱獲取批量請求

  • 獲取批量請求
curl 'http://sky.fy.qq.com/graphql' \
  -H 'Content-Type: application/json;charset=UTF-8' \
  --data-raw '{"query":"query queryTraces($condition: TraceQueryCondition) {\n  traces: queryBasicTraces(condition: $condition) {\n    data: traces {\n      key: segmentId\n      endpointNames\n      duration\n      start\n      isError\n      traceIds\n    }\n    total\n  }}","variables":{"condition":{"queryDuration":{"start":"2021-10-22 1708","end":"2021-10-22 1723","step":"MINUTE"},"traceState":"ALL","paging":{"pageNum":1,"pageSize":15,"needTotal":true},"queryOrder":"BY_START_TIME","endpointName":"/userc/v1/user/address/addAddress"}}}' > sky_response.txt
  • 從結果中提取traceId
jq '.data.traces.data[] | .traceIds[]' sky_response.txt  | sed 's/"//g' > sky_trace.txt

獲取請求鏈路信息

  • 獲取單個請求的詳細信息
curl -X POST 'http://sky.fy.qq.com/graphql' \
-H 'Content-Type: application/json' \
--data-raw '{
    "query": "query queryTrace($traceId: ID\u0021) {trace: queryTrace(traceId: $traceId) {spans {traceId tags {key value}}}}",
    "variables": {
        "traceId": "04557c8a528142bbaf0f996ac1250484.508.16348946392203935"
    }
}' > one_trace.txt
  • 過濾詳細信息
grep orderNo one_trace.txt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章