Configure the Kafka outputedit

The Kafka output sends the events to Apache Kafka.

Example configuration:

output.kafka:
  # initial brokers for reading cluster metadata
  hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]

  # message topic selection + partitioning
  topic: '%{[fields.log_topic]}'
  partition.round_robin:
    reachable_only: false

  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000

Events bigger than max_message_bytes will be dropped. To avoid this problem, make sure Winlogbeat does not generate events bigger than max_message_bytes.

Compatibilityedit

This output works with all Kafka versions in between 0.11 and 2.0.0. Older versions might work as well, but are not supported.

Configuration optionsedit

You can specify the following options in the kafka section of the winlogbeat.yml config file:

enablededit

The enabled config is a boolean setting to enable or disable the output. If set to false, the output is disabled.

The default value is true.

hostsedit

The list of Kafka broker addresses from where to fetch the cluster metadata. The cluster metadata contain the actual Kafka brokers events are published to.

versionedit

Kafka version winlogbeat is assumed to run against. Defaults to 1.0.0.

Event timestamps will be added, if version 0.10.0.0+ is enabled.

Valid values are all kafka releases in between 0.8.2.0 and 2.0.0.

See Compatibility for information on supported versions.

usernameedit

The username for connecting to Kafka. If username is configured, the password must be configured as well. Only SASL/PLAIN is supported.

passwordedit

The password for connecting to Kafka.

topicedit

The Kafka topic used for produced events.

You can set the topic dynamically by using a format string to access any event field. For example, this configuration uses a custom field, fields.log_topic, to set the topic for each event:

topic: '%{[fields.log_topic]}'

To learn how to add custom fields to events, see the fields option.

See the topics setting for other ways to set the topic dynamically.

topicsedit

An array of topic selector rules. Each rule specifies the topic to use for events that match the rule. During publishing, Winlogbeat sets the topic for each event based on the first matching rule in the array. Rules can contain conditionals, format string-based fields, and name mappings. If the topics setting is missing or no rule matches, the topic field is used.

Rule settings:

topic
The topic format string to use. If this string contains field references, such as %{[fields.name]}, the fields must exist, or the rule fails.
mappings
A dictionary that takes the value returned by topic and maps it to a new name.
default
The default string value to use if mappings does not find a match.
when
A condition that must succeed in order to execute the current rule. All the conditions supported by processors are also supported here.

keyedit

Optional Kafka event key. If configured, the event key must be unique and can be extracted from the event using a format string.

partitionedit

Kafka output broker event partitioning strategy. Must be one of random, round_robin, or hash. By default the hash partitioner is used.

random.group_events: Sets the number of events to be published to the same partition, before the partitioner selects a new partition by random. The default value is 1 meaning after each event a new partition is picked randomly.

round_robin.group_events: Sets the number of events to be published to the same partition, before the partitioner selects the next partition. The default value is 1 meaning after each event the next partition will be selected.

hash.hash: List of fields used to compute the partitioning hash value from. If no field is configured, the events key value will be used.

hash.random: Randomly distribute events if no hash or key value can be computed.

All partitioners will try to publish events to all partitions by default. If a partition’s leader becomes unreachable for the beat, the output might block. All partitioners support setting reachable_only to overwrite this behavior. If reachable_only is set to true, events will be published to available partitions only.

Publishing to a subset of available partitions potentially increases resource usage because events may become unevenly distributed.

client_idedit

The configurable ClientID used for logging, debugging, and auditing purposes. The default is "beats".

workeredit

The number of concurrent load-balanced Kafka output workers.

codecedit

Output codec configuration. If the codec section is missing, events will be json encoded.

See Change the output codec for more information.

metadataedit

Kafka metadata update settings. The metadata do contain information about brokers, topics, partition, and active leaders to use for publishing.

refresh_frequency
Metadata refresh interval. Defaults to 10 minutes.
retry.max
Total number of metadata update retries when cluster is in middle of leader election. The default is 3.
retry.backoff
Waiting time between retries during leader elections. Default is 250ms.

max_retriesedit

Winlogbeat ignores the max_retries setting and retries indefinitely.

bulk_max_sizeedit

The maximum number of events to bulk in a single Kafka request. The default is 2048.

timeoutedit

The number of seconds to wait for responses from the Kafka brokers before timing out. The default is 30 (seconds).

broker_timeoutedit

The maximum duration a broker will wait for number of required ACKs. The default is 10s.

channel_buffer_sizeedit

Per Kafka broker number of messages buffered in output pipeline. The default is 256.

keep_aliveedit

The keep-alive period for an active network connection. If 0s, keep-alives are disabled. The default is 0 seconds.

compressionedit

Sets the output compression codec. Must be one of none, snappy, lz4 and gzip. The default is gzip.

compression_leveledit

Sets the compression level used by gzip. Setting this value to 0 disables compression. The compression level must be in the range of 1 (best speed) to 9 (best compression).

Increasing the compression level will reduce the network usage but will increase the cpu usage.

The default value is 4.

max_message_bytesedit

The maximum permitted size of JSON-encoded messages. Bigger messages will be dropped. The default value is 1000000 (bytes). This value should be equal to or less than the broker’s message.max.bytes.

required_acksedit

The ACK reliability level required from broker. 0=no response, 1=wait for local commit, -1=wait for all replicas to commit. The default is 1.

Note: If set to 0, no ACKs are returned by Kafka. Messages might be lost silently on error.

ssledit

Configuration options for SSL parameters like the root CA for Kafka connections. See Specify SSL settings for more information.