Controls how acknowledgements are handled by this sink. When enabled, all connected sources that support end-to-end acknowledgements will wait for the destination of this sink to acknowledge receipt of events before providing acknowledgement to the sending source. These settings override the global acknowledgement settings.
Stores the sink’s buffer on disk. This is less performant, but durable.
Data will not be lost between restarts.
Will also hold data in memory to enhance performance.
WARNING: This may stall the sink if disk performance isn’t on par with the throughput.
For comparison, AWS gp2 volumes are usually too slow for common cases.
memory
Stores the sink’s buffer in memory. This is more performant, but less durable. Data will be lost if Vector is restarted forcefully.
Configure the adaptive concurrency algorithms. These values have been tuned by optimizing simulated results. In general you should not need to adjust these.
The fraction of the current value to set the new concurrency limit when decreasing the limit. Valid values are greater than 0 and less than 1. Smaller values cause the algorithm to scale back rapidly when latency increases. Note that the new limit is rounded down after applying this ratio.
The adaptive concurrency algorithm uses an exponentially weighted moving average (EWMA) of past RTT measurements as a reference to compare with the current RTT. This value controls how heavily new measurements are weighted compared to older ones. Valid values are greater than 0 and less than 1. Smaller values cause this reference to adjust more slowly, which may be useful if a service has unusually high response variability.
When calculating the past RTT average, we also compute a secondary “deviation” value that indicates how variable those values are. We use that deviation when comparing the past RTT average to the current measurements, so we can ignore increases in RTT that are within an expected range. This factor is used to scale up the deviation to an appropriate range. Valid values are greater than or equal to 0, and we expect reasonable values to range from 1.0 to 3.0. Larger values cause the algorithm to ignore larger increases in the RTT.
The maximum number of in-flight requests allowed at any given time, or “adaptive” to allow Vector to automatically set the limit based on current network and service conditions.
The amount of time to wait before attempting the first retry for a failed request. Once, the first retry has failed the fibonacci sequence will be used to select future backoffs.
The maximum time a request can take before being aborted. It is highly recommended that you do not lower this value below the service’s internal timeout, as this could create orphaned requests, pile on retries, and result in duplicate data downstream.
Absolute path to a certificate file used to identify this connection, in DER or PEM format (X.509) or PKCS#12, or an inline certificate in PEM format. If this is set and is not a PKCS#12 archive, key_file must also be set.
Absolute path to a private key file used to identify this connection, in DER or PEM format (PKCS#8), or an inline private key in PEM format. If this is set, crt_file must also be set.
If true (the default), Vector will validate the configured remote host name against the remote host’s TLS certificate. Do NOT set this to false unless you understand the risks of not verifying the remote hostname.
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
pidoptional
The process ID of the Vector instance.
buffer_discarded_events_total
counter
The number of events dropped by this non-blocking buffer.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
pidoptional
The process ID of the Vector instance.
buffer_events
gauge
The number of events currently in the buffer.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
pidoptional
The process ID of the Vector instance.
buffer_received_event_bytes_total
counter
The number of bytes received by this buffer.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
pidoptional
The process ID of the Vector instance.
buffer_received_events_total
counter
The number of events received by this buffer.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
pidoptional
The process ID of the Vector instance.
buffer_sent_event_bytes_total
counter
The number of bytes sent by this buffer.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
pidoptional
The process ID of the Vector instance.
buffer_sent_events_total
counter
The number of events sent by this buffer.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
pidoptional
The process ID of the Vector instance.
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_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
container_nameoptional
The name of the container from which the data originated.
fileoptional
The file from which the data originated.
hostoptional
The hostname of the system Vector is running on.
modeoptional
The connection mode used by the component.
peer_addroptional
The IP from which the data originated.
peer_pathoptional
The pathname from which the data originated.
pidoptional
The process ID of the Vector instance.
pod_nameoptional
The name of the pod from which the data originated.
urioptional
The sanitized URI from which the data originated.
component_received_events_count
histogram
A histogram of Vector 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_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
container_nameoptional
The name of the container from which the data originated.
fileoptional
The file from which the data originated.
hostoptional
The hostname of the system Vector is running on.
modeoptional
The connection mode used by the component.
peer_addroptional
The IP from which the data originated.
peer_pathoptional
The pathname from which the data originated.
pidoptional
The process ID of the Vector instance.
pod_nameoptional
The name of the pod from which the data originated.
urioptional
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_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
container_nameoptional
The name of the container from which the data originated.
fileoptional
The file from which the data originated.
hostoptional
The hostname of the system Vector is running on.
modeoptional
The connection mode used by the component.
peer_addroptional
The IP from which the data originated.
peer_pathoptional
The pathname from which the data originated.
pidoptional
The process ID of the Vector instance.
pod_nameoptional
The name of the pod from which the data originated.
urioptional
The sanitized URI from which the data originated.
component_sent_bytes_total
counter
The number of raw bytes sent by this component to destination sinks.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
endpointoptional
The endpoint to which the bytes were sent. For HTTP, this will be the host and path only, excluding the query string.
fileoptional
The absolute path of the destination file.
hostoptional
The hostname of the system Vector is running on.
pidoptional
The process ID of the Vector instance.
protocolrequired
The protocol used to send the bytes.
regionoptional
The AWS region name to which the bytes were sent. In some configurations, this may be a literal hostname.
component_sent_event_bytes_total
counter
The total number of event bytes emitted by this component.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
outputoptional
The specific output of the component.
pidoptional
The process ID of the Vector instance.
component_sent_events_total
counter
The total number of events emitted by this component.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
outputoptional
The specific output of the component.
pidoptional
The process ID of the Vector instance.
events_in_total
counter
The number of events accepted by this component either from tagged
origins like file and uri, or cumulatively from other origins.
This metric is deprecated and will be removed in a future version.
Use component_received_events_total instead.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
container_nameoptional
The name of the container from which the data originated.
fileoptional
The file from which the data originated.
hostoptional
The hostname of the system Vector is running on.
modeoptional
The connection mode used by the component.
peer_addroptional
The IP from which the data originated.
peer_pathoptional
The pathname from which the data originated.
pidoptional
The process ID of the Vector instance.
pod_nameoptional
The name of the pod from which the data originated.
urioptional
The sanitized URI from which the data originated.
processed_bytes_total
counter
The number of bytes processed by the component.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
container_nameoptional
The name of the container from which the bytes originate.
fileoptional
The file from which the bytes originate.
hostoptional
The hostname of the system Vector is running on.
modeoptional
The connection mode used by the component.
peer_addroptional
The IP from which the bytes originate.
peer_pathoptional
The pathname from which the bytes originate.
pidoptional
The process ID of the Vector instance.
pod_nameoptional
The name of the pod from which the bytes originate.
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
pidoptional
The process ID of the Vector instance.
protobuf_decode_errors_total
counter
The total number of Protocol Buffers errors thrown during communication between Vector instances.
component_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
pidoptional
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_idrequired
The Vector component ID.
component_kindrequired
The Vector component kind.
component_namerequired
Deprecated, use component_id instead. The value is the same as component_id.
component_typerequired
The Vector component type.
hostoptional
The hostname of the system Vector is running on.
pidoptional
The process ID of the Vector instance.
How it works
Buffers and batches
This component buffers & batches data as shown in the diagram above. You’ll notice that
Vector treats these concepts differently, instead of treating them as global concepts,
Vector treats them as sink specific concepts. This isolates sinks, ensuring services
disruptions are contained and delivery guarantees are honored.
Batches are flushed when 1 of 2 conditions are met:
The batch age meets or exceeds the configured timeout_secs.
The batch size meets or exceeds the configured max_bytes or max_events.
By default, the vector source augments events with helpful
context keys.
Health checks
Health checks ensure that the downstream service is
accessible and ready to accept data. This check is performed
upon sink initialization. If the health check fails an error
will be logged and Vector will proceed to start.
Require health checks
If you’d like to exit immediately upon a health check failure, you can pass the
--require-healthy flag:
If you’d like to disable health checks for this sink you can set the healthcheck option to
false.
Partitioning
Vector supports dynamic configuration values through a simple
template syntax. If an option supports templating, it will be
noted with a badge and you can use event fields to create dynamic
values. For example:
In the above example, the application_id for each event will be
used to partition outgoing data.
Rate limits & adapative concurrency
Adaptive Request Concurrency (ARC)
Adaptive Request Concurrency is a feature of Vector that does away with static
concurrency limits and automatically optimizes HTTP concurrency based on downstream
service responses. The underlying mechanism is a feedback loop inspired by TCP
congestion control algorithms. Checkout the announcement blog
post,
We highly recommend enabling this feature as it improves
performance and reliability of Vector and the systems it
communicates with. As such, we have made it the default,
and no further configuration is required.
Static concurrency
If Adaptive Request Concurrency is not for you, you can manually set static concurrency
limits by specifying an integer for request.concurrency:
[sinks.my-sink]request.concurrency=10
Rate limits
In addition to limiting request concurrency, you can also limit the overall request
throughput via the request.rate_limit_duration_secs and request.rate_limit_num
options.
These will apply to both adaptive and fixed request.concurrency values.
Retry policy
Vector will retry failed requests (status == 429, >= 500, and != 501).
Other responses will not be retried. You can control the number of
retry attempts and backoff rate with the request.retry_attempts and
request.retry_backoff_secs options.
State
This component is stateless, meaning its behavior is consistent across each input.
Transport Layer Security (TLS)
Vector uses OpenSSL for TLS protocols. You can
adjust TLS behavior via the tls.* options.
Transport Layer Security (TLS)
Vector uses OpenSSL for TLS protocols due to OpenSSL’s maturity. You can
enable and adjust TLS behavior using the tls.* options.
Sign up to receive emails on the latest Vector content and new releases