Skip to content

Agent components

Agent binaries

The "Agent" is not distributed as a single binary. Instead, running an Agent on a given host will usually involve multiple processes communicating with each other, spawned from different binaries1.

These binaries have a good amount of code shared between them, but are all buildable individually. Here is the exhaustive list:

  • agent
  • process-agent
  • trace-agent
  • cluster-agent
  • security-agent
  • system-probe
  • jmxfetch

Info

Every binary is built from the same codebase. By leveraging Go build constraints, we end up compiling different parts of the source code for each binary.

Agent "features"

The Agent codebase makes heavy use of Go build constraints to dynamically include or exclude some parts of the source code during the build process.

Here is a list of usable "tags" that you can pass during the build process to customize your build. This list is not exhaustive !

  • apm: make the APM agent execution available. (1)
  • consul: enable consul as a configuration store.
  • python: embed the Python interpreter.
  • docker: add Docker support (required by AutoDiscovery).
  • ec2: enable EC2 hostname detection and metadata collection.
  • etcd: enable Etcd as a configuration store.
  • gce: enable GCE hostname detection and metadata collection.
  • jmx: enable the JMX-fetch bridge.
  • kubelet: enable kubelet tag collection.
  • log: enable the log agent.
  • process: enable the process agent.
  • zk: enable Zookeeper as a configuration store.
  • zstd: use Zstandard instead of Zlib.
  • systemd: enable systemd journal log collection.
  • netcgo: force the use of the CGO resolver. This will also have the effect of making the binary non-static.
  • secrets: enable secrets support in configuration files (see documentation here).
  • clusterchecks: enable cluster-level checks.
  • cri : add support for the CRI integration.
  • containerd: add support for the containerd integration.
  • kubeapiserver: enable interaction with Kubernetes API server (required by the cluster Agent).
  1. Note that the trace agent needs to be built separately. For more information on the trace agent, see the official docs.

Note

You might need to provide some extra dependencies in your dev environment to build with certain features (see manual setup).


  1. This is not always the case: the Agent can, as an option, combine multiple binaries into a single one to reduce disk space usage. See here for more info.