강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của bumgu
bumgu

câu hỏi đã được viết

Bảng điều khiển giám sát dịch vụ MSA có thể được cấu hình dễ dàng ngay cả với những người không chuyên ngành

Tạo theo dõi đơn giản nhất thông qua API

/send 404 에러

Viết

·

148

0

안녕하세요,

gin 서버를 실행하고

curl -X GET localhost:8080/send

명령어를 실행하면 404 page not found 에러가 나옵니다.

어떤 부분이 문제인지 모르겠어 깃허브 주소 남깁니다.

확인해주시면 감사하겠습니다.

 

https://github.com/bonzonkim/trace-in-go

 

감사합니다.

dockermsaopen-telemetryjaegeropentracing

Câu trả lời 2

0

Bumgu님의 프로필 이미지
Bumgu
Người đặt câu hỏi

안녕하세요!
말씀하신 NewRouter를 호출해서 서버 구동 시 router path도 확인하고 get요청을 했고 Success가 응답되는것 까지 확인했습니다. 하지만 Jaeger UI에서 등록한 서비스가 나오지 않습니다.

 

image.png

코드상 놓친부분이 있을까요? 도커 명령어는 docker run -d -p6831:6831/udp -p16686:16686 --name myJaeger jaegertracing/all-in-one:latest 로 실행했습니다.

July님의 프로필 이미지
July
Người chia sẻ kiến thức

안녕하세요. 질문남겨주셔서 감사합니다!!

 

서비스가 등록이 되지 않는 이유는 다양하게 존재 할 수 있습니다. 대표적으로 접속을 시도하는 url이 잘못되었으면 서비스가 등록이 안되는 경우가 있고

 

추가적으로 조금 시간이 소요가 되는 경우도 있습니다. 1분 내지겠지만

 

코드상에서는 큰 이상한 부분이 보이지 금일 저녁에 한번 확인후에 다시 댓글 추가하겠습니다.

July님의 프로필 이미지
July
Người chia sẻ kiến thức

구체적인 부분은 한번 추가로 확인을 해봐야 하겠지만

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가 처리 가능하게 수정해보시면 될 꺼 같아요.

Bumgu님의 프로필 이미지
Bumgu
Người đặt câu hỏi

안녕하세요 빠른 답변 감사드립니다.

 

우선 말씀 하신대로 함수를 변경해 실행해보았지만 여전히 서비스에는 등록이 되지 않았습니다.

image.png

사용한 코드입니다

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()으로 분리해서 재사용 한다고 하셨는데, 제가 작성한 코드와 강의속 코드에 다른부분이 있을까요??

July님의 프로필 이미지
July
Người chia sẻ kiến thức

음 latest 버전이라서 최신 버전만을 사용할텐데 한번 추가로 확인해보도록 하겠습니딘.

Bumgu님의 프로필 이미지
Bumgu
Người đặt câu hỏi

이미지 버전의 문제였습니다

docker 실행시 :latest가 아닌 :1.6.0으로 실행시 정상적으로 등록됩니다.

July님의 프로필 이미지
July
Người chia sẻ kiến thức

최신 버전에서 추가적으로 이미지가 변경된 부분이 있었나보네요 ㅜ 확인해 주셔서 감사합니다!!

0

July님의 프로필 이미지
July
Người chia sẻ kiến thức

안녕하세요 코드상에서 라우터들은 정의 하셨는데 코드상에서 NewRouter를 호출하지 않으셔서 발생하시는거 같습니다.

 

서버가 구동될때 어떤 router path가 등록되는지 로그에 찍히게 되는데 해당부분 확인해보시면 될 꺼 같습니다!!

Bumgu님의 프로필 이미지
Bumgu
Người đặt câu hỏi

답변 감사합니다!!

Hình ảnh hồ sơ của bumgu
bumgu

câu hỏi đã được viết

Đặt câu hỏi