- Fleet and Elastic Agent Guide: other versions:
- Fleet and Elastic Agent overview
- Beats and Elastic Agent capabilities
- Quick starts
- Migrate from Beats to Elastic Agent
- Deployment models
- Install Elastic Agents
- Install Fleet-managed Elastic Agents
- Install standalone Elastic Agents
- Install Elastic Agents in a containerized environment
- Run Elastic Agent in a container
- Run Elastic Agent on Kubernetes managed by Fleet
- Install Elastic Agent on Kubernetes using Helm
- Example: Install standalone Elastic Agent on Kubernetes using Helm
- Example: Install Fleet-managed Elastic Agent on Kubernetes using Helm
- Advanced Elastic Agent configuration managed by Fleet
- Configuring Kubernetes metadata enrichment on Elastic Agent
- Run Elastic Agent on GKE managed by Fleet
- Run Elastic Agent on Amazon EKS managed by Fleet
- Run Elastic Agent on Azure AKS managed by Fleet
- Run Elastic Agent Standalone on Kubernetes
- Scaling Elastic Agent on Kubernetes
- Using a custom ingest pipeline with the Kubernetes Integration
- Environment variables
- Run Elastic Agent as an OTel Collector
- Run Elastic Agent without administrative privileges
- Install Elastic Agent from an MSI package
- Installation layout
- Air-gapped environments
- Using a proxy server with Elastic Agent and Fleet
- Uninstall Elastic Agents from edge hosts
- Start and stop Elastic Agents on edge hosts
- Elastic Agent configuration encryption
- Secure connections
- Manage Elastic Agents in Fleet
- Configure standalone Elastic Agents
- Create a standalone Elastic Agent policy
- Structure of a config file
- Inputs
- Providers
- Outputs
- SSL/TLS
- Logging
- Feature flags
- Agent download
- Config file examples
- Grant standalone Elastic Agents access to Elasticsearch
- Example: Use standalone Elastic Agent with Elastic Cloud Serverless to monitor nginx
- Example: Use standalone Elastic Agent with Elasticsearch Service to monitor nginx
- Debug standalone Elastic Agents
- Kubernetes autodiscovery with Elastic Agent
- Monitoring
- Reference YAML
- Manage integrations
- Package signatures
- Add an integration to an Elastic Agent policy
- View integration policies
- Edit or delete an integration policy
- Install and uninstall integration assets
- View integration assets
- Set integration-level outputs
- Upgrade an integration
- Managed integrations content
- Best practices for integrations assets
- Data streams
- Define processors
- Processor syntax
- add_cloud_metadata
- add_cloudfoundry_metadata
- add_docker_metadata
- add_fields
- add_host_metadata
- add_id
- add_kubernetes_metadata
- add_labels
- add_locale
- add_network_direction
- add_nomad_metadata
- add_observer_metadata
- add_process_metadata
- add_tags
- community_id
- convert
- copy_fields
- decode_base64_field
- decode_cef
- decode_csv_fields
- decode_duration
- decode_json_fields
- decode_xml
- decode_xml_wineventlog
- decompress_gzip_field
- detect_mime_type
- dissect
- dns
- drop_event
- drop_fields
- extract_array
- fingerprint
- include_fields
- move_fields
- parse_aws_vpc_flow_log
- rate_limit
- registered_domain
- rename
- replace
- script
- syslog
- timestamp
- translate_sid
- truncate_fields
- urldecode
- Command reference
- Troubleshoot
- Release notes
Processor syntax
editProcessor syntax
editSpecify a list of one or more processors:
-
When configuring processors in the standalone Elastic Agent configuration file, put
this list under the
processors
setting. - When using the Integrations UI in Kibana, put this list in the Processors field.
Each processor begins with a dash (-) and includes the processor name, an optional condition, and configuration settings to pass to the processor:
- <processor_name>: when: <condition> <settings> - <processor_name>: when: <condition> <settings>
If a condition is specified, it must be met in order for the processor to run. If no condition is specified, the processor always runs.
To accomplish complex conditional processing, use the if-then-else processor configuration. This configuration allows you to run multiple processors based on a single condition. For example:
- if: <condition> then: - <processor_name>: <settings> - <processor_name>: <settings> ... else: - <processor_name>: <settings> - <processor_name>: <settings>
|
|
|
Conditions
editEach condition receives a field to compare. You can specify multiple fields
under the same condition by using AND
between the fields (for example,
field1 AND field2
).
For each field, you can specify a simple field name or a nested map, for example
dns.question.name
.
Refer to the integrations documentation for a list of all fields created by a specific integration.
The supported conditions are:
equals
editWith the equals
condition, you can check if a field has a certain value.
The condition accepts only an integer or string value.
For example, the following condition checks if the response code of the HTTP transaction is 200:
equals: http.response.code: 200
contains
editThe contains
condition checks if a value is part of a field. The field can be
a string or an array of strings. The condition accepts only a string value.
For example, the following condition checks if an error is part of the transaction status:
contains: status: "Specific error"
regexp
editThe regexp
condition checks the field against a regular expression. The
condition accepts only strings.
For example, the following condition checks if the process name starts with
foo
:
regexp: system.process.name: "^foo.*"
range
editThe range
condition checks if the field is in a certain range of values. The
condition supports lt
, lte
, gt
and gte
. The condition accepts only
integer or float values.
For example, the following condition checks for failed HTTP transactions by
comparing the http.response.code
field with 400.
range: http.response.code: gte: 400
This can also be written as:
range: http.response.code.gte: 400
The following condition checks if the CPU usage in percentage has a value between 0.5 and 0.8.
range: system.cpu.user.pct.gte: 0.5 system.cpu.user.pct.lt: 0.8
network
editThe network
condition checks if the field is in a certain IP network range.
Both IPv4 and IPv6 addresses are supported. The network range may be specified
using CIDR notation, like "192.0.2.0/24" or "2001:db8::/32", or by using one of
these named ranges:
-
loopback
- Matches loopback addresses in the range of127.0.0.0/8
or::1/128
. -
unicast
- Matches global unicast addresses defined in RFC 1122, RFC 4632, and RFC 4291 with the exception of the IPv4 broadcast address (255.255.255.255
). This includes private address ranges. -
multicast
- Matches multicast addresses. -
interface_local_multicast
- Matches IPv6 interface-local multicast addresses. -
link_local_unicast
- Matches link-local unicast addresses. -
link_local_multicast
- Matches link-local multicast addresses. -
private
- Matches private address ranges defined in RFC 1918 (IPv4) and RFC 4193 (IPv6). -
public
- Matches addresses that are not loopback, unspecified, IPv4 broadcast, link-local unicast, link-local multicast, interface-local multicast, or private. -
unspecified
- Matches unspecified addresses (either the IPv4 address "0.0.0.0" or the IPv6 address "::").
The following condition returns true if the source.ip
value is within the
private address space.
network: source.ip: private
This condition returns true if the destination.ip
value is within the
IPv4 range of 192.168.1.0
- 192.168.1.255
.
network: destination.ip: '192.168.1.0/24'
And this condition returns true when destination.ip
is within any of the given
subnets.
network: destination.ip: ['192.168.1.0/24', '10.0.0.0/8', loopback]
has_fields
editThe has_fields
condition checks if all the given fields exist in the
event. The condition accepts a list of string values denoting the field names.
For example, the following condition checks if the http.response.code
field
is present in the event.
has_fields: ['http.response.code']
or
editThe or
operator receives a list of conditions.
or: - <condition1> - <condition2> - <condition3> ...
For example, to configure the condition
http.response.code = 304 OR http.response.code = 404
:
or: - equals: http.response.code: 304 - equals: http.response.code: 404
and
editThe and
operator receives a list of conditions.
and: - <condition1> - <condition2> - <condition3> ...
For example, to configure the condition
http.response.code = 200 AND status = OK
:
and: - equals: http.response.code: 200 - equals: status: OK
To configure a condition like <condition1> OR <condition2> AND <condition3>
:
or: - <condition1> - and: - <condition2> - <condition3>
not
editThe not
operator receives the condition to negate.
not: <condition>
For example, to configure the condition NOT status = OK
:
not: equals: status: OK
ElasticON events are back!
Learn about the Elastic Search AI Platform from the experts at our live events.
Register now