本文へスキップ

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)関数whatapfasthtp.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")
    }))
    }