aws xray и golang http call
Я пытаюсь использовать awx xray в моем приложении go, которое выполняет http-вызов службы. Я просто следовал этому и не уверен, что что-то пропустил, https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-go-httpclients.html
Я делаю http-вызов так:
payloadStr, _ := json.Marshal(dxPayload)
fmt.Println("size: ", int(unsafe.Sizeof(bytes.NewBuffer(payloadStr))))
clambda = &http.Client{}
//-------ADDED XRAY HERE-------//
xray.Client(clambda)
reqLambda, errReq := http.NewRequest("POST", lambdaurl, bytes.NewBuffer(payloadStr))
if errReq != nil {
log.Fatal("Request Error: ", errReq)
return
}
reqLambda.Header.Add("accept", "application/json;v=1")
reqLambda.Header.Add("cach-control", "no-cache")
reqLambda.Header.Add("content-type", "application/json")
reqLambda.Header.Add("authorization", "Bearer " + devexToken.AccessToken)
respLambda, errResp := clambda.Do(reqLambda)
if errResp != nil {
log.Fatal("Status Response Error ", errResp)
return
} else {
}
и в моем main.go
файл, у меня есть это в func init()
func init() {
pConfig = createpConfig()
//aws xray config
ss, err := sampling.NewLocalizedStrategyFromFilePath("xray.json")
if err != nil {
panic(err)
}
xray.Configure(xray.Config{
SamplingStrategy: ss,
})
}
и мой xray.json
конфиг выглядит так:
{
"version": 1,
"rules": [
{
"description": "ehb",
"service_name": "ehb-kafka-push",
"http_method": "*",
"url_path": "/private/api/calllambda/*",
"fixed_target": 0,
"rate": 0.85
}
],
"default": {
"fixed_target": 1,
"rate": 0.1
}
}
теперь, когда я запускаю свое приложение... мои вызовы API делают это, но я ничего не вижу в AWS xray и на моем xray daemon локально, я вижу это только в журналах:
2018-08-26T18:45:04-07:00 [Info] Initializing AWS X-Ray daemon 2.1.3
2018-08-26T18:45:04-07:00 [Debug] Listening on UDP 127.0.0.1:2000
2018-08-26T18:45:04-07:00 [Info] Using buffer memory limit of 163 MB
2018-08-26T18:45:04-07:00 [Info] 2608 segment buffers allocated
2018-08-26T18:45:04-07:00 [Debug] Fetch region us-east-1 from commandline argument
2018-08-26T18:45:04-07:00 [Info] Using region: us-east-1
2018-08-26T18:45:04-07:00 [Debug] ARN of the AWS resource running the daemon:
2018-08-26T18:45:04-07:00 [Debug] No Metadata set for telemetry records
2018-08-26T18:45:04-07:00 [Debug] Using Endpoint: https://xray.us-east-1.amazonaws.com
2018-08-26T18:45:04-07:00 [Debug] Telemetry initiated
2018-08-26T18:45:04-07:00 [Debug] Using Endpoint: https://xray.us-east-1.amazonaws.com
2018-08-26T18:45:04-07:00 [Debug] Batch size: 50
2018-08-26T18:46:04-07:00 [Debug] Skipped telemetry data as no segments found
2018-08-26T18:47:04-07:00 [Debug] Skipped telemetry data as no segments found
2018-08-26T18:48:04-07:00 [Debug] Skipped telemetry data as no segments found
что мне здесь не хватает? кажется, что все работает, за исключением части Xray, почему я не получаю никаких данных или ошибок?
1 ответ
В лямбда-сценарии Lambda отвечает за создание сегментов, а AWS X-Ray Golang SDK создает только подсегменты, а затем испускает их. Основываясь на вашем фрагменте кода, вы не нашли код, который вы используете в своем приложении с API-интерфейсами X-Ray Go SDK для генерации подсегментов внутри функций Lambda. Здесь я приложил ссылку, где вы можете найти, как инструмент вашего приложения: lambdadocs