inflearn logo
강의

講義

知識共有

非専攻者も簡単に構成するMSAサービス監視ダッシュボード

APIを介して最も簡単なトラッキングを作成する

/send 404 에러

188

Bumgu

投稿した質問数 3

0

안녕하세요,

gin 서버를 실행하고

curl -X GET localhost:8080/send

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

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

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

 

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

 

감사합니다.

docker msa open-telemetry jaeger opentracing

回答 2

0

Bumgu

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

 

image.png

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

0

July

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

 

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

 

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

 

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

0

July

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

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

0

Bumgu

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

 

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

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

0

July

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

0

Bumgu

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

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

0

July

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

0

July

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

 

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

1

Bumgu

답변 감사합니다!!

강의 슬라이드 자료

1

14

2

트랜잭션 내 Redis I/O 에 대한 궁금한점

1

12

1

virtualbox 설치시

1

39

1

실행중인 컨테이너를 모두 삭제하는 방법(윈도우버전)

0

65

2

winpty docker 설정

0

56

2

vs code설치했는데도, easy docker 파일 열기에서 vs code 아이콘은 안보여요

0

41

1

유비쿼터스 언어와 class name

0

42

1

aws 계정 생성 질문

1

64

1

verify.sh 4단계 실패 — Jenkins 컨테이너에서 127.0.0.1:6443 connection refused

0

59

2

섹션 2 - 9강. API 관련 질문

0

69

2

11강 [실습] Docker로 MySQL1 분만에 실행하기

0

84

2

11강 [실습] Docker로 MySQL1 분만에 실행하기

0

63

2

장애 격리 관련해서 궁금한 부분이 있어요

0

55

2

Github repo 404 not found

0

53

1

코드 깃허브는 없을까요?

1

64

2

4. ArgoCD설치---Base64 디코딩 부분만 PowerShell 방식으로 바꾸어서 설치 필요

0

56

1

강의 기다리고 있습니다!

0

53

0

@Modifying에 관하여

1

69

1

Chat URL 시작이 http로 시작

0

90

3

24강 소스코드 관련

0

56

1

9월 8일 세션 진행한 거는 없었을까요

0

78

1

미션1 진행방법 관련

1

81

1

스웨거 접속이 안되는데 확인 부탁드립니다.

0

63

1

안녕하세요 도커실행과 관련해서 질문드립니다.

0

99

1