cw-infra-apps/grafana/charts/feature-profiling/README.md
2025-05-28 10:01:42 +03:00

6.5 KiB

feature-profiling

Version: 1.0.0 AppVersion: 1.0.0 Gathers profiles from eBPF, Java, and pprof sources.

The Profiling feature enables the collection of profiles from the processes running in the cluster.

Testing

This chart contains unit tests to verify the generated configuration. The hidden value deployAsConfigMap will render the generated configuration into a ConfigMap object. While this ConfigMap is not used during regular operation, you can use it to show the outcome of a given values file.

The unit tests use this ConfigMap to create an object with the configuration that can be asserted against. To run the tests, use helm test.

Be sure perform actual integration testing in a live environment in the main k8s-monitoring chart.

Maintainers

Name Email Url
petewall pete.wall@grafana.com

Source Code

Values

eBPF

Key Type Default Description
ebpf.annotationSelectors object {} Select pods to profile based on pod annotations. Example: k8s.grafana.com/profile: "true" will select pods with the annotation k8s.grafana.com/profile="true". Example with multiple values: color: ["blue", "green"] will select pods with the annotation color="blue" or color="green".
ebpf.demangle string "none" C++ demangle mode. Available options are: none, simplified, templates, full
ebpf.enabled bool true Gather profiles using eBPF
ebpf.excludeNamespaces list [] Which namespaces to exclude looking for pods.
ebpf.extraDiscoveryRules string "" Rule blocks to be added to the discovery.relabel component for eBPF profile sources. These relabeling rules are applied pre-scrape against the targets from service discovery. Before the scrape, any remaining target labels that start with __ (i.e. __meta_kubernetes*) are dropped. (docs)
ebpf.labelSelectors object {} Select pods to profile based on pod labels. Example: app.kubernetes.io/name: myapp will select pods with the label app.kubernetes.io/name=myapp. Example with multiple values: app.kubernetes.io/name: [myapp, myapp2] will select pods with the label app.kubernetes.io/name=myapp or app.kubernetes.io/name=myapp2.
ebpf.namespaces list [] Select pods to profile based on their namespaces.

General settings

Key Type Default Description
fullnameOverride string "" Full name override
nameOverride string "" Name override

Java

Key Type Default Description
java.annotationSelectors object {} Select pods to profile based on pod annotations. Example: k8s.grafana.com/profile: "true" will select pods with the annotation k8s.grafana.com/profile="true". Example with multiple values: color: ["blue", "green"] will select pods with the annotation color="blue" or color="green".
java.enabled bool true Gather profiles by scraping java HTTP endpoints
java.excludeNamespaces list [] Which namespaces to exclude looking for pods.
java.extraDiscoveryRules string "" Rule blocks to be added to the discovery.relabel component for Java profile sources. (docs)
java.labelSelectors object {} Select pods to profile based on pod labels. Example: app.kubernetes.io/name: myapp will select pods with the label app.kubernetes.io/name=myapp. Example with multiple values: app.kubernetes.io/name: [myapp, myapp2] will select pods with the label app.kubernetes.io/name=myapp or app.kubernetes.io/name=myapp2.
java.namespaces list [] Select pods to profile based on their namespaces.
java.profilingConfig object {"alloc":"512k","cpu":true,"interval":"60s","lock":"10ms","sampleRate":100} Configuration for the async-profiler

pprof

Key Type Default Description
pprof.annotationSelectors object {} Select pods to profile based on pod annotations. Example: k8s.grafana.com/profile: "true" will select pods with the annotation k8s.grafana.com/profile="true". Example with multiple values: color: ["blue", "green"] will select pods with the annotation color="blue" or color="green".
pprof.enabled bool true Gather profiles by scraping pprof HTTP endpoints
pprof.excludeNamespaces list [] Which namespaces to exclude looking for pods.
pprof.extraDiscoveryRules string "" Rule blocks to be added to the discovery.relabel component for eBPF profile sources. These relabeling rules are applied pre-scrape against the targets from service discovery. Before the scrape, any remaining target labels that start with __ (i.e. __meta_kubernetes*) are dropped. (docs)
pprof.labelSelectors object {} Select pods to profile based on pod labels. Example: app.kubernetes.io/name: myapp will select pods with the label app.kubernetes.io/name=myapp. Example with multiple values: app.kubernetes.io/name: [myapp, myapp2] will select pods with the label app.kubernetes.io/name=myapp or app.kubernetes.io/name=myapp2.
pprof.namespaces list [] Select pods to profile based on their namespaces.
pprof.scrapeInterval string "15s" How frequently to collect profiles.
pprof.scrapeTimeout string "18s" Timeout for collecting profiles. Must be larger then the scrape interval.
pprof.types object {"block":true,"cpu":true,"fgprof":true,"godeltaprof_block":false,"godeltaprof_memory":false,"godeltaprof_mutex":false,"goroutine":true,"memory":true,"mutex":true} Profile types to gather