Syslog Infrastructure
Purpose
The syslog infrastructure receives device events, enriches them with inventory context, persists them long enough for reliable handoff, and forwards them to the correct Splunk Cloud index.
Data Flow
graph LR
subgraph Sources["WxCDI Sources"]
VOS["CUCM / CUC / IMP / CER / Expressway"]
Infra["ASA / CSR / Network and Infrastructure"]
end
VOS -->|"UDP/514"| LB["Managed Load Balancer"]
Infra -->|"UDP/514"| LB
LB --> Service["Kubernetes Service"]
Service --> Syslog["syslog-ng StatefulSet"]
Inventory["Consolidated Inventory Metadata"] --> Syslog
Syslog --> Files["Structured Local Files"]
Files --> UF["Splunk Universal Forwarder"]
UF --> Splunk["Splunk Cloud Indexes"]
The production workload is documented as a StatefulSet with syslog-ng, a cleanup component, and Splunk Universal Forwarder containers. A load balancer distributes UDP/514 traffic across the service replicas.
Processing Stages
- Receive — syslog-ng listens on the managed network source.
- Parse — messages are parsed using the expected syslog format and device-specific rules.
- Enrich — inventory metadata adds customer and device context.
- Normalize — host and device type fields are rewritten to stable names.
- Route — known device types are written to their monitored paths; unresolved sources use the
unknown_syslogpath/index. - Forward — Splunk Universal Forwarder monitors the files and sends events to Splunk Cloud.
- Clean up — the cleanup process enforces local file lifecycle so receiver storage remains healthy.
Index Routing
Splunk monitor stanzas bind filesystem paths to an index and sourcetype. For example, firewall device logs are routed to the firewall syslog index. The authoritative mapping is the current chart/configuration; see Splunk Cloud for the documented index catalog.
Recurring unknown_syslog events mean the pipeline is receiving data but cannot map the source to expected inventory metadata. Treat this as an enrichment/inventory defect rather than hiding it with a broad parser rule.
Operational Checks
| Layer | Evidence |
|---|---|
| Device | Configured destination and local send/error counters |
| Network | Load-balancer listener, firewall path, and traffic counters |
| Kubernetes | Ready replicas, endpoints, restarts, events, and storage |
| syslog-ng | Receive rate, parse/rewrite errors, file output, unknown sources |
| Cleanup | Filesystem utilization and file age |
| Universal Forwarder | Watched paths, queue/backpressure, connection and forwarding errors |
| Splunk Cloud | Latest event time, host/device fields, index/sourcetype, regional destination |
Troubleshooting Sequence
- Search Splunk broadly enough to rule out wrong index, host, or time range.
- Compare
_timeand ingestion time to distinguish delay from loss. - Check
unknown_syslogand metadata mapping for the source. - Verify Universal Forwarder monitoring and output health.
- Confirm syslog-ng received and wrote the event.
- Check service endpoints, pods, load balancer, and firewall counters.
- Validate the device's configured destination and event generation.
See Logging architecture and Splunk for downstream search and alert operations.