Overview
Zylon supports internal log storage and external log delivery through syslog and HTTP.- Syslog delivery is intended for SIEM applications and log collectors that accept syslog or CEF events.
- HTTP delivery is intended for structured ingestion endpoints, cloud log destinations, and customer-managed collection pipelines.
- Delivery is asynchronous.
- With
failurePolicy: "drop", delivery is designed to stay off the critical request path when queues are full. - Delivered events can be filtered by action patterns and organization IDs.
- Stored logs stay in the customer’s Zylon deployment unless external log delivery through syslog or HTTP is enabled.
At a glance
Syslog and HTTP delivery can be enabled at the same time. When both are enabled, Zylon dispatches matching logs to both destinations. Filters, failure policy, queue, and batch settings are configured separately for each delivery method but follow the same behavior.
Before you configure delivery
- Confirm the collector endpoint is reachable from the Zylon backend.
- Confirm host or URL and port.
- Select transport and format.
- Decide TLS certificate verification behavior.
- Configure collector-side input, index, parser, or ingestion route.
- Understand retention requirements in both Zylon and downstream systems.
- Review filters so required audit events are not excluded.
Choose a delivery channel
Storage and retention
Internal log storage is controlled underlogging.storage.
Storage keys
Retention keys
Internal log cleanup is controlled by the cleanup scheduler underzylonBackend.scheduler.cleanup.
Scheduler settings:
Under
logging:
External collectors such as SIEM platforms, syslog receivers, HTTP collectors, and data lakes have independent retention settings.
Stored log cleanup is off by default. The
180 day value applies only after both the cleanup scheduler and stored log cleanup are enabled.Syslog delivery
Syslog delivery sends formatted log records to a socket collector over TCP, TLS, or UDP. Userfc5424_json for structured syslog pipelines. Use cef when the collector has a native CEF input.
UDP is best-effort. It does not use stream framing and does not retry the current batch on write failure.
Supported syslog matrix
Backend tests confirm both syslog formats withtcp, tls, and udp.
Syslog keys
Underlogging.delivery.syslog:
Optional syslog keys
Optional syslog keys
Optional filter, delivery, queue, batch, and TLS settings are configured under their matching nested blocks in
logging.delivery.syslog.Under filters:Under
delivery:Under
delivery.reconnect:Under
delivery.queue:Under
delivery.batch:Under
tls:Syslog full example
Syslog simplified example
HTTP delivery
HTTP delivery sends structured JSON records to an HTTP collector. Use it for ingestion gateways, data lakes, or pipelines that transform Zylon’s canonical payload downstream. The supported HTTP format iscanonical_json. The schema value is zylon.canonical_json.v1.
HTTP supports POST, optional bearer authentication, static headers using Header=Value or Header: Value, retries for network errors and HTTP 5xx responses, and no retry for HTTP 4xx client errors.
Vendor-specific transformations should happen at the collector or ingestion layer.
HTTP keys
Underlogging.delivery.http:
Optional HTTP keys
Optional HTTP keys
Optional authentication, filter, delivery, queue, and batch settings are configured under their matching nested blocks in
logging.delivery.http.Under auth:Under
filters:Under
delivery:Under
delivery.retry:Under
delivery.queue:Under
delivery.batch:HTTP full example
HTTP simplified example
Filtering delivered events
Syslog and HTTP delivery use the same filter behavior underfilters.
Evaluation order:
- Exclude action patterns.
- Include action patterns.
- Included organization IDs.
Delivery behavior
The delivery pipeline is:- Zylon emits a structured log event.
- Delivery filters decide whether to deliver it externally.
- The event is normalized with severity, outcome, and actor metadata.
- The event is formatted as syslog, CEF, or canonical JSON.
- The formatted payload is placed on the async delivery queue.
- The delivery worker sends the event to the configured destination.
- Reconnect or retry behavior applies when delivery fails.
Operational controls
Keep all Zylon backend nodes synchronized to a trusted time source such as NTP. The Helm chart sets the cleanup scheduler timezone toUTC by default; if the runtime setting is omitted outside Helm, the backend uses the server JVM time zone. Log records should be reviewed in UTC for cross-system forensic correlation.
Treat changes to logging.storage, logging.delivery, filters, retention, and collector destinations as auditable deployment changes. Capture approvals and diffs in GitOps, change management, Kubernetes audit logs, or the infrastructure audit system used by the customer.
Delivered payload schemas use markers such as zylon.rfc5424_json.v1 and zylon.canonical_json.v1. SIEM parsers should route by schema marker and validate parser compatibility during upgrades.
Failure policies
Disk-backed external delivery spooling is not implemented.
Queue and batching
For syslog over UDP, the
maxEvents value under delivery.batch is forced to 1, because one datagram carries one event. For HTTP, multi-event batches are delivered as a JSON array.
Reconnect and retry
Syslog reconnect
TCP and TLS syslog delivery lazily opens a socket, reuses it, and retries the current batch once on a fresh connection after write failure. If retry fails, the reconnect backoff window applies.HTTP retry
HTTP delivery reuses one HTTP client and retries failed requests according to retry settings.
HTTP retries network exceptions and HTTP
5xx responses. HTTP 4xx responses are treated as client errors and are not retried.
TLS configuration
Local validation
- Enable one delivery channel.
- Apply configuration.
- Trigger an API action that emits a log, such as project creation or API token creation.
- Query the collector.
- Confirm the expected
event,action,log.id, and actor fields appear. - Check backend logs for delivery warnings.
zylon.rfc5424_json.v1for RFC 5424 JSON syslog payloads.CEF:0|Zylonfor CEF payloads.zylon.canonical_json.v1for HTTP payloads.- A known action such as
ws.project.create.
Troubleshooting
Recommended production defaults
For syslog and SIEM:- Prefer TLS where supported.
-
Prefer
rfc5424_jsonfor structured syslog ingestion unless the collector requires CEF. -
Use
octet_countingornewlineaccording to the collector input. - Enable certificate verification in production where possible.
-
Keep
failurePolicy: "drop"unless strict delivery completeness is more important than request latency. - Keep queue and batch defaults unless your destination requires different throughput, latency, or burst handling.
-
Keep stored log retention at or above
180days unless legal, security, and operations teams approve a shorter period.
- Use
canonical_json. - Keep vendor-specific transformations at the ingestion layer.
- Use bearer authentication and static headers when required by the collector.
- Tune retry settings for the collector’s availability profile.
- Confirm downstream retention in the customer-controlled collector.