Elastic provides two main ways to send data to {es}:
-
{beats} are lightweight data shippers that send operational data to {es}. Elastic provides separate {beats} for different types of data, such as logs, metrics, and uptime. Depending on what data you want to collect, you may need to install multiple shippers on a single host.
-
{agent} is a single agent for logs, metrics, security data, and threat prevention. The {agent} can be deployed in two different modes:
-
Managed by {fleet} — The {agent} policies and lifecycle are centrally managed by the {fleet} app in {kib}. The Integrations app also lets you centrally add integrations with other popular services and systems. This is the recommended option for most users.
-
Standalone mode — All policies are applied to the {agent} manually as a YAML file. This is intended for more advanced users. See [install-standalone-elastic-agent] for more information.
-
The method you use depends on your use case, which features you need, and whether you want to centrally manage your agents.
{beats} and {agent} can both send data directly to {es} or via {ls}, where you can further process and enhance the data, before visualizing it in {kib}.
This article summarizes the features and functionality you need to be aware of before adding new {agent}s or replacing your current {beats} with {agent}s. Starting in version 7.14.0, {agent} is generally available (GA).
{agent} is a single binary designed to provide the same functionality that the various {beats} provide today. However, some functionality gaps are being addressed as we strive to reach feature parity.
The following steps will help you determine if {agent} can support your use case:
-
Determine if the integrations you need are supported and Generally Available (GA) on {agent}. To find out if an integration is GA, see the {integrations-docs}/all_integrations[{integrations} quick reference table].
-
If the integration is available, check Supported outputs to see whether the required output is also supported.
-
Review Capabilities comparison to determine if any features required by your deployment are supported. {agent} should support most of the features available on {beats} and is updated for each release.
If you are satisfied with all three steps, then {agent} is suitable for your deployment. However, if any steps fail your assessment, you should continue using {beats}, and review future updates or contact us in the {forum}[discuss forum].
For {agent}s that are centrally managed by {fleet}, data collection is further simplified and defined by integrations. In this model, the decision on the inputs is driven by the integration you want to collect data from. The complexity of configuration details of various inputs is driven centrally by {fleet} and specifically by the integrations.
To find out if an integration is GA, see the {integrations-docs}/all_integrations[{integrations} quick reference table].
The following table shows the outputs supported by the {agent} in {version}:
Note
|
{elastic-defend} and APM Server have a different output matrix. |
Output | {beats} | {fleet}-managed {agent} | Standalone {agent} |
---|---|---|---|
{es} Service |
|||
{es} |
|||
{ls} |
|||
Kafka |
|||
Remote {es} |
|||
Redis |
|||
File |
|||
Console |
{beats} configuration | {agent} support |
---|---|
{filebeat-ref}/configuration-filebeat-modules.html[Modules] |
Supported via integrations. |
{filebeat-ref}/advanced-settings.html[Input setting overrides] |
Not configurable. Set to default values. |
{filebeat-ref}/configuration-general-options.html[General settings] |
Many of these global settings are now internal to the agent and for proper operations should not be modified. |
{filebeat-ref}/configuration-path.html[Project paths] |
{agent} configures these paths to provide a simpler and more streamlined configuration experience. |
{filebeat-ref}/filebeat-configuration-reloading.html[External configuration file loading] |
Config is distributed via policy. |
{filebeat-ref}/_live_reloading.html[Live reloading] |
Related to the config file reload. |
{filebeat-ref}/configuring-output.html[Outputs] |
Configured through {fleet}. See Supported outputs. |
{filebeat-ref}/configuration-ssl.html[SSL] |
Supported |
{filebeat-ref}/ilm.html[{ilm-cap}] |
Enabled by default although the Agent uses data streams. |
{filebeat-ref}/configuration-template.html[{es} index template loading] |
No longer applicable |
{filebeat-ref}/setup-kibana-endpoint.html[{kib} endpoint] |
New {agent} workflow doesn’t need this. |
{filebeat-ref}/configuration-dashboards.html[{kib} dashboard loading] |
New {agent} workflow doesn’t need this. |
{filebeat-ref}/defining-processors.html[Processors] |
Processors can be defined at the integration level. Global processors, configured at the policy level, are currently under consideration. |
{filebeat-ref}/configuration-autodiscover.html[Autodiscover] |
Autodiscover is facilitated through dynamic inputs. {agent} does not support hints-based autodiscovery. |
{filebeat-ref}/configuring-internal-queue.html[Internal queues] |
{fleet}-managed {agent} and Standalone {agent} both support configuration of the internal memory queues by an end user. Neither support configuration of the internal disk queues by an end user. |
{filebeat-ref}/elasticsearch-output.html#_loadbalance[Load balance output hosts] |
Within the {fleet} UI, you can add YAML settings to configure multiple hosts per output type, which enables load balancing. |
{filebeat-ref}/configuration-logging.html[Logging] |
Supported |
{filebeat-ref}/http-endpoint.html[HTTP Endpoint] |
Supported |
{filebeat-ref}/regexp-support.html[Regular expressions] |
Supported |
The following table shows a comparison of capabilities supported by {beats} and the {agent} in {version}:
Item | {beats} | {fleet}-managed {agent} | Standalone {agent} | Description |
---|---|---|---|---|
Single agent for all use cases |
{agent} provides logs, metrics, and more. You’d need to install multiple {beats} for these use cases. |
|||
Install integrations from web UI or API |
{agent} integrations are installed with a convenient web UI or API, but {beats} modules are installed with a CLI. This installs {es} assets such as index templates and ingest pipelines, and {kib} assets such as dashboards. |
|||
Configure from web UI or API |
{fleet}-managed {agent} integrations can be configured in the web UI or API. Standalone {agent} can use the web UI, API, or YAML. {beats} can only be configured via YAML files. |
|||
Central, remote agent policy management |
{agent} policies can be centrally managed through {fleet}. You have to manage {beats} configuration yourself or with a third-party solution. |
|||
Central, remote agent binary upgrades |
{agent}s can be remotely upgraded through {fleet}. You have to upgrade {beats} yourself or with a third-party solution. |
|||
Add {kib} and {es} assets for a single integration or module |
{agent} integrations allow you to add {kib} and {es} assets for a single integration at a time. {beats} installs hundreds of assets for all modules at once. |
|||
Auto-generated {es} API keys |
{fleet} can automatically generate API keys with limited permissions for each {agent}, which can be individually revoked. Standalone {agent} and {beats} require you to create and manage credentials, and users often share them across hosts. |
|||
Auto-generate minimal {es} permissions |
{fleet} can automatically give {agent}s minimal output permissions based on the inputs running. With standalone {agent} and {beats}, users often give overly broad permissions because it’s more convenient. |
|||
Data streams support |
Both {beats} (default as of version 8.0) and {agent}s use data streams with easier index life cycle management and the data stream naming scheme. |
|||
Variables and input conditions |
{agent} offers {fleet-guide}/dynamic-input-configuration.html[variables and input conditions] to dynamically adjust based on the local host environment. Users can configure these directly in YAML for standalone {agent} or using the {fleet} API for {fleet}-managed {agent}. The Integrations app allows users to enter variables, and we are considering a UI to edit conditions. {beats} only offers static configuration. |
|||
Allow non-superusers to manage assets and agents |
Starting with version 8.1.0, a superuser role is no longer required to use the {fleet} and Integrations apps and corresponding APIs. These apps are optional for standalone {agent}. {beats} offers {filebeat-ref}/feature-roles.html[finer grained] roles. |
|||
Air-gapped network support |
The {integrations} and {fleet} apps can be deployed in an air-gapped environment {fleet-guide}/air-gapped.html#air-gapped-diy-epr[self-managed deployment of the {package-registry}]. {fleet}-managed {agent}s require a connection to our artifact repository for agent binary upgrades. However the policy can be modified to have agents point to a local server in order to fetch the agent binary. |
|||
Run without root on host |
{fleet}-managed {agent}s, Standalone {agent}s, and {beats} require root permission only if they’re configured to capture data that requires that level of permission. |
|||
Multiple outputs |
The policy for a single {fleet}-managed {agent} can specify multiple outputs. |
|||
Separate monitoring cluster |
{fleet}-managed {agent}s, Standalone {agent} and {beats} can send to a remote monitoring cluster. |
|||
Secret management |
{agent} stores credentials in the agent policy. We are considering adding keystore support. {beats} allows users to access credentials in a local {filebeat-ref}/keystore.html[keystore]. |
|||
Progressive or canary deployments |
{fleet} does not have a feature to deploy an {agent} policy update progressively but we are considering improved support. With standalone {agent} and {beats} you can deploy configuration files progressively using third party solutions. |
|||
Multiple configurations per host |
{agent} uses a single {agent} policy for configuration, and uses {fleet-guide}/dynamic-input-configuration.html[variables and input conditions] to adapt on a per-host basis. {beats} supports multiple configuration files per host, enabling third party solutions to deploy files hierarchically or in multiple groups, and enabling finer-grained access control to those files. |
|||
Compatible with version control and infrastructure as code solutions |
{fleet} stores the agent policy in {es}. It does not integrate with external version control or infrastructure as code solutions, but we are considering improved support. However, {beats} and {agent} in standalone mode use a YAML file that is compatible with these solutions. |
|||
Spooling data to local disk |
This feature is currently being considered for development. |
You configure the collection of agent metrics in the agent policy. If metrics collection is selected (the default), all {agent}s enrolled in the policy will send metrics data to {es} (the output is configured globally).
The following image shows the Agent monitoring settings for the default agent policy:
There are also pre-built dashboards for agent metrics that you can access under Assets in the {agent} integration:
The [{agent}] Agent metrics dashboard shows an aggregated view of agent metrics:
For more information, refer to [monitor-elastic-agent].