본문으로 건너뛰기

Go Agent v0.1.14

2022년 12월 14일

  • Fixed UDP 서버가 중지된 상태에서 CPU 사용량이 증가하는 현상 수정

    UDP 서버가 중지된 상태(whatap-agent 서비스가 중지)에서 Go 모니터링을 적용한 애플리케이션의 CPU 부하가 증가합니다. UDP 서버 접속 및 종료 처리가 반복되면서 UDP 연결이 여러 개 유지되어 CPU 사용량이 증가하였습니다.

  • New k8s.io/client-go/kubernetes 라이브러리 지원

    참조 예제

    golang
    import (
    "k8s.io/client-go/rest"
    )

    func main() {
    // Init whatap trace
    config := make(map[string]string)
    trace.Init(config)
    defer trace.Shutdown()

    ...

    config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
    if err != nil {
    return nil, err
    }

    // whatap roundTripper 함수를 설정합니다.
    config.WrapTransport = wRT.WrapRoundTripper()

    clientset, err := kubernetes.NewForConfig(config)
    if err != nil {
    return nil, err
    }

    deploymentsClient := clientset.AppsV1().Deployments(conf.Server.Namespace)

    ...
    }
  • New github.com/gofiber/fiber/v2 라이브러리 지원

    참조 예제

    golang
    import (
    "github.com/whatap/go-api/instrumentation/github.com/gofiber/fiber/v2/whatapfiber"
    )

    func main() {
    // Init whatap trace
    config := make(map[string]string)
    trace.Init(config)
    defer trace.Shutdown()

    ...

    r := fiber.New(fiber.Config{
    StrictRouting: true,
    Views: engine,
    })

    r.Use(recover.New())

    // whatapfiber의 middleware를 등록합니다.
    r.Use(whatapfiber.Middleware())

    ...
    }
  • New github.com/valyala/fasthttp 라이브러리 지원

    참조 예제

    golang
    import (
    "github.com/whatap/go-api/instrumentation/github.com/valyala/fasthttp/whatapfasthttp"
    )

    func main() {
    // Init whatap trace
    config := make(map[string]string)
    trace.Init(config)
    defer trace.Shutdown()

    ...

    r := fiber.New(fiber.Config{
    StrictRouting: true,
    Views: engine,
    })

    r.Use(recover.New())

    // 래퍼 (Wrapper) 함수 whatapfasthttp.Func을 사용합니다.
    r.GET("/", whatapfasthttp.Func(func(ctx *fasthttp.RequestCtx) {
    ...
    }))
    r.GET("/hello/{name}", whatapfasthttp.Func(func(ctx *fasthttp.RequestCtx) {
    fmt.Fprintf(ctx, "Hello, %s!\n", ctx.UserValue("name"))
    ctx.SetContentType("text/html;charset=utf8")
    }))
    }