chore(e2e): Added build tag for enabling pprof tracing (#5839)
* added pprof tag and make command * updated tracing readme
This commit is contained in:
1 parent
7040374b6f
commit
828148934b
6 files changed
+54
-16
No files matched your search
@@ -66,6 +66,12 @@ install: build
|
||||
install-no-plugins: export SKIP_PLUGIN_BUILD=1
|
||||
install-no-plugins: install
|
||||
|
||||
.PHONY: build-pprof
|
||||
build-pprof: BUILD_TAGS+=pprof
|
||||
build-pprof:
|
||||
@echo "==> Building Boundary with memory pprof enabled"
|
||||
@CGO_ENABLED=$(CGO_ENABLED) BUILD_TAGS='$(BUILD_TAGS)' sh -c "'$(CURDIR)/scripts/build.sh'"
|
||||
|
||||
.PHONY: build-memprof
|
||||
build-memprof: BUILD_TAGS+=memprofiler
|
||||
build-memprof:
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
// Copyright (c) HashiCorp, Inc.
|
||||
// SPDX-License-Identifier: BUSL-1.1
|
||||
|
||||
//go:build !pprof
|
||||
// +build !pprof
|
||||
|
||||
package base
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
func StartPprof(_ context.Context) {
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
// Copyright (c) HashiCorp, Inc.
|
||||
// SPDX-License-Identifier: BUSL-1.1
|
||||
|
||||
//go:build pprof
|
||||
// +build pprof
|
||||
|
||||
package base
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
"github.com/hashicorp/boundary/internal/event"
|
||||
|
||||
_ "net/http/pprof"
|
||||
)
|
||||
|
||||
func StartPprof(ctx context.Context) {
|
||||
const op = "base.StartPprof"
|
||||
go func() {
|
||||
const addr = "localhost:6060"
|
||||
event.WriteSysEvent(ctx, op, "starting pprof HTTP server", "addr", addr)
|
||||
if err := http.ListenAndServe(addr, nil); err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||||
event.WriteSysEvent(ctx, op, "failed to serve pprof HTTP server", "error", err.Error())
|
||||
}
|
||||
}()
|
||||
}
|
||||
@@ -722,6 +722,8 @@ func (c *Command) Run(args []string) int {
|
||||
return base.CommandCliError
|
||||
}
|
||||
|
||||
base.StartPprof(c.Context)
|
||||
|
||||
if c.flagRecoveryKey != "" {
|
||||
c.Config.DevRecoveryKey = c.flagRecoveryKey
|
||||
}
|
||||
|
||||
@@ -217,6 +217,7 @@ func (c *Command) Run(args []string) int {
|
||||
c.WorkerAuthDebuggingEnabled.Store(c.Config.EnableWorkerAuthDebugging)
|
||||
|
||||
base.StartMemProfiler(c.Context)
|
||||
base.StartPprof(c.Context)
|
||||
|
||||
// Note: the checks directly after this must remain where they are because
|
||||
// they rely on the state of configured KMSes.
|
||||
|
||||
+3
-16
@@ -1,23 +1,10 @@
|
||||
# Tracing in Boundary
|
||||
|
||||
Boundary includes a small number of runtime tracing user regions, which can be used to see where Boundary spends its time during execution.
|
||||
To create a trace, we first need to expose the pprof endpoint. It is disabled by default. Exposing the pprof endpoint is as simple as importing the correct package and starting a HTTP server anywhere in Boundary:
|
||||
To create a trace, we first need to expose the pprof endpoint. It is disabled by default. Exposing the pprof endpoint is as simple as building with the `pprof` build tag or running
|
||||
|
||||
```go
|
||||
package anything
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
_ "net/http/pprof"
|
||||
)
|
||||
|
||||
...
|
||||
go func() {
|
||||
log.Println(http.ListenAndServe("localhost:6060", nil))
|
||||
}()
|
||||
...
|
||||
```
|
||||
make build-pprof
|
||||
```
|
||||
|
||||
This will create a new HTTP endpoint on `localhost:6060` of the running binary. As such, it's only accessible to the users on the same machine.
|
||||
|
||||
Reference in new issue
Block a user