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).
- 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).