Skip to content

AxonOps — AI-Native Control Plane for Open Source Data Platforms

Clients

The client-related virtual tables provide visibility into connected CQL clients and currently executing queries.


Shows all currently connected CQL clients with connection details.

VIRTUAL TABLE system_views.clients (
address inet,
port int,
authentication_metadata map<text, text>,
authentication_mode text,
client_options map<text, text>,
connection_stage text,
driver_name text,
driver_version text,
hostname text,
keyspace_name text,
protocol_version int,
request_count bigint,
ssl_cipher_suite text,
ssl_enabled boolean,
ssl_protocol text,
username text,
PRIMARY KEY (address, port)
) WITH CLUSTERING ORDER BY (port ASC)
ColumnTypeDescription
addressinetClient IP address
portintClient source port
hostnametextClient hostname (if resolvable)
usernametextAuthenticated username
authentication_modetextAuthentication mode used
authentication_metadatamapAdditional authentication metadata
keyspace_nametextCurrent keyspace
driver_nametextClient driver name
driver_versiontextDriver version
protocol_versionintNative protocol version (3, 4, 5)
request_countbigintTotal requests from this connection
connection_stagetextConnection state
ssl_enabledbooleanTLS encryption enabled
ssl_protocoltextTLS protocol version (TLSv1.2, TLSv1.3)
ssl_cipher_suitetextTLS cipher suite
client_optionsmapDriver-reported connection options

Equivalent nodetool command: nodetool clientstats

-- All connected clients
SELECT address, port, username, driver_name, driver_version, request_count
FROM system_views.clients;
-- Clients with username
SELECT address, username, keyspace_name, request_count
FROM system_views.clients;
-- All connections
SELECT address, port, username
FROM system_views.clients;
-- All connections with TLS status
SELECT address, port, username, ssl_enabled, ssl_protocol, ssl_cipher_suite
FROM system_views.clients;

Filter results in application for non-TLS connections (ssl_enabled = false) or weak ciphers.

-- All driver versions in use
SELECT address, driver_name, driver_version, protocol_version
FROM system_views.clients;

Aggregate driver versions in application logic.

-- All connections with request counts
SELECT address, port, username, request_count
FROM system_views.clients;
-- Connections with no activity (potentially stale)
SELECT address, port, username, request_count
FROM system_views.clients
WHERE request_count < 10;

Shows currently executing queries on this node.

VIRTUAL TABLE system_views.queries (
thread_id text PRIMARY KEY,
queued_micros bigint,
running_micros bigint,
task text
)
ColumnTypeDescription
thread_idtextExecuting thread identifier
tasktextQuery description
running_microsbigintTime executing (microseconds)
queued_microsbigintTime spent waiting in queue (microseconds)
-- All active queries
SELECT thread_id, task, running_micros / 1000 AS running_ms
FROM system_views.queries;
-- Long-running queries (> 1 second)
SELECT thread_id, task, running_micros / 1000000 AS running_seconds
FROM system_views.queries
WHERE running_micros > 1000000;
-- Queries that waited in queue
SELECT thread_id, task,
queued_micros / 1000 AS queued_ms,
running_micros / 1000 AS running_ms
FROM system_views.queries
WHERE queued_micros > 10000;
-- Find queries running > 5 seconds (potential problems)
SELECT thread_id, task, running_micros / 1000000.0 AS running_seconds
FROM system_views.queries
WHERE running_micros > 5000000;

Query Visibility

The queries table shows point-in-time active queries. Fast queries may complete before being captured. For historical query analysis, use query tracing or full query logging.


-- All connections with hostname for categorization
SELECT address, hostname, username, request_count
FROM system_views.clients;

Group by hostname pattern in application logic to categorize connections.

-- All clients with usernames
SELECT address, username, driver_name, request_count
FROM system_views.clients;
-- All client addresses
SELECT address, port, username
FROM system_views.clients;

Filter in application for non-application users and unexpected network ranges.

-- All connections with request counts
SELECT address, port, request_count
FROM system_views.clients;

Use COUNT(*) in application to get total connections. Sum request_count values in application for total requests.


-- Alert: Non-TLS connections in production
SELECT address, username
FROM system_views.clients
WHERE ssl_enabled = false;
-- All driver versions
SELECT address, driver_name, driver_version
FROM system_views.clients;

Check driver versions in application for outdated clients.

-- Active queries with execution time
SELECT thread_id, task, running_micros
FROM system_views.queries;

Alert when running_micros > 30000000 (30 seconds).

-- Compare against baseline (application logic needed)
SELECT COUNT(*) AS current_connections
FROM system_views.clients;
-- Alert if significantly above normal

Related tables show cached authentication/authorization state:

-- Roles with cached credentials
SELECT role FROM system_views.credentials_cache_keys;
-- Cached permission entries
SELECT role, resource FROM system_views.permissions_cache_keys;
-- Roles in the role cache
SELECT role FROM system_views.roles_cache_keys;
-- Network permission cache entries
SELECT role FROM system_views.network_permissions_cache_keys;
-- JMX permission cache entries
SELECT role FROM system_views.jmx_permissions_cache_keys;

These tables are useful for:

  • Verifying cache population after authentication changes
  • Debugging permission issues
  • Understanding cache invalidation behavior