From 492a62e361b57bd852e8dd0fd92108c9f6cd7223 Mon Sep 17 00:00:00 2001 From: Vladislav Byrgazov Date: Fri, 16 Aug 2024 10:39:23 +0500 Subject: [PATCH] Added pprof config Signed-off-by: Vladislav Byrgazov --- README.md | 2 ++ internal/imports/imports_linux.go | 1 + main.go | 8 ++++++++ 3 files changed, 11 insertions(+) diff --git a/README.md b/README.md index 7f91923..830a851 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,8 @@ docker build . * `NSM_FEDERATES_WITH` - Name of the federated domain (default: "k8s.nsm") * `NSM_TRUST_DOMAIN` - Name of the trust domain (default: "docker.nsm") * `NSM_LOG_LEVEL` - Log level (default: "INFO") +* `NSM_PPROF_ENABLED` - is pprof enabled (default: "false") +* `NSM_PPROF_LISTEN_ON` - pprof URL to ListenAndServe (default: "localhost:6060") # Testing diff --git a/internal/imports/imports_linux.go b/internal/imports/imports_linux.go index 41ae4f5..72ede7c 100644 --- a/internal/imports/imports_linux.go +++ b/internal/imports/imports_linux.go @@ -54,6 +54,7 @@ import ( _ "github.com/networkservicemesh/sdk/pkg/tools/interdomain" _ "github.com/networkservicemesh/sdk/pkg/tools/log" _ "github.com/networkservicemesh/sdk/pkg/tools/log/logruslogger" + _ "github.com/networkservicemesh/sdk/pkg/tools/pprofutils" _ "github.com/networkservicemesh/sdk/pkg/tools/sandbox" _ "github.com/networkservicemesh/sdk/pkg/tools/spiffejwt" _ "github.com/networkservicemesh/sdk/pkg/tools/spire" diff --git a/main.go b/main.go index 73da663..490645e 100644 --- a/main.go +++ b/main.go @@ -69,6 +69,7 @@ import ( "github.com/networkservicemesh/sdk/pkg/tools/interdomain" "github.com/networkservicemesh/sdk/pkg/tools/log" "github.com/networkservicemesh/sdk/pkg/tools/log/logruslogger" + "github.com/networkservicemesh/sdk/pkg/tools/pprofutils" "github.com/networkservicemesh/sdk/pkg/tools/spiffejwt" "github.com/networkservicemesh/sdk/pkg/tools/spire" "github.com/networkservicemesh/sdk/pkg/tools/token" @@ -108,6 +109,8 @@ type Config struct { FederatesWith string `default:"k8s.nsm" desc:"Name of the federated domain" split_words:"true"` TrustDomain string `default:"docker.nsm" desc:"Name of the trust domain" split_words:"true"` LogLevel string `default:"INFO" desc:"Log level" split_words:"true"` + PprofEnabled bool `default:"false" desc:"is pprof enabled" split_words:"true"` + PprofListenOn string `default:"localhost:6060" desc:"pprof URL to ListenAndServe" split_words:"true"` } // Process prints and processes env to config @@ -174,6 +177,11 @@ func main() { } logrus.SetLevel(level) + // Configure pprof + if config.PprofEnabled { + go pprofutils.ListenAndServe(ctx, config.PprofListenOn) + } + // ******************************************************************************** log.FromContext(ctx).Infof("executing phase 2: run vpp and get a connection to it") // ********************************************************************************