Configuration Reference
16 minute read
This section provides a comprehensive reference of all configuration parameters for the Syslog source node, organized by category.
General Parameters
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
name | string | - | Yes | Unique identifier for the syslog input node |
type | string | - | Yes | Must be syslog_input |
protocol | string | - | Yes | Syslog protocol: rfc3164 (RFC 3164) or rfc5424 (RFC 5424) |
transport_protocol | string | - | Yes | Network transport: udp or tcp |
port | integer | - | Yes | Port number to listen on (min: 1, max: 65535, e.g., 514, 5514, 6514) |
listen | string | 0.0.0.0 | No | IP address to bind to. Use 0.0.0.0 for all interfaces |
encoding | string | utf-8 | No | Character encoding. Valid options: utf-8, utf-16le, utf-16be, ascii, big5 |
location | string | Local TZ | No | IANA timezone for timestamp parsing (e.g., America/New_York) |
RFC 6587 Framing Parameters
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
enable_octet_counting | boolean | false | No | Enable RFC 6587 Octet Counting framing (TCP + RFC 5424 only). Incompatible with allow_skip_pri_header |
max_octets | integer | 8192 | No | Maximum message size in bytes for octet counting (min: 1) |
non_transparent_framing_trailer | string | - | No | Trailer for RFC 6587 Non-Transparent-Framing. Valid options: LF (line feed) or NUL (null character) |
allow_skip_pri_header | boolean | false | No | Allow messages without priority header (non-standard syslog). Incompatible with enable_octet_counting |
Common Transport Parameters
These parameters are configured at the node level and work with both TCP and UDP:
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
max_log_size | string | 1MiB | No | Maximum size of a single log entry (e.g., 5MiB, 10MiB) |
add_attributes | boolean | false | No | Add OpenTelemetry net.* semantic convention attributes |
preserve_leading_whitespaces | boolean | false | No | Preserve leading whitespace in log messages |
preserve_trailing_whitespaces | boolean | false | No | Preserve trailing whitespace in log messages |
TLS Parameters (TCP Only)
Configure TLS encryption using otel_tls: when using transport_protocol: tcp:
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
cert_file | string | - | No | Path to the TLS certificate file for server authentication |
key_file | string | - | No | Path to the TLS private key file |
ca_file | string | - | No | Path to the CA certificate bundle for verifying client certificates |
client_ca_file | string | - | No | Path to the client CA certificate for mutual TLS authentication |
Async UDP Processing Parameters
Configure these parameters using udp_async: when using transport_protocol: udp:
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
readers | integer | 1 | No | Number of concurrent UDP socket readers (min: 1, for high-volume scenarios) |
processors_count | integer | 1 | No | Number of concurrent message processors (min: 1) |
max_queue_length | integer | 100 | No | Maximum queue size between readers and processors (min: 1) |
Multiline Log Parameters
Configure these parameters under multiline: at the node level (works with both TCP and UDP transport protocols):
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
line_start_pattern | string | - | No | Regex pattern matching the start of a new log entry |
line_end_pattern | string | - | No | Regex pattern matching the end of a log entry |
omit_pattern | boolean | false | No | Omit the matching pattern from output |
Note: UDP multiline support is limited by packet boundaries. TCP is recommended for reliable multiline log handling.
Configuration Incompatibilities
Certain configuration options are mutually exclusive and cannot be used together:
enable_octet_counting vs allow_skip_pri_header
These two parameters are incompatible and cannot both be enabled:
enable_octet_counting: true: Requires standard RFC 5424 messages with priority headers for proper octet counting framingallow_skip_pri_header: true: Allows non-standard messages without priority headers
Invalid Configuration:
nodes:
- name: invalid_config
type: syslog_input
protocol: rfc5424
transport_protocol: tcp
port: 514
enable_octet_counting: true # CONFLICT!
allow_skip_pri_header: true # CONFLICT!
Valid Configurations:
Use octet counting with standard syslog (FortiGate, enterprise firewalls):
nodes:
- name: enterprise_syslog
type: syslog_input
protocol: rfc5424
transport_protocol: tcp
port: 514
enable_octet_counting: true
allow_skip_pri_header: false # Default, can be omitted
Allow non-standard messages without octet counting (legacy systems):
nodes:
- name: legacy_syslog
type: syslog_input
protocol: rfc3164
transport_protocol: tcp
port: 514
enable_octet_counting: false # Default, can be omitted
allow_skip_pri_header: true
Protocol and Transport Compatibility
Some features only work with specific protocol and transport combinations:
| Feature | Required Protocol | Required Transport | Notes |
|---|---|---|---|
enable_octet_counting | rfc5424 | tcp | RFC 6587 Octet Counting only works with RFC 5424 over TCP |
non_transparent_framing_trailer | rfc5424 | tcp | RFC 6587 Non-Transparent-Framing only works with RFC 5424 over TCP |
max_octets | rfc5424 | tcp | Only applicable when enable_octet_counting: true |
otel_tls | Any | tcp | TLS encryption only supported over TCP transport |
udp_async | Any | udp | Async processing only available for UDP transport |
OpenTelemetry Attributes
When add_attributes is enabled, the following OpenTelemetry semantic convention attributes are automatically added:
| Attribute | Description |
|---|---|
net.peer.ip | Source IP address of the syslog sender |
net.peer.port | Source port number |
net.host.ip | Destination (Edge Delta) IP address |
net.host.port | Destination port number |
Required Parameters
name
A descriptive name for the node. This is the name that will appear in pipeline builder and you can reference this node in the YAML using the name. It must be unique across all nodes. It is a YAML list element so it begins with a - and a space followed by the string. It is a required parameter for all nodes.
nodes:
- name: <node name>
type: <node type>
type: syslog_input
The type parameter specifies the type of node being configured. It is specified as a string from a closed list of node types. It is a required parameter.
nodes:
- name: <node name>
type: <node type>
protocol
The protocol parameter specifies which syslog format standard to use for parsing incoming messages.
RFC 3164 (rfc3164) - Traditional BSD syslog:
- Older format widely supported by legacy systems
- Simple structure with limited metadata
- Format:
<priority>timestamp hostname tag: message - Best for compatibility with older devices and systems
RFC 5424 (rfc5424) - Structured syslog:
- Modern format with enhanced structure
- Supports structured data elements for key-value pairs
- ISO 8601 timestamps with timezone support
- Includes version, message ID, and structured data fields
- Recommended for new deployments
It is specified as a string and is a required parameter.
nodes:
- name: <node name>
type: syslog_input
protocol: rfc5424
transport_protocol: <transport>
port: <port>
transport_protocol
The transport_protocol parameter specifies the network protocol for receiving syslog messages.
UDP Transport (udp):
- Connectionless, fire-and-forget protocol
- Lower overhead and resource usage
- No delivery confirmation
- Common for traditional syslog implementations
- Best for high-volume, non-critical logs
TCP Transport (tcp):
- Connection-oriented with delivery acknowledgment
- Reliable message delivery
- Higher resource usage
- Supports larger messages
- Recommended for critical logs requiring guaranteed delivery
It is specified as a string and is a required parameter.
nodes:
- name: <node name>
type: syslog_input
protocol: <protocol>
transport_protocol: udp
port: <port>
port
The port parameter specifies the network port to listen on for incoming syslog messages. Common ports include:
- 514: Standard syslog port (requires elevated privileges)
- 5514, 6514: Common alternative ports
It is specified as an integer and is a required parameter.
nodes:
- name: <node name>
type: syslog_input
protocol: <protocol>
transport_protocol: <transport>
port: 5514
Optional Parameters
listen
The listen parameter specifies the IP address to bind to for listening. Use “0.0.0.0” to listen on all interfaces. Default is “0.0.0.0”.
It is specified as a string and is optional.
nodes:
- name: <node name>
type: syslog_input
protocol: <protocol>
transport_protocol: <transport>
port: <port>
listen: "0.0.0.0"
encoding
The encoding parameter specifies the character encoding for syslog messages. Default is “utf-8”.
Valid encoding options:
utf-8: Unicode (default, recommended for most use cases)utf-16le: UTF-16 Little Endianutf-16be: UTF-16 Big Endianascii: ASCII encodingbig5: Traditional Chinese encoding
It is specified as a string and is optional.
nodes:
- name: <node name>
type: syslog_input
protocol: <protocol>
transport_protocol: <transport>
port: <port>
encoding: utf-8
location
The location parameter specifies the timezone location for parsing timestamps that don’t include timezone information. Uses IANA timezone names.
Examples: “America/New_York”, “Europe/London”, “Asia/Tokyo”
It is specified as a string and is optional.
nodes:
- name: <node name>
type: syslog_input
protocol: <protocol>
transport_protocol: <transport>
port: <port>
location: America/New_York
Advanced TCP/UDP Options
max_log_size
The max_log_size parameter sets the maximum allowed size for a single log entry to protect against memory exhaustion from malformed or malicious inputs. Messages exceeding this size are rejected.
It is specified as a string with units (e.g., 1MiB, 5MiB, 10MiB) and is optional. Default is 1MiB.
TCP Configuration:
nodes:
- name: <node name>
type: syslog_input
protocol: <protocol>
transport_protocol: tcp
port: <port>
max_log_size: 5MiB
UDP Configuration:
nodes:
- name: <node name>
type: syslog_input
protocol: <protocol>
transport_protocol: udp
port: <port>
max_log_size: 16KiB
When to Increase:
- Legitimate logs exceed default 1MiB limit
- Application stack traces or debug logs are large
- Compliance requires full message capture
Security Consideration: Set this as low as practical to prevent DoS attacks through oversized messages.
add_attributes
The add_attributes parameter enables automatic addition of OpenTelemetry semantic convention network attributes, providing standardized metadata about the connection.
It is specified as a boolean and is optional. Default is false.
TCP Configuration:
nodes:
- name: <node name>
type: syslog_input
protocol: <protocol>
transport_protocol: tcp
port: <port>
add_attributes: true
UDP Configuration:
nodes:
- name: <node name>
type: syslog_input
protocol: <protocol>
transport_protocol: udp
port: <port>
add_attributes: true
Attributes Added:
net.peer.ip- Source IP addressnet.peer.port- Source portnet.host.ip- Destination IPnet.host.port- Destination port
When to Enable:
- OpenTelemetry-compatible downstream systems
- Need to track source IP for security/audit
- Building correlation across telemetry types
preserve_leading_whitespaces / preserve_trailing_whitespaces
These parameters control whether leading and trailing whitespace is preserved in log messages. By default, Edge Delta trims whitespace for cleaner processing.
Both are specified as booleans and are optional. Default is false.
TCP Configuration:
nodes:
- name: <node name>
type: syslog_input
protocol: <protocol>
transport_protocol: tcp
port: <port>
preserve_leading_whitespaces: true
preserve_trailing_whitespaces: true
When to Enable:
- Whitespace is semantically significant in your logs
- Compliance requires exact message preservation
- Forensic analysis needs character-perfect logs
- Downstream systems depend on original formatting
Multiline Log Support
Multiline support allows the syslog input to handle log messages that span multiple lines, such as stack traces, formatted output, or multi-line error messages.
multiline.line_start_pattern
The line_start_pattern parameter defines a regular expression that matches the beginning of a new log entry. Lines not matching this pattern are appended to the previous log.
It is specified as a string (regex) and is optional.
TCP Configuration for Java Stack Traces:
nodes:
- name: <node name>
type: syslog_input
protocol: rfc5424
transport_protocol: tcp
port: <port>
multiline:
line_start_pattern: '^<\d+>1 \d{4}-\d{2}-\d{2}|^\s+at '
Common Patterns:
Java Stack Traces:
multiline:
line_start_pattern: '^\d{4}-\d{2}-\d{2}|^\s+at |^Caused by:'
Python Tracebacks:
multiline:
line_start_pattern: '^Traceback|^\s+File |^\w+Error:|^\w+Exception:'
Generic Timestamp-Based:
multiline:
line_start_pattern: '^\[\d{4}-\d{2}-\d{2}|^\d{4}-\d{2}-\d{2}|^<\d+>'
Application Logs with Timestamps:
multiline:
line_start_pattern: '^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}'
multiline.line_end_pattern
Alternative to line_start_pattern, the line_end_pattern defines a regex matching the end of a log entry.
multiline:
line_end_pattern: '\n$'
multiline.omit_pattern
The omit_pattern parameter controls whether the matching pattern is included in the output.
It is specified as a boolean and is optional. Default is false.
multiline:
line_start_pattern: '^\[TIMESTAMP\]'
omit_pattern: true # Remove the [TIMESTAMP] marker
Complete Multiline Example:
nodes:
- name: app_logs_multiline
type: syslog_input
protocol: rfc5424
transport_protocol: tcp
port: 6514
multiline:
line_start_pattern: '^<\d+>1 \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}'
omit_pattern: false
max_log_size: 10MiB # Increase for large multiline messages
Performance Impact:
- Multiline parsing adds CPU overhead
- Memory usage increases with message accumulation
- Test patterns thoroughly before production deployment
- Monitor for unexpected message grouping
UDP Limitations:
- UDP multiline support is limited by packet boundaries
- Each UDP packet is typically a complete message
- Use TCP for reliable multiline log handling
RFC 6587 Parameters
enable_octet_counting
The enable_octet_counting parameter enables RFC 6587 Octet Counting framing for TCP syslog, required by FortiGate and other enterprise devices.
It is specified as a boolean and is optional. Default is false. Only works with transport_protocol: tcp and protocol: rfc5424.
nodes:
- name: <node name>
type: syslog_input
protocol: rfc5424
transport_protocol: tcp
port: <port>
enable_octet_counting: true
max_octets: 8192
See the RFC 6587 Framing Support section for detailed information.
max_octets
The max_octets parameter sets the maximum message size in bytes when using octet counting.
It is specified as an integer and is optional. Default is 8192.
enable_octet_counting: true
max_octets: 16384
non_transparent_framing_trailer
The non_transparent_framing_trailer parameter specifies the delimiter for RFC 6587 Non-Transparent-Framing mode.
It is specified as a string and is optional.
Valid trailer options:
LF: Line feed character (newline, most common)NUL: Null character (less common)
nodes:
- name: <node name>
type: syslog_input
protocol: rfc5424
transport_protocol: tcp
port: <port>
non_transparent_framing_trailer: LF
allow_skip_pri_header
The allow_skip_pri_header parameter allows processing of non-standard syslog messages that lack the priority header (<###>).
It is specified as a boolean and is optional. Default is false.
nodes:
- name: <node name>
type: syslog_input
protocol: rfc3164
transport_protocol: <transport>
port: <port>
allow_skip_pri_header: true
When to Enable:
- Legacy systems sending non-standard syslog
- Custom applications not following RFC format
- Troubleshooting message format issues
Limitations:
priority,severity, andfacilityfields will be null/missing- Cannot determine message criticality without priority
- May indicate misconfigured source
rate_limit
The rate_limit parameter enables you to control data ingestion based on system resource usage. This advanced setting helps prevent source nodes from overwhelming the agent by automatically throttling or stopping data collection when CPU or memory thresholds are exceeded.
Use rate limiting to prevent runaway log collection from overwhelming the agent in high-volume sources, protect agent stability in resource-constrained environments with limited CPU/memory, automatically throttle during bursty traffic patterns, and ensure fair resource allocation across source nodes in multi-tenant deployments.
When rate limiting triggers, pull-based sources (File, S3, HTTP Pull) stop fetching new data, push-based sources (HTTP, TCP, UDP, OTLP) reject incoming data, and stream-based sources (Kafka, Pub/Sub) pause consumption. Rate limiting operates at the source node level, where each source with rate limiting enabled independently monitors and enforces its own thresholds.
Configuration Steps:
- Click Add New in the Rate Limit section
- Click Add New for Evaluation Policy
- Select Policy Type:
- CPU Usage: Monitors CPU consumption and rate limits when usage exceeds defined thresholds. Use for CPU-intensive sources like file parsing or complex transformations.
- Memory Usage: Monitors memory consumption and rate limits when usage exceeds defined thresholds. Use for memory-intensive sources like large message buffers or caching.
- AND (composite): Combines multiple sub-policies with AND logic. All sub-policies must be true simultaneously to trigger rate limiting. Use when you want conservative rate limiting (both CPU and memory must be high).
- OR (composite): Combines multiple sub-policies with OR logic. Any sub-policy can trigger rate limiting. Use when you want aggressive rate limiting (either CPU or memory being high triggers).
- Select Evaluation Mode. Choose how the policy behaves when thresholds are exceeded:
- Enforce (default): Actively applies rate limiting when thresholds are met. Pull-based sources (File, S3, HTTP Pull) stop fetching new data, push-based sources (HTTP, TCP, UDP, OTLP) reject incoming data, and stream-based sources (Kafka, Pub/Sub) pause consumption. Use in production to protect agent resources.
- Monitor: Logs when rate limiting would occur without actually limiting data flow. Use for testing thresholds before enforcing them in production.
- Passthrough: Disables rate limiting entirely while keeping the configuration in place. Use to temporarily disable rate limiting without removing configuration.
- Set Absolute Limits and Relative Limits (for CPU Usage and Memory Usage policies)
Note: If you specify both absolute and relative limits, the system evaluates both conditions and rate limiting triggers when either condition is met (OR logic). For example, if you set absolute limit to
1.0CPU cores and relative limit to50%, rate limiting triggers when the source uses either 1 full core OR 50% of available CPU, whichever happens first.
For CPU Absolute Limits: Enter value in full core units:
0.1= one-tenth of a CPU core0.5= half a CPU core1.0= one full CPU core2.0= two full CPU cores
For CPU Relative Limits: Enter percentage of total available CPU (0-100):
50= 50% of available CPU75= 75% of available CPU85= 85% of available CPU
For Memory Absolute Limits: Enter value in bytes
104857600= 100Mi (100 × 1024 × 1024)536870912= 512Mi (512 × 1024 × 1024)1073741824= 1Gi (1 × 1024 × 1024 × 1024)
For Memory Relative Limits: Enter percentage of total available memory (0-100)
60= 60% of available memory75= 75% of available memory80= 80% of available memory
- Set Refresh Interval (for CPU Usage and Memory Usage policies). Specify how frequently the system checks resource usage:
- Recommended Values:
10sto30sfor most use cases5sto10sfor high-volume sources requiring quick response1mor higher for stable, low-volume sources
The system fetches current CPU/memory usage at the specified refresh interval and uses that value for evaluation until the next refresh. Shorter intervals provide more responsive rate limiting but incur slightly higher overhead, while longer intervals are more efficient but slower to react to sudden resource spikes.
The GUI generates YAML as follows:
# Simple CPU-based rate limiting
nodes:
- name: <node name>
type: <node type>
rate_limit:
evaluation_policy:
policy_type: cpu_usage
evaluation_mode: enforce
absolute_limit: 0.5 # Limit to half a CPU core
refresh_interval: 10s
# Simple memory-based rate limiting
nodes:
- name: <node name>
type: <node type>
rate_limit:
evaluation_policy:
policy_type: memory_usage
evaluation_mode: enforce
absolute_limit: 536870912 # 512Mi in bytes
refresh_interval: 30s
Composite Policies (AND / OR)
When using AND or OR policy types, you define sub-policies instead of limits. Sub-policies must be siblings (at the same level)—do not nest sub-policies within other sub-policies. Each sub-policy is independently evaluated, and the parent policy’s evaluation mode applies to the composite result.
- AND Logic: All sub-policies must evaluate to true at the same time to trigger rate limiting. Use when you want conservative rate limiting (limit only when CPU AND memory are both high).
- OR Logic: Any sub-policy evaluating to true triggers rate limiting. Use when you want aggressive protection (limit when either CPU OR memory is high).
Configuration Steps:
- Select AND (composite) or OR (composite) as the Policy Type
- Choose the Evaluation Mode (typically Enforce)
- Click Add New under Sub-Policies to add the first condition
- Configure the first sub-policy by selecting policy type (CPU Usage or Memory Usage), selecting evaluation mode, setting absolute and/or relative limits, and setting refresh interval
- In the parent policy (not within the child), click Add New again to add a sibling sub-policy
- Configure additional sub-policies following the same pattern
The GUI generates YAML as follows:
# AND composite policy - both CPU AND memory must exceed limits
nodes:
- name: <node name>
type: <node type>
rate_limit:
evaluation_policy:
policy_type: and
evaluation_mode: enforce
sub_policies:
# First sub-policy (sibling)
- policy_type: cpu_usage
evaluation_mode: enforce
absolute_limit: 0.75 # Limit to 75% of one core
refresh_interval: 15s
# Second sub-policy (sibling)
- policy_type: memory_usage
evaluation_mode: enforce
absolute_limit: 1073741824 # 1Gi in bytes
refresh_interval: 15s
# OR composite policy - either CPU OR memory can trigger
nodes:
- name: <node name>
type: <node type>
rate_limit:
evaluation_policy:
policy_type: or
evaluation_mode: enforce
sub_policies:
- policy_type: cpu_usage
evaluation_mode: enforce
relative_limit: 85 # 85% of available CPU
refresh_interval: 20s
- policy_type: memory_usage
evaluation_mode: enforce
relative_limit: 80 # 80% of available memory
refresh_interval: 20s
# Monitor mode for testing thresholds
nodes:
- name: <node name>
type: <node type>
rate_limit:
evaluation_policy:
policy_type: memory_usage
evaluation_mode: monitor # Only logs, doesn't limit
relative_limit: 70 # Test at 70% before enforcing
refresh_interval: 30s
source_metadata
This option is used to define which detected resources and attributes to add to each data item as it is ingested by Edge Delta. You can select:
- Required Only: This option includes the minimum required resources and attributes for Edge Delta to operate.
- Default: This option includes the required resources and attributes plus those selected by Edge Delta
- High: This option includes the required resources and attributes along with a larger selection of common optional fields.
- Custom: With this option selected, you can choose which attributes and resources to include. The required fields are selected by default and can’t be unchecked.
Based on your selection in the GUI, the source_metadata YAML is populated as two dictionaries (resource_attributes and attributes) with Boolean values.
See Choose Data Item Metadata for more information on selecting metadata.