You are viewing documentation for Flux version: 2.1

Version 2.1 of the documentation is no longer actively maintained. The site that you are currently viewing is an archived snapshot. For up-to-date documentation, see the latest version.

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.