Advanced debugging

Configure Go profiling for the GitOps Toolkit controllers.

This guide covers more advanced debugging topics such as collecting runtime profiling data from GitOps Toolkit components.

As a user, this page normally should be a last resort, but you may be asked by a maintainer to share a collected profile to debug e.g. performance issues.

Pprof

The GitOps Toolkit components serve pprof runtime profiling data on their metrics HTTP server (default :8080).

Endpoints

EndpointPath
Index/debug/pprof/
CPU profile/debug/pprof/profile
Symbol/debug/pprof/symbol
Trace/debug/pprof/trace

Collecting a profile

To collect a profile, port-forward to the component’s metrics endpoint and collect the data from the endpoint of choice:

$ kubectl port-forward -n <namespace> deploy/<component> 8080
$ curl -Sk -v http://localhost:8080/debug/pprof/heap > heap.out

The collected profile can be analyzed using go, or shared with one of the maintainers.

Resource usage

As kubectl top gives a limited (and at times inaccurate) overview of resource usage, it is often better to make use of the Grafana metrics to gather insights. See Flux Prometheus metrics for a guide on how to visualize this data with a Grafana dashboard.