Hello! I try profiling python via auto-instrumentation by Alloy.
My values for Alloy:
alloy:
securityContext:
privileged: true
runAsUser: 0
runAsGroup: 0
fsGroup: 0
configMap:
create: true
content: |
logging {
level = "debug"
format = "logfmt"
}
discovery.kubernetes "local_pods" {
selectors {
field = "spec.nodeName=" + env("HOSTNAME")
role = "pod"
}
role = "pod"
}
discovery.relabel "specific_pods" {
targets = discovery.kubernetes.local_pods.targets
rule {
action = "drop"
regex = "Succeeded|Failed|Completed"
source_labels = ["__meta_kubernetes_pod_phase"]
}
rule {
action = "replace"
source_labels = ["__meta_kubernetes_namespace"]
target_label = "namespace"
}
rule {
action = "replace"
source_labels = ["__meta_kubernetes_pod_name"]
target_label = "pod"
}
rule {
action = "replace"
source_labels = ["__meta_kubernetes_pod_node_name"]
target_label = "node"
}
rule {
action = "replace"
source_labels = ["__meta_kubernetes_pod_container_name"]
target_label = "container"
}
// provide arbitrary service_name label, otherwise it will be set to {__meta_kubernetes_namespace}/{__meta_kubernetes_pod_container_name}
rule {
action = "replace"
regex = "(.*)@(.*)"
replacement = "${1}/${2}"
separator = "@"
source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_container_name"]
target_label = "service_name"
}
// Filter specific targets to profile
rule {
source_labels = ["service_name"]
regex = "(.*alloy|.*pyroscope|.*fast-slow)"
action = "keep"
}
}
pyroscope.ebpf "instance" {
forward_to = [pyroscope.write.endpoint.receiver]
targets = discovery.relabel.specific_pods.output
python_enabled = true
}
pyroscope.write "endpoint" {
endpoint {
url = "http://pyroscope.pyroscope:4040"
}
}
controller:
hostPID: true
privileged: true
But i dont see python application in pyroscope
I see only alloy application
list python pod
k get pod -A | grep python
pyroscope-ebpf python-fast-slow-6b8b577dd8-6qgrv 1/1 Running 0 23m
But i get error in Alloy logs
stern -n alloy . | grep error
alloy-4x9h6 alloy ts=2025-04-20T04:01:26.408880699Z level=error msg="check stale pids" component_path=/ component_id=pyroscope.ebpf.instance err="map batch lookup: map batch api not supported (requires >= v5.6)"