Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.
discovery.process
discovery.process discovers processes running on the local Linux OS.
Note
To use the
discovery.processcomponent you must run Alloy as root and inside host PID namespace.
Usage
discovery.process "<LABEL>" {
}Arguments
You can use the following arguments with discovery.process:
Targets joining
If you specify join, discovery.process joins the discovered processes based on the __container_id__ label.
For example, if join is specified as follows:
[
{
"pod": "pod-1",
"__container_id__": "container-1"
},
{
"pod": "pod-2",
"__container_id__": "container-2"
}
]And the discovered processes are:
[
{
"__process_pid__": "1",
"__container_id__": "container-1"
},
{
"__process_pid__": "2"
}
]The resulting targets are:
[
{
"__container_id__": "container-1",
"__process_pid__": "1",
"pod": "pod-1"
},
{
"__process_pid__": "2"
},
{
"__container_id__": "container-1",
"pod": "pod-1"
},
{
"__container_id__": "container-2",
"pod": "pod-2"
}
]Blocks
You can use the following block with discovery.process:
discover_config
The discover_config block describes which process metadata to discover.
The following arguments are supported:
Exported fields
The following fields are exported and can be referenced by other components:
Each target includes the following labels:
__container_id__: The container ID. Taken from/proc/<pid>/cgroup. If the process isn’t running in a container, this label isn’t set.__meta_process_commandline: The process command line. Taken from/proc/<pid>/cmdline.__meta_process_cwd: The process current working directory. Taken from/proc/<pid>/cwd.__meta_process_exe: The process executable path. Taken from/proc/<pid>/exe.__meta_process_uid: The process UID. Taken from/proc/<pid>/status.__meta_process_username: The process username. Taken from__meta_process_uidandos/user/LookupID.__process_pid__: The process PID.
Component health
discovery.process is only reported as unhealthy when given an invalid configuration.
In those cases, exported fields retain their last healthy values.
Debug information
discovery.process doesn’t expose any component-specific debug information.
Debug metrics
discovery.process doesn’t expose any component-specific debug metrics.
Examples
Example discovering processes on the local host
discovery.process "all" {
refresh_interval = "60s"
discover_config {
cwd = true
exe = true
commandline = true
username = true
uid = true
container_id = true
}
}Example discovering processes on the local host and joining with discovery.kubernetes
discovery.kubernetes "pyroscope_kubernetes" {
selectors {
field = "spec.nodeName=" + env("HOSTNAME")
role = "pod"
}
role = "pod"
}
discovery.process "all" {
join = discovery.kubernetes.pyroscope_kubernetes.targets
refresh_interval = "60s"
discover_config {
cwd = true
exe = true
commandline = true
username = true
uid = true
container_id = true
}
}
<!-- START GENERATED COMPATIBLE COMPONENTS -->
## Compatible components
`discovery.process` can accept arguments from the following components:
- Components that export [Targets](../../../compatibility/#targets-exporters)
`discovery.process` has exports that can be consumed by the following components:
- Components that consume [Targets](../../../compatibility/#targets-consumers)
Note
Connecting some components may not be sensible or components may require further configuration to make the connection work correctly.
Refer to the linked documentation for more details.
<!-- END GENERATED COMPATIBLE COMPONENTS -->


