Anatomy of a message
A forwarded datagram looks like this:
The payload is wrapped in
| pipe characters on both ends.
The four payload fields correspond exactly to the columns the appliance shows in its own web portal log view, documented as Timestamp | Service | Log Level | Message. See Syslog. Naming the parsed fields after those columns keeps the collector output aligned with what an operator sees on the appliance.
How it deviates from RFC 3164
Four differences matter when choosing a parser:- No
HOSTNAMEfield. RFC 3164 places a hostname immediately after the timestamp. The appliance writes a literal:there instead. - No
TAGfield. There is no process name or PID. - The payload is pipe-wrapped, which no syslog standard specifies.
- A second timestamp lives inside the payload at microsecond precision, and it is the more accurate of the two.
Why the syslog receiver is the wrong choice
A conforming RFC 3164 parser accepts these lines. It reports no error, so the integration looks healthy. What it produces, however, is unusable. Parsed with the collector’ssyslog receiver using protocol: rfc3164:
udplog receiver and an explicit regular expression:
This is the single most important detail in the integration. A standard syslog parser fails silently rather than loudly, so the fault is only discovered later, when someone tries to build a dashboard and finds there is nothing to group by.
Priority carries no routing information
Every observed record uses<5>, that is facility kern and severity notice, regardless of what the event represents. An authentication failure and a routine counter update share the same priority.
Do not route or alert on syslog priority or facility. Use the LEVEL word from the payload for severity, and classify the message text for event type.
Observed services
Two services appear in the forwarded stream:
The service name is space-padded to a fixed width in the datagram, so a parser must tolerate runs of whitespace between fields rather than assuming single spaces.
Message shapes
Message text follows a small number of recognizable shapes:- Messages beginning with
CONFIG:list the acting identities as colon-separated segments before the action. A two-person authorized action therefore readsCONFIG:Admin1:Admin2:<action>:<target>. This makes dual-control actions attributable to both approvers. - Object update messages prefix the acting identities with a comma-separated list followed by a colon, then describe the change in prose, including the old and new values.
Event classification
The collector configuration deriveshsm.event_type from the message text:
Two of these deserve attention when tuning alerts:
auth_lockoutis the appliance reporting that it has locked an identity out after repeated failures. It is the highest-value security event in the stream and warrants its own alert rather than being folded into a failure count.time_changeis emitted on a recurring schedule by client applications that synchronize the appliance clock, roughly every ten minutes in the tested environment. Do not alert on it and do not group it with configuration changes, or the alert fires continuously.
other as a signal that the appliance is emitting a shape the rules do not yet cover, most likely after a firmware upgrade. Because the raw datagram is preserved in the log body, those events can be reclassified retroactively.

