菜单
开源

发现进程

discovery.process 发现本地Linux OS上运行的进程。

注意

要使用 discovery.process 组件,必须以root身份在host PID命名空间中运行Alloy。

用法

alloy
discovery.process "LABEL" {

}

参数

支持以下参数

名称类型描述默认值必需
joinlist(map(string))根据 __container_id__ 标签将外部目标与发现进程目标连接。no
refresh_interval持续时间同步目标的时间间隔。“60s”no

目标连接

如果指定了 join,则 discovery.process 将根据 __container_id__ 标签连接发现的进程。

例如,如果 join 指定如下

json
[
  {
    "pod": "pod-1",
    "__container_id__": "container-1"
  },
  {
    "pod": "pod-2",
    "__container_id__": "container-2"
  }
]

并且发现的进程是

json
[
  {
    "__process_pid__": "1",
    "__container_id__": "container-1"
  },
  {
    "__process_pid__": "2"
  }
]

结果目标是

json
[
  {
    "__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"
  }
]

以下是在discovery.process定义中支持的块:

层次结构描述必需
discover_configdiscover_config配置要发现哪些进程元数据。no

discover_config 块

discover_config块描述了要发现哪些进程元数据。

支持以下参数

名称类型描述默认值必需
exebool一个标志,用于启用发现__meta_process_exe标签。trueno
cwdbool一个标志,用于启用发现__meta_process_cwd标签。trueno
commandlinebool一个标志,用于启用发现__meta_process_commandline标签。trueno
uidbool一个标志,用于启用发现__meta_process_uid标签。trueno
usernamebool一个标志,用于启用发现__meta_process_username标签。trueno
container_idbool一个标志,用于启用发现__container_id__标签。trueno

导出字段

以下字段被导出,并可以被其他组件引用

名称类型描述
targetslist(map(string))在本地Linux OS上发现的进程集。

每个目标包含以下标签

  • __process_pid__:进程PID。
  • __meta_process_exe:进程可执行文件路径。从/proc/<pid>/exe获取。
  • __meta_process_cwd:进程当前工作目录。从/proc/<pid>/cwd获取。
  • __meta_process_commandline:进程命令行。从/proc/<pid>/cmdline获取。
  • __meta_process_uid:进程UID。从/proc/<pid>/status获取。
  • __meta_process_username:进程用户名。从__meta_process_uidos/user/LookupID获取。
  • __container_id__:容器ID。从/proc/<pid>/cgroup获取。如果进程未在容器中运行,则此标签未设置。

组件健康状态

当给定无效配置时,discovery.process才会报告为不健康。在这种情况下,导出字段保留其最后健康的值。

调试信息

discovery.process不公开任何组件特定的调试信息。

调试度量

discovery.process不公开任何组件特定的调试度量。

示例

示例:在本地主机上发现进程

alloy
discovery.process "all" {
  refresh_interval = "60s"
  discover_config {
    cwd = true
    exe = true
    commandline = true
    username = true
    uid = true
    container_id = true
  }
}

示例:在本地主机上发现进程并与discovery.kubernetes结合

alloy
discovery.kubernetes "pyroscope_kubernetes" {
  selectors {
    field = "spec.nodeName=" + sys.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
  }
}

兼容组件

discovery.process可以接受以下组件的参数

discovery.process的导出可以被以下组件消费

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。有关更多详细信息,请参阅相关文档。