Skip to content

Log records ​

This page describes what a log record looks like, which fields it carries, and how the numeric event IDs work. The IDs themselves are listed in Log event IDs.

Formats ​

The format depends on the destination chosen in the Logging settings.

  • File, JSON encoding: one JSON object per line, in a .jsonl file. This is the format to feed a log collector or a SIEM. With a tamper evident passphrase every line also carries a chained signature.
  • File, W3C encoding: the W3C Extended Log File Format, in a .log file. It is meant for protocol activity, it has a fixed set of columns, and it does not carry event IDs.
  • Syslog: each record is sent as <PRI>timestamp host tag[pid]: marker followed by the same JSON object the JSON file holds. The facility in PRI is set by the Facility option, and is kern unless you change it.
  • Standard output: one key=value line per record, for reading in a terminal.

Fields on every record ​

FieldMeaning
timeWhen the record was written.
levelThe severity: trace, debug, info, warn or error.
serviceThe log the record belongs to: ss-webrest for the management service, ss-wrk-<virtual site> for a virtual site.
subsystemThe part of the software that wrote the record.
nodeIdThe node that wrote the record.
commentThe text written for people.
errorThe error, when there is one.

Event IDs ​

A record that describes an event a log collector should recognize carries a numeric eventId field. Records without one are diagnostics written for people; they never gain an ID unless the event table says so.

The IDs follow these rules:

  • An ID names what happened, not where: a wrong password is the same event on SSH, FTP and HTTPS, and the protocol field tells them apart.
  • IDs are grouped in blocks of a thousand by subject (service, connections, sign in, files, Shield, operators, audit, cluster, platform). Within a block, related outcomes share a range: 3100 to 3199 is every failed end user sign in, for example.
  • An event is always written with the same level, and always at Info or above, so a default installation records it.
  • The meaning of an ID never changes, and an ID that is withdrawn is never used again. New IDs and new fields can appear in any release; a field an event carries is never removed or renamed.

NOTE

Some events are sampled or throttled because the condition behind them can repeat thousands of times a minute, for example a connection refused at accept or a revoked token presented again by an open browser tab. The Notes column of the event table says which ones, and how.

Some actions produce two events on purpose: one says who did it, the other what happened. An operator adding a cluster node writes HANodeAdded (7050) and the cluster writes ClusterPeerAdded (8004); an operator setting another account's password writes ObjectUpdated (7002) and OperatorPasswordSetOnAccount (6202).

Event fields ​

An event carries the fields listed for it in the event table, from this set. Empty values are not written.

FieldMeaning
eventIdThe event ID, as a number.
sessionIdThe session. Every attempt, refusal and channel of one SSH connection shares one session ID.
channelIdFor SSH, the channel, which is a session of its own inside the connection.
clientIpThe client's address.
usernameThe user name: the one the client typed for a failed sign in, otherwise the account.
protocolSee below.
vsiteThe virtual site, on records written by the management service.
authMethodHow a sign in succeeded, for example password,otp; several methods are listed in order.
endReasonWhy a session ended: client closed, logout, idle timeout, admin terminated, terminated by script, session expired, server shutdown or share login refused.
actor, actorRoleWho acted: the account, and sa, admin, setup, telegram or cli.
objectType, objectIdWhat an operator acted on, for example user and its ID.
method, routeThe HTTP method and route of an audited request.
target, ruleThe address or network a Shield ban is about, and the rule that fired.
node, peerA node an action or cluster event is about.
event, scriptThe event handler and script of a script event.
vfs, listener, certificate, recipientThe virtual file system, the listening address, the certificate, or the email recipient involved.

The protocol field holds the session's subsystem on session and file records (ssh2_sftp, ssh2_scp, ssh2_shell, ssh2_command, ftp, ftps, ftpes, https, https_sharing, and SSH2 for an SSH connection before it opens a channel), the service on listener records (SSH2, FTP, FTPS, HTTPS, R2FS), and the Shield's protocol names on Shield records (ssh, ftp, ftps, ftpes, https, share, r2fs, webrest).

Older records keep the spelling they always had: the web access log writes sessID and clientIP, and a few library records write sessionID.

Command line tools ​

The management service's command line tools that change security state (password reset, two factor disable, node reset, database credential rotation, secret re-encryption, initialization from a backup, and backup export) write an audit record too, with the operating system account that ran them as actor. They never write into the service's own log file: with the File destination they append to ss-webrest-cli.jsonl in the same directory, which is not hash chained. With Syslog or Standard output they write where the service does.

Older text tags ​

Earlier releases marked some lines with a tag inside the comment. The comments are unchanged, so a search for these tags still works; the event ID is the reliable way to find the same events.

TagEvent
/DRAIN2010 ConnRefusedDraining
/MTC2011 ConnRefusedTotalLimit or 2012 ConnRefusedLicenseLimit
/MCP, /MPC2013 ConnRefusedAddressLimit
/UMC, /MPU2014 ConnRefusedAccountLimit
/SCR2015 ConnRefusedByScript
/NCA2020 SSHNoCommonAlgorithms
/NSC2021 SSHHandshakeFailed
/PV3102 SignInWrongPassword
/UPC3121 SignInProtocolNotAllowed
/UAL3122 SignInAccountNotAllowed
/USCRAR, /USCRAP3124 SignInDeniedByScript
/SCP, /EXEC, /SHELL (not allowed)4104 SubsystemNotAllowed