Events¶
Introduction¶
Events are messages about actions that have occurred over LXD. Using the API endpoint /1.0/events directly or via
lxc monitor will connect to a WebSocket through which events of the selected types will be streamed.
Event types¶
LXD currently supports five event types.
logging: Shows all logging messages regardless of the server logging level.operation: Shows all ongoing operations from creation to completion (including updates to their state and progress metadata).lifecycle: Shows an audit trail for specific actions occurring over LXD.ovn: Shows network-related events from OVN (Open Virtual Network).security: Shows security-related events including authentication attempts, authorization decisions, and administrative changes. Requires appropriate permissions to view.
Event structure¶
Example¶
location: cluster_name
metadata:
action: network-updated
requestor:
protocol: unix
username: root
source: /1.0/networks/lxdbr0
timestamp: "2021-03-14T00:00:00Z"
type: lifecycle
location: The cluster member name (if clustered).timestamp: Time that the event occurred in RFC3339 format.type: Type of event (one oflogging,operation,lifecycle,ovn, orsecurity).metadata: Information about the specific event type.
Logging event structure¶
message: The log message.level: The log-level of the log.context: Additional information included in the event.
Operation event structure¶
id: The UUID of the operation.class: The type of operation (task,token, orwebsocket).description: A description of the operation.created_at: The operation’s creation date.updated_at: The operation’s date of last change.status: The current state of the operation.status_code: The operation status code.resources: Resources affected by this operation.metadata: Operation specific metadata.may_cancel: Whether the operation may be canceled.err: Error message of the operation.location: The cluster member name (if clustered).
Life-cycle event structure¶
action: The life-cycle action that occurred.requestor: Information about who is making the request (if applicable).source: Path to what is being acted upon.context: Additional information included in the event.
Supported life-cycle events¶
Name |
Description |
Additional Information |
|---|---|---|
|
A new certificate has been added to the server trust store. |
|
|
The certificate has been deleted from the trust store. |
|
|
The certificate’s configuration has been updated. |
|
|
The certificate for the whole cluster has changed. |
|
|
Clustering has been disabled for this machine. |
|
|
Clustering has been enabled for this machine. |
|
|
A new cluster group has been created. |
|
|
A cluster group has been deleted. |
|
|
A cluster group has been renamed. |
|
|
A cluster group has been updated. |
|
|
A new machine has joined the cluster. |
|
|
The cluster member has been removed from the cluster. |
|
|
The cluster member has been renamed. |
|
|
The cluster member’s configuration been edited. |
|
|
A join token for adding a cluster member has been created. |
|
|
The server configuration has changed. |
|
|
An alias has been created for an existing image. |
|
|
An alias has been deleted for an existing image. |
|
|
The alias for an existing image has been renamed. |
|
|
The configuration for an image alias has changed. |
|
|
A new image has been added to the image store. |
|
|
The image has been deleted from the image store. |
|
|
The local image copy has updated to the current source image version. |
|
|
The raw image file has been downloaded from the server. |
|
|
A one-time key to fetch this image has been created. |
|
|
The image’s configuration has changed. |
|
|
A backup of the instance has been created. |
|
|
The instance backup has been deleted. |
|
|
The instance backup has been renamed. |
|
|
The raw instance backup file has been downloaded. |
|
|
Connected to the console of the instance. |
|
|
The console buffer has been reset. |
|
|
The console log has been downloaded. |
|
|
A new instance has been created. |
|
|
The instance has been deleted. |
|
|
A command has been executed on the instance. |
|
|
A file on the instance has been deleted. |
|
|
The file has been pushed to the instance. |
|
|
The file has been downloaded from the instance. |
|
|
The instance’s specified log file has been deleted. |
|
|
The instance’s specified log file has been downloaded. |
|
|
The instance’s image metadata has been downloaded. |
|
|
A new image template file for the instance has been created. |
|
|
The image template file for the instance has been deleted. |
|
|
The image template file for the instance has been downloaded. |
|
|
The instance’s image metadata has changed. |
|
|
The instance has been put in a paused state. |
|
|
The instance is ready. |
|
|
The instance has been renamed. |
|
|
The instance has restarted. |
|
|
The instance has been restored from a snapshot. |
|
|
The instance has resumed after being paused. |
|
|
The instance has shut down. |
|
|
A snapshot of the instance has been created. |
|
|
The instance snapshot has been deleted. |
|
|
The instance snapshot has been renamed. |
|
|
The instance snapshot’s configuration has changed. |
|
|
The instance has started. |
|
|
The instance has stopped. |
|
|
The instance’s configuration has changed. |
|
|
A new network ACL has been created. |
|
|
The network ACL has been deleted. |
|
|
The network ACL has been renamed. |
|
|
The network ACL configuration has changed. |
|
|
A network device has been created. |
|
|
The network device has been deleted. |
|
|
A new network forward has been created. |
|
|
The network forward has been deleted. |
|
|
The network forward has been updated. |
|
|
A new network peer has been created. |
|
|
The network peer has been deleted. |
|
|
The network peer has been updated. |
|
|
The network device has been renamed. |
|
|
The network device’s configuration has changed. |
|
|
A new network zone has been created. |
|
|
The network zone has been deleted. |
|
|
A new network zone record has been created. |
|
|
The network zone record has been deleted. |
|
|
The network zone record has been updated. |
|
|
The network zone has been updated. |
|
|
The operation has been canceled. |
|
|
A new profile has been created. |
|
|
The profile has been deleted. |
|
|
The profile has been renamed . |
|
|
The profile’s configuration has changed. |
|
|
A new project has been created. |
|
|
The project has been deleted. |
|
|
The project has been renamed. |
|
|
The project’s configuration has changed. |
|
|
A new storage pool has been created. |
|
|
The storage pool has been deleted. |
|
|
The storage pool’s configuration has changed. |
|
|
A new backup for the storage volume has been created. |
|
|
The storage volume’s backup has been deleted. |
|
|
The storage volume’s backup has been renamed. |
|
|
The storage volume’s backup has been downloaded. |
|
|
A new storage volume has been created. |
|
|
The storage volume has been deleted. |
|
|
The storage volume has been renamed. |
|
|
The storage volume has been restored from a snapshot. |
|
|
A new storage volume snapshot has been created. |
|
|
The storage volume’s snapshot has been deleted. |
|
|
The storage volume’s snapshot has been renamed. |
|
|
The configuration for the storage volume’s snapshot has changed. |
|
|
The storage volume’s configuration has changed. |
|
|
The warning’s status has been set to “acknowledged”. |
|
|
The warning has been deleted. |
|
|
The warning’s status has been set to “new”. |
Security events¶
Security event structure¶
name: The security event identifier (e.g.,authn_login_fail:tls,authz_fail:can_edit:/1.0/projects/foo).level: The severity level (info,warning).description: A human-readable description of the event.requestor: Who triggered the event (username, protocol, address, user agent). Omitted for daemon-level events.project: The project the request targeted. Omitted for daemon-level events.request_path: The REST API endpoint path. Omitted for daemon-level events.request_method: The HTTP method used. Omitted for daemon-level events.
Security event types¶
LXD emits events across four categories.
Authentication events
Event |
Description |
|---|---|
|
Failed authentication attempt when an untrusted TLS client certificate is presented to a protected endpoint. |
|
A new bearer token was issued for an identity. The identity UUID is included in the event identifier. |
|
A bearer token was revoked for an identity. The identity UUID is included in the event identifier. |
|
A bearer token was presented in an invalid, expired, or otherwise disallowed way, indicating possible token reuse, tampering, or other misuse. |
|
A TLS client certificate was replaced. The old certificate fingerprint is included in the event identifier. |
Authorization events
Event |
Description |
|---|---|
|
An action was denied due to insufficient permissions. Includes the required entitlement and the entity path that was accessed. |
|
A new authentication group was created. |
|
An authentication group was modified. |
|
An authentication group was deleted. |
|
A new identity provider group was created. |
|
An identity provider group was modified. |
|
An identity provider group was deleted. |
|
A new identity was created (TLS certificates or bearer tokens only). OIDC identities are not created via API actions. |
|
An identity was modified. |
|
An identity was deleted. |
Daemon lifecycle events
Event |
Description |
|---|---|
|
The LXD daemon has started. Emitted once the event system is fully available. |
|
The LXD daemon is shutting down. |
|
Security event monitoring (Loki) was disabled via a configuration change. This is a |
User lifecycle events
Event |
Description |
|---|---|
|
A new identity has been created (TLS, bearer, OIDC, or cluster-link methods). For OIDC, this fires on first login. |
|
An identity has been modified. For OIDC, this fires when user metadata changes on subsequent logins. |
|
An identity has been deleted. |
Security event fields in Loki¶
When security events are forwarded to Loki, they are stored in OWASP (Open Worldwide Application Security Project) audit log format with the following key fields:
Field |
Description |
|---|---|
|
The security event type identifier. |
|
The cluster member name where the event occurred. |
|
Unique identifier for the LXD cluster. |
|
Name of the cluster member. |
|
The project targeted by the request. Empty or omitted for daemon-level events. |
|
The HTTP method used. |
|
The API endpoint path. |
|
The requestor identity in format |
|
The source IP address of the request. |
|
The HTTP user agent string. |
|
The event severity ( |
|
Human-readable event description. |
For how to monitor and query security events, see Monitor security events.