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)
}
}()
업데이트
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