Golang Agent 0.1.9

2022-04-27

베타

버그

panic 상황에서 웹 트랜잭션 정보가 수집안되는 오류를 수정했습니다.

  • net/http

  • github.com/labstack/echo

  • github.com/gorilla/mux

  • github.com/go-gonic/gin

    NOTE

    recover()를 통해서 오류 정보를 수집하지만, 다시 동일한 panic를 발생시킵니다.

    defer func() {

        // panic

		x := recover()
		var err error = nil
		if x != nil {
			err = fmt.Errorf("Panic: %v", x)

			// panic 정보 수집
			trace.Error(ctx, err)
			err = nil
		}

		...

		// 다시 panic 발생

		if x != nil {
			panic(x)
		}
	}()

업데이트

http status code를 수집합니다.

400 이상의 status code는 오류메세지로 수집합니다.

github.com/labstack/echo

echo/v4 를 지원합니다.

기존 echo/whatapecho 패키지 대신에 echo/v4/whatapecho를 사용합니다.

import (
    "github.com/labstack/echo"

    "github.com/whatap/go-api/trace"
    "github.com/whatap/go-api/instrumentation/github.com/labstack/echo/v4/whatapecho"
)
echo의 HTTPErrorHandler Wrapper를 추가합니다.

HTTPErrorHandler를 통해서 오류 정보를 추가로 수집합니다.

echo.Context.Error() 함수가 호출될 때 오류 정보를 수집합니다. Recover 미들웨어가 처리한 panic 정보를 수집합니다.

whatapecho 미들웨어가 마지막으로 실행 되면 HTTPErrorHandler 정보를 최대한 많이 수집할 수 있습니다. 미들웨어 등록을 최상단에서 설정하고, Pre() 함수를 통해 등록합니다.

func main() {
    ...

    e := echo.New()
    //echo DefaultHTTPErrorHandler wrapper
	e.HTTPErrorHandler = whatapecho.WrapHTTPErrorHandler(e.DefaultHTTPErrorHandler)
	e.Pre(whatapecho.Middleware())
	e.Use(middleware.Recover())

	...
}

로그 출력

debug 옵션을 설정하면 모니터링 관련된 로그를 출력합니다.

debug=true

트랜잭션, DB 커넥션, Sql 실행, Http 외부 호출에 대한 로그를 추가했습니다.

Http Method 를 지정해서 수집을 제외할 수 있는 설정 추가 했습니다.

지정한 uri 에 대해서 특정 HTTP Method로 요청되는 트랜잭션의 수집을 제외합니다.
콤마(,) 구분으로 여러개의 uri, Method를 등록할 수 있습니다. 대소문자 구분은 없습니다.

ignore_http_method_urls

Default : ""
Type : String

ignore_http_method

Default : ""
Type : String

ignore_http_method_urls=/index, /sql/select
ignore_http_method=options, connect