Advanced configurations
Agent: healthbeat
Generic Settings
You can specify advanced settings in the healthbeat.yml configuration file to control the general behaviour of Healthbeat and the events it publishes to vuSmartMaps.
This includes:
- Healthbeat-specific global options (for example, startup delay between metricsets).
- Generic agent options, common to all vuSmartMaps Beats-based agents (name, tags, custom fields, processors, etc.).
Global Healthbeat configuration options
metricbeat.max_start_delay
The maximum random delay to apply to the startup of a metricset.
Random delays in the range [0, max_start_delay) are applied to reduce the “thundering herd” effect that can occur if a fleet of machines running Healthbeat are restarted at the same time.
- Type: duration (e.g. 10s, 1m)
- Default: 10s
- Value 0 disables the startup delay.
healthbeat.max_start_delay: 10s
timeseries.enabled
When this is enabled, Healthbeat adds a timeseries.instance field to all generated events. For a given metricset, this field is unique for every individual item being monitored (for example, per disk, per interface, per process).
- Type: boolean
- Default: false
timeseries.enabled: true
Agent: logbeat
Configure general settings
You configure Logbeat in logbeat.yml. Settings control:
-
Global Logbeat behaviour (registry, shutdown).
-
General Beat options like name, tags, custom fields.
Global Logbeat configuration options
These options live under the filebeat.* namespace.
filebeat.registry.path
Root path of the Logbeat registry. Relative paths are resolved relative to path.data.
filebeat.registry.path: registry
- Default:
${path.data}/registry - The registry is only updated when new events are flushed (not on a fixed timer).
filebeat.registry.file_permissions
Permissions mask for registry data files (Unix only).
filebeat.registry.file_permissions: 0600
- Default: 0600
- Most permissive: 0640
- Must be specified as octal.
filebeat.registry.flush
Controls how often registry changes are flushed to disk.
filebeat.registry.flush: 1s
- Default: 1s
- 0s → registry written after each successful batch publish.
filebeat.registry.migrate_file
Used when migrating from an older single-file registry to the new directory format.
filebeat.registry.path: `${path.data}/registry`
filebeat.registry.migrate_file: /path/to/old/registry_file
Logbeat will migrate only if the new registry directory does not already exist.
filebeat.shutdown_timeout
Maximum time Logbeat waits on shutdown for the publisher to flush events.
filebeat.shutdown_timeout: 5s
- Default: disabled (no waiting; un-acked events may be resent on restart).
Configure inputs
You define inputs under filebeat.inputs to tell Logbeat which files to read and how to parse them.
filebeat.inputs:
- type: filestream
id: my-filestream-id
paths:
- /var/log/system.log
- /var/log/wifi.log
Each input is a YAML list item (-), and you can define multiple inputs.
Filestream input (recommended)
Filestream is the improved replacement for the old log input.
Basic example:
filebeat.inputs:
- type: filestream
id: app-logs
paths:
- /var/log/app/*.log
Each filestream input must have a unique id to track file state correctly.
Key options (filestream):
- paths: list of glob paths.
- exclude_lines / include_lines: regexp filters.
- buffer_size: read buffer size (bytes).
- message_max_bytes: max length of a single message.
- parsers: pipeline (multiline, ndjson, container, syslog, include_message).
- file_identity: fingerprint (default), native, path, inode_marker.
- close.*, clean_*, backoff.*, harvester_limit: lifecycle & performance tuning.
Reading GZIP logs (beta)
filebeat.inputs:
- type: filestream
id: "gzip-filestream"
paths:
- /var/some-app/app.log*
gzip_experimental: true
- Requires file_identity: fingerprint (default).
- Logs are decompressed in memory; ~100KB extra per harvester.
log input
The log input is deprecated. Use filestream instead.
Legacy example:
filebeat.inputs:
- type: log
paths:
- /var/log/messages
- /var/log/*.log
All the classic options (paths, encoding, exclude_lines, include_lines, ignore_older, close_*, clean_*, scan_frequency, tail_files, backoff, harvester_limit, file_identity, etc.) work similarly, but new configs should migrate to filestream.
Manage multiline messages
Use multiline settings to merge multi-line log events (stack traces, multi-line errors, custom blocks) into single events before sending to Kafka.
With filestream input
filebeat.inputs:
- type: filestream
id: java-traces
paths:
- /var/log/app/*.log
parsers:
- multiline:
type: pattern
pattern: '^\['
negate: true
match: after
With deprecated log input
filebeat.inputs:
- type: log
paths:
- /var/log/app/*.log
multiline.type: pattern
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
Core multiline options
- multiline.type: pattern | count | while_pattern
- multiline.pattern: '<regexp>'
- multiline.negate: true | false
- multiline.match: after | before
- multiline.flush_pattern: '<regexp>'
- multiline.max_lines: 500 (default)
- multiline.timeout: 5s (default)
- multiline.count_lines (for type: count)
- multiline.skip_newline: true|false
Example – Java stack trace (indented lines)
multiline.type: pattern
multiline.pattern: '^[[:space:]]'
multiline.negate: false
multiline.match: after