Configuration Reference

Complete configuration parameter reference for the Edge Delta Syslog source node.

This section provides a comprehensive reference of all configuration parameters for the Syslog source node, organized by category.

General Parameters

ParameterTypeDefaultRequiredDescription
namestring-YesUnique identifier for the syslog input node
typestring-YesMust be syslog_input
protocolstring-YesSyslog protocol: rfc3164 (RFC 3164) or rfc5424 (RFC 5424)
transport_protocolstring-YesNetwork transport: udp or tcp
portinteger-YesPort number to listen on (min: 1, max: 65535, e.g., 514, 5514, 6514)
listenstring0.0.0.0NoIP address to bind to. Use 0.0.0.0 for all interfaces
encodingstringutf-8NoCharacter encoding. Valid options: utf-8, utf-16le, utf-16be, ascii, big5
locationstringLocal TZNoIANA timezone for timestamp parsing (e.g., America/New_York)

RFC 6587 Framing Parameters

ParameterTypeDefaultRequiredDescription
enable_octet_countingbooleanfalseNoEnable RFC 6587 Octet Counting framing (TCP + RFC 5424 only). Incompatible with allow_skip_pri_header
max_octetsinteger8192NoMaximum message size in bytes for octet counting (min: 1)
non_transparent_framing_trailerstring-NoTrailer for RFC 6587 Non-Transparent-Framing. Valid options: LF (line feed) or NUL (null character)
allow_skip_pri_headerbooleanfalseNoAllow 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:

ParameterTypeDefaultRequiredDescription
max_log_sizestring1MiBNoMaximum size of a single log entry (e.g., 5MiB, 10MiB)
add_attributesbooleanfalseNoAdd OpenTelemetry net.* semantic convention attributes
preserve_leading_whitespacesbooleanfalseNoPreserve leading whitespace in log messages
preserve_trailing_whitespacesbooleanfalseNoPreserve trailing whitespace in log messages

TLS Parameters (TCP Only)

Configure TLS encryption using otel_tls: when using transport_protocol: tcp:

ParameterTypeDefaultRequiredDescription
cert_filestring-NoPath to the TLS certificate file for server authentication
key_filestring-NoPath to the TLS private key file
ca_filestring-NoPath to the CA certificate bundle for verifying client certificates
client_ca_filestring-NoPath to the client CA certificate for mutual TLS authentication

Async UDP Processing Parameters

Configure these parameters using udp_async: when using transport_protocol: udp:

ParameterTypeDefaultRequiredDescription
readersinteger1NoNumber of concurrent UDP socket readers (min: 1, for high-volume scenarios)
processors_countinteger1NoNumber of concurrent message processors (min: 1)
max_queue_lengthinteger100NoMaximum 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):

ParameterTypeDefaultRequiredDescription
line_start_patternstring-NoRegex pattern matching the start of a new log entry
line_end_patternstring-NoRegex pattern matching the end of a log entry
omit_patternbooleanfalseNoOmit 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 framing
  • allow_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:

FeatureRequired ProtocolRequired TransportNotes
enable_octet_countingrfc5424tcpRFC 6587 Octet Counting only works with RFC 5424 over TCP
non_transparent_framing_trailerrfc5424tcpRFC 6587 Non-Transparent-Framing only works with RFC 5424 over TCP
max_octetsrfc5424tcpOnly applicable when enable_octet_counting: true
otel_tlsAnytcpTLS encryption only supported over TCP transport
udp_asyncAnyudpAsync processing only available for UDP transport

OpenTelemetry Attributes

When add_attributes is enabled, the following OpenTelemetry semantic convention attributes are automatically added:

AttributeDescription
net.peer.ipSource IP address of the syslog sender
net.peer.portSource port number
net.host.ipDestination (Edge Delta) IP address
net.host.portDestination 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 Endian
  • utf-16be: UTF-16 Big Endian
  • ascii: ASCII encoding
  • big5: 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 address
  • net.peer.port - Source port
  • net.host.ip - Destination IP
  • net.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, and facility fields 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:

  1. Click Add New in the Rate Limit section
  2. Click Add New for Evaluation Policy
  3. 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).
  1. 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.
  1. 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.0 CPU cores and relative limit to 50%, 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 core
    • 0.5 = half a CPU core
    • 1.0 = one full CPU core
    • 2.0 = two full CPU cores
  • For CPU Relative Limits: Enter percentage of total available CPU (0-100):

    • 50 = 50% of available CPU
    • 75 = 75% of available CPU
    • 85 = 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 memory
    • 75 = 75% of available memory
    • 80 = 80% of available memory
  1. Set Refresh Interval (for CPU Usage and Memory Usage policies). Specify how frequently the system checks resource usage:
  • Recommended Values:
    • 10s to 30s for most use cases
    • 5s to 10s for high-volume sources requiring quick response
    • 1m or 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:

  1. Select AND (composite) or OR (composite) as the Policy Type
  2. Choose the Evaluation Mode (typically Enforce)
  3. Click Add New under Sub-Policies to add the first condition
  4. 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
  5. In the parent policy (not within the child), click Add New again to add a sibling sub-policy
  6. 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.