Telemetry

September 10, 2026 ยท View on GitHub

The SPIRE Server and Agent can be configured to emit metrics that can be sent to the supported metrics collectors. For instructions on how to configure them properly, please refer to the Telemetry Configuration guide.

The following metrics are emitted:

SPIRE Server

TypeKeysLabelsDescription
Call Counterrpc, <service>, <method>Call counters over the SPIRE Server RPCs.
Counterbundle_manager, update, federated_bundletrust_domain_idThe bundle endpoint manager updated a federated bundle
Call Counterbundle_manager, fetch, federated_bundletrust_domain_idThe bundle endpoint manager is fetching federated bundle.
Call Counterca, manager, bundle, pruneThe CA manager is pruning a bundle.
Counterca, manager, bundle, prunedThe CA manager has successfully pruned a bundle.
Call Counterca, manager, jwt_key, prepareThe CA manager is preparing a JWT Key.
Counterca, manager, x509_ca, activateThe CA manager has successfully activated an X.509 CA.
Call Counterca, manager, x509_ca, prepareThe CA manager is preparing an X.509 CA.
Call Counterdatastore, bundle, appendThe Datastore is appending a bundle.
Call Counterdatastore, bundle, countThe Datastore is counting bundles.
Call Counterdatastore, bundle, createThe Datastore is creating a bundle.
Call Counterdatastore, bundle, deleteThe Datastore is deleting a bundle.
Call Counterdatastore, bundle, fetchThe Datastore is fetching a bundle.
Call Counterdatastore, bundle, listThe Datastore is listing bundles.
Call Counterdatastore, bundle, pruneThe Datastore is pruning a bundle.
Call Counterdatastore, bundle, setThe Datastore is setting a bundle.
Call Counterdatastore, bundle, updateThe Datastore is updating a bundle.
Call Counterdatastore, join_token, createThe Datastore is creating a join token.
Call Counterdatastore, join_token, deleteThe Datastore is deleting a join token.
Call Counterdatastore, join_token, fetchThe Datastore is fetching a join token.
Call Counterdatastore, join_token, pruneThe Datastore is pruning join tokens.
Call Counterdatastore, node, countThe Datastore is counting nodes.
Call Counterdatastore, node, createThe Datastore is creating a node.
Call Counterdatastore, node, deleteThe Datastore is deleting a node.
Call Counterdatastore, node, fetchThe Datastore is fetching nodes.
Call Counterdatastore, node, listThe Datastore is listing nodes.
Call Counterdatastore, node, selectors, fetchThe Datastore is fetching selectors for a node.
Call Counterdatastore, node, selectors, listThe Datastore is listing selectors for a node.
Call Counterdatastore, node, selectors, setThe Datastore is setting selectors for a node.
Call Counterdatastore, node, updateThe Datastore is updating a node.
Call Counterdatastore, node_event, listThe Datastore is listing node events.
Call Counterdatastore, node_event, pruneThe Datastore is pruning expired node events.
Call Counterdatastore, node_event, fetchThe Datastore is fetching a specific node event.
Call Counterdatastore, registration_entry, countThe Datastore is counting registration entries.
Call Counterdatastore, registration_entry, createThe Datastore is creating a registration entry.
Call Counterdatastore, registration_entry, deleteThe Datastore is deleting a registration entry.
Call Counterdatastore, registration_entry, fetchThe Datastore is fetching registration entries.
Call Counterdatastore, registration_entry, listThe Datastore is listing registration entries.
Call Counterdatastore, registration_entry, pruneThe Datastore is pruning registration entries.
Call Counterdatastore, registration_entry, updateThe Datastore is updating a registration entry.
Call Counterdatastore, registration_entry_event, listThe Datastore is listing a registration entry events.
Call Counterdatastore, registration_entry_event, pruneThe Datastore is pruning expired registration entry events.
Call Counterdatastore, registration_entry_event, fetchThe Datastore is fetching a specific registration entry event.
Call Counterentry, cache, reloadThe Server is reloading its in-memory entry cache from the datastore
Gaugenode, agents_by_id_cache, countThe Server is re-hydrating the agents-by-id event-based cache
Gaugenode, agents_by_expiresat_cache, countThe Server is re-hydrating the agents-by-expiresat event-based cache
Gaugenode, skipped_node_event_ids, countThe count of skipped ids detected in the last sql_transaction_timout period. For databases that autoincrement ids by more than one, this number will overreport the skipped ids. Issue
Gaugeentry, nodealiases_by_entryid_cache, countThe Server is re-hydrating the nodealiases-by-entryid event-based cache
Gaugeentry, nodealiases_by_selector_cache, countThe Server is re-hydrating the nodealiases-by-selector event-based cache
Gaugeentry, entries_by_entryid_cache, countThe Server is re-hydrating the entries-by-entryid event-based cache
Gaugeentry, skipped_entry_event_ids, countThe count of skipped ids detected in the last sql_transaction_timout period. For databases that autoincrement ids by more than one, this number will overreport the skipped ids. Issue
Countermanager, jwt_key, activateThe CA manager has successfully activated a JWT Key.
Gaugemanager, x509_ca, rotate, expirationtrust_domain_idThe CA manager is rotating the X.509 CA with a given expiration time (in seconds since 1970-01-01T00:00:00Z) for a specific Trust Domain.
Gaugemanager, x509_ca, rotate, ttltrust_domain_idThe CA manager is rotating the X.509 CA with a given TTL for a specific Trust Domain.
Call Counterregistration_entry, manager, pruneThe Registration manager is pruning entries.
Counterserver_ca, sign, jwt_svidThe CA has successfully signed a JWT SVID.
Counterserver_ca, sign, x509_ca_svidThe CA has successfully signed an X.509 CA SVID.
Counterserver_ca, sign, x509_svidThe CA has successfully signed an X.509 SVID.
Call Countersvid, rotateThe Server's SVID is being rotated.
Gaugestartedversion, trust_domain_idInformation about the Server.
Gaugeuptime_in_msThe uptime of the Server in milliseconds.

SPIRE Agent

TypeKeysLabelsDescription
Call Counterrpc, <service>, <method>Call counters over the SPIRE Agent RPCs.
Call Counteragent_key_manager, generate_key_pairThe KeyManager is generating a key pair.
Call Counteragent_key_manager, fetch_private_keyThe KeyManager is fetching a private key.
Call Counteragent_key_manager, store_private_keyThe KeyManager is storing a private key.
Call Counteragent_svid, rotateThe Agent's SVID is being rotated.
Samplecache_manager, expiring_svidssvid_typeThe number of expiring SVIDs that the Cache Manager has.
Samplecache_manager, outdated_svidssvid_typeThe number of outdated SVIDs that the Cache Manager has.
Samplecache_manager, tainted_jwt_svids, workloadThe number of tainted JWT-SVIDs according to the agent cache manager.
Samplecache_manager, tainted_x509_svids, workloadThe number of tainted X509-SVIDs according to the agent cache manager.
Counterlru_cache_entry_addThe number of entries added to the LRU cache.
Counterlru_cache_entry_removeThe number of entries removed from the LRU cache.
Counterlru_cache_entry_updateThe number of entries updated in the LRU cache.
Call Countermanager, sync, fetch_entries_updatesThe Sync Manager is fetching entries updates.
Call Countermanager, sync, fetch_svids_updatesThe Sync Manager is fetching SVIDs updates.
Call Counternode, attestor, new_svidThe Node Attestor is calling to get an SVID.
Call Countercache_manager, workload, process_tainted_jwt_svidsThe Sync Manager is processing tainted JWTSVIDs.
Call Countercache_manager, workload, process_tainted_x509_svidsThe Sync Manager is processing tainted X.509 SVIDs.
Call Countercache_manager, svid_store, process_tainted_x509_svidsThe Sync Manager is processing tainted X.509 SVIDs in the SVID store cache.
Gaugelru_cache_record_map_sizesvid_typeThe total number of entries in the LRU cache records map.
Countersds_api, connectionsThe SDS API has successfully established a connection.
Gaugesds_api, connectionsThe number of active connection that the SDS API has.
Gaugelru_cache_svid_map_sizesvid_typeThe total number of SVIDs in the LRU cache SVID map.
Gaugejwt_svid_cache_sizeThe total number of JWT-SVIDs in the JWT-SVID cache.
Counterworkload_api, bundles_update, jwtThe Workload API has successfully updated a JWT bundle.
Counterworkload_api, connectionThe Workload API has successfully established a new connection.
Gaugeworkload_api, connectionsThe number of active connections that the Workload API has.
Sampleworkload_api, discovered_selectorsThe number of selectors discovered during a workload attestation process.
Call Counterworkload_api, workload_attestationThe Workload API is performing a workload attestation.
Call Counterworkload_api, workload_attestorattestorThe Workload API is invoking a given attestor.
Counterworkload_api, rate_limit_exceededmethodA Workload API or SDS request was rejected due to per-selector-set rate limiting.
Gaugestartedversion, trust_domain_idInformation about the Agent.
Gaugeuptime_in_msThe uptime of the Agent in milliseconds.
Counterdebug_api, connectionThe Debug API has successfully established a connection.
Gaugedebug_api, connectionsThe number of active connections that the Debug API has.
Counterdelegated_identity_api, connectionThe Delegated Identity API has successfully established a connection.
Gaugedelegated_identity_api, connectionsThe number of active connection that the Delegated Identity API has.
Latencydelegated_identity_api, subscribe_x509_svid first_x509_svid_updateThe latency fetching first X.509-SVID in Delegated Identity API.
Latencybroker_api, subscribe_x509_svids, first_updateThe latency fetching first X.509-SVID in the SPIFFE Broker API.

Note: These are the keys and labels that SPIRE emits, but the format of the metric once ingested could vary depending on the metric collector. For example, in StatsD, the metric emitted when rotating an Agent SVID (agent_svid, rotate) can be found as spire_agent_agent_svid_rotate_internal_host-agent-0, where host-agent-0 is the hostname and spire-agent is the service name.

Call Counters

Call counters are aggregate metric types that emit several metrics related to the issuance of a "call" to a method or RPC. The following metrics are produced for a call counter:

  • A counter representing the number of calls using the call counter key
  • A sample of the elapsed time for the call using the call counter key+".elapsed_time"

Additionally, the metrics emitted above each carry a status label (in addition to any other labels for specific to the individual call counter) that holds the gRPC status code of the call.

For example, a successful invocation of the SPIRE Server AttestAgent RPC would produce the following metrics:

spire_server.rpc.agent.v1.agent.attest_agent:1|c|#status:OK
spire_server.rpc.agent.v1.agent.attest_agent.elapsed_time:1.045773|ms|#status:OK