Routes events from one or more streams to unique sub-streams based on a set of user-defined conditions.
status: betaegress: streamstate: stateless
input: logsinput: metricsinput: traces
output: logsoutput: metricsoutput: traces
Routes events from one or more streams to unique sub-streams based on a set of user-defined conditions. Routes are
evaluated in order and once an event matches a route, it is sent exclusively to that route and no further routes
are evaluated.
Also, see the Route transform for routing an event to multiple streams.
An array of named routes. The route names are expected to be unique.
Routes are evaluated in order from first to last, and only the first matching route receives each event
(first-match-wins).
If you opt for the vrl syntax for this condition, you can set the condition
as a string via the condition parameter, without needing to specify both a source and a type. The
table below shows some examples:
The name of the route is also the name of the transform port.
The _unmatched name is reserved and thus cannot be used as route ID.
Each route can then be referenced as an input by other components with the name
<transform_name>.<name>. If an event doesn’t match any route,
it is sent to the <transform_name>._unmatched output.
The following table lists all telemetry data types supported by the component across possible configurations. Be
aware that the available data types may differ based on the specified codec configuration.
True if the events were discarded intentionally, like a filter transform, or false if due to an error.
pid
optional
The process ID of the Vector instance.
component_errors_total
counter
The total number of errors encountered by this component.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
error_type
The type of the error
host
optional
The hostname of the system Vector is running on.
pid
optional
The process ID of the Vector instance.
stage
The stage within the component at which the error occurred.
component_received_event_bytes_total
counter
The number of event bytes accepted by this component either from
tagged origins like file and uri, or cumulatively from other origins.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
container_name
optional
The name of the container from which the data originated.
file
optional
The file from which the data originated.
host
optional
The hostname of the system Vector is running on.
mode
optional
The connection mode used by the component.
peer_addr
optional
The IP from which the data originated.
peer_path
optional
The pathname from which the data originated.
pid
optional
The process ID of the Vector instance.
pod_name
optional
The name of the pod from which the data originated.
uri
optional
The sanitized URI from which the data originated.
component_received_events_count
histogram
A histogram of the number of events passed in each internal batch in Vector’s internal topology.
Note that this is separate than sink-level batching. It is mostly useful for low level debugging
performance issues in Vector due to small internal batches.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
container_name
optional
The name of the container from which the data originated.
file
optional
The file from which the data originated.
host
optional
The hostname of the system Vector is running on.
mode
optional
The connection mode used by the component.
peer_addr
optional
The IP from which the data originated.
peer_path
optional
The pathname from which the data originated.
pid
optional
The process ID of the Vector instance.
pod_name
optional
The name of the pod from which the data originated.
uri
optional
The sanitized URI from which the data originated.
component_received_events_total
counter
The number of events accepted by this component either from tagged
origins like file and uri, or cumulatively from other origins.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
container_name
optional
The name of the container from which the data originated.
file
optional
The file from which the data originated.
host
optional
The hostname of the system Vector is running on.
mode
optional
The connection mode used by the component.
peer_addr
optional
The IP from which the data originated.
peer_path
optional
The pathname from which the data originated.
pid
optional
The process ID of the Vector instance.
pod_name
optional
The name of the pod from which the data originated.
uri
optional
The sanitized URI from which the data originated.
component_sent_event_bytes_total
counter
The total number of event bytes emitted by this component.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
host
optional
The hostname of the system Vector is running on.
output
optional
The specific output of the component.
pid
optional
The process ID of the Vector instance.
component_sent_events_total
counter
The total number of events emitted by this component.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
host
optional
The hostname of the system Vector is running on.
output
optional
The specific output of the component.
pid
optional
The process ID of the Vector instance.
transform_buffer_max_byte_size
gauge
The maximum number of bytes the buffer that feeds into a transform can hold.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
host
optional
The hostname of the system Vector is running on.
output
optional
The specific output of the component.
pid
optional
The process ID of the Vector instance.
transform_buffer_max_event_size
gauge
The maximum number of events the buffer that feeds into a transform can hold.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
host
optional
The hostname of the system Vector is running on.
output
optional
The specific output of the component.
pid
optional
The process ID of the Vector instance.
transform_buffer_utilization
histogram
The utilization level of the buffer that feeds into a transform.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
host
optional
The hostname of the system Vector is running on.
output
optional
The specific output of the component.
pid
optional
The process ID of the Vector instance.
transform_buffer_utilization_level
gauge
The current utilization level of the buffer that feeds into a transform.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
host
optional
The hostname of the system Vector is running on.
output
optional
The specific output of the component.
pid
optional
The process ID of the Vector instance.
utilization
gauge
A ratio from 0 to 1 of the load on a component. A value of 0 would indicate a completely idle component that is simply waiting for input. A value of 1 would indicate a that is never idle. This value is updated every 5 seconds.
component_id
The Vector component ID.
component_kind
The Vector component kind.
component_type
The Vector component type.
host
optional
The hostname of the system Vector is running on.
pid
optional
The process ID of the Vector instance.
How it works
Routing to multiple components
An event can only be routed to a single output.
The following is an example of how you can create two exclusive routes (plus the implicitly created _unmatched route).
transforms:transform0:inputs:- source0type:exclusive_routeroutes:- name:"a"condition:type:vrlsource:.level == 1- name:"b"condition:type:vrl# Note that the first condition is redundant. The previous route will always have precedence.source:.level == 1 || .level == 2tests:- name:case-1inputs:- type:loginsert_at:transform0log_fields:level:1- type:loginsert_at:transform0log_fields:level:2outputs:- extract_from:transform0.aconditions:- type:vrlsource:|assert!(.level == 1)- extract_from:transform0.bconditions:- type:vrlsource:|assert!(.level == 2)
State
This component is stateless, meaning its behavior is consistent across each input.
Sign up to receive emails on the latest Vector content and new releases