작성
·
62
0
안녕하세요,
gin 서버를 실행하고
curl -X GET localhost:8080/send
명령어를 실행하면 404 page not found
에러가 나옵니다.
어떤 부분이 문제인지 모르겠어 깃허브 주소 남깁니다.
확인해주시면 감사하겠습니다.
https://github.com/bonzonkim/trace-in-go
감사합니다.
답변 2
0
안녕하세요!
말씀하신 NewRouter를 호출해서 서버 구동 시 router path도 확인하고 get요청을 했고 Success가 응답되는것 까지 확인했습니다. 하지만 Jaeger UI에서 등록한 서비스가 나오지 않습니다.
코드상 놓친부분이 있을까요? 도커 명령어는 docker run -d -p6831:6831/udp -p16686:16686 --name myJaeger jaegertracing/all-in-one:latest
로 실행했습니다.
구체적인 부분은 한번 추가로 확인을 해봐야 하겠지만
func newRootSpan(name string, c *gin.Context) opentracing.Span {
tracer := opentracing.GlobalTracer()
spanCtx, _ := tracer.Extract(opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier(c.Request.Header))
sendSpan := tracer.StartSpan(name, ext.RPCServerOption(spanCtx))
defer sendSpan.Finish()
return sendSpan
}
해당 코드에서 defer와 sendSpan을 return하는 부분에서 문제가 생길 수 있을꺼 같네요.
현재 API가 마무리 되지 않는 상태에서 span을 finish를 하는걸로 보입니다.
해당 코드를 동작시키기 보다는
func (s *sample) send(c *gin.Context) {
fmt.Println("Send")
tracer := opentracing.GlobalTracer()
spanCtx, _ := tracer.Extract(opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier(c.Request.Header))
sendSpan := tracer.StartSpan("send_span", ext.RPCServerOption(spanCtx))
defer sendSpan.Finish()
c.JSON(http.StatusOK, "Success Sample Span")
}
이런식으로 API가 마무리 된 이후에 Finish가 처리 가능하게 수정해보시면 될 꺼 같아요.
안녕하세요 빠른 답변 감사드립니다.
우선 말씀 하신대로 함수를 변경해 실행해보았지만 여전히 서비스에는 등록이 되지 않았습니다.
사용한 코드입니다
func (s *Router) send(c gin.Context) {
fmt.Println("=================Send=================")
tracer := opentracing.GlobalTracer()
spanCtx, _ := tracer.Extract(opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier(c.Request.Header))
sendSpan := tracer.StartSpan("send_span", ext.RPCServerOption(spanCtx))
defer sendSpan.Finish()
fmt.Println("=================Send1=================")
c.JSON(http.StatusOK, "Success Sample Span")
fmt.Println("=================Send2=================")
}
혹시 도커 이미지 버전의 차이가 있을까요??
그리고 강의 섹션4 6강 3분50초쯤 send()
안의 트레이싱 로직을 newRootSpan()
으로 분리해서 재사용 한다고 하셨는데, 제가 작성한 코드와 강의속 코드에 다른부분이 있을까요??
안녕하세요. 질문남겨주셔서 감사합니다!!
서비스가 등록이 되지 않는 이유는 다양하게 존재 할 수 있습니다. 대표적으로 접속을 시도하는 url이 잘못되었으면 서비스가 등록이 안되는 경우가 있고
추가적으로 조금 시간이 소요가 되는 경우도 있습니다. 1분 내지겠지만
코드상에서는 큰 이상한 부분이 보이지 금일 저녁에 한번 확인후에 다시 댓글 추가하겠습니다.