pprofetheus is a collector for Prometheus that collects CPU profiling data for the current process and exports them as metrics. It can be used to monitor, visualize, and alert on profiling data from any Go process that imports pprofetheus and exports metrics via Prometheus.
In order to use pprofetheus in your Prometheus-enabled Go application, you just need to
go get github.com/travelaudience/pprofetheus
and then import the same package, and set up the collector with Prometheus in your code, e.g. like this:
cpuProfileCollector, err := pprofetheus.NewCPUProfileCollector()
if err != nil {
/* handle error */
}
prometheus.MustRegister(cpuProfileCollector)
cpuProfileCollector.Start()
After these changes, your application will export the Prometheus metrics
pprof_cpu_time_used_ms
, pprof_cpu_time_used_cum_ms
, pprof_cpu_started
and
pprof_cpu_stopped
.
pprof_cpu_time_used_ms
contains the amount of milliseconds the program spent
in the function provided in the label function
.
pprof_cpu_time_used_cum_ms
contains the cumulated amount of milliseconds
the program spent in the function provided in the label function
. This means
that the amount of time spent in a function is accounted both for the function
that spent the time and all functions up the call stack. The cumulated time
thus includes the total time that a function spent, including all other
functions that were called by that function.
pprof_cpu_started
counts how often the Start
method has been called on the
collector, while pprof_cpu_stopped
counts how often the Stop
method has
been called on the collector.
Please see the file LICENSE for licensing information.
The files in the subdirectory internal
are subject to a separate license. See
internal/LICENSE for licensing information.