Pulsar OpenTelemetry Metrics
Pulsar exposes the following OpenTelemetry metrics when an OpenTelemetry SDK and exporter are configured. Names below are OpenTelemetry instrument names; a Prometheus exporter can translate names and append unit or type suffixes. See metrics changes when upgrading.
Broker
Connection Metrics
pulsar.broker.connection.count
The number of connections.
- Type: Counter
- Unit:
{connection} - Attributes:
pulsar.connection.status- The status of the connection. Can be one of:activeopenclose
pulsar.broker.connection.create.operation.count
The number of connection create operations.
- Type: Counter
- Unit:
{operation} - Attributes:
pulsar.connection.create.operation.status- The status of the create operation. Can be one of:successfailure
pulsar.broker.connection.rate_limit.count
The number of times a connection has been rate limited.
- Type: Counter
- Unit:
{operation} - Attributes:
pulsar.connection.rate_limit.operation.name- The name of the rate limiting operation performed. Can be one of:pausedresumedthrottledunthrottled
Topic Messaging metrics
Persistent-topic messaging metrics can include custom attributes derived from topic properties. Enable exposeCustomTopicMetricLabelsEnabled and allow the property keys with allowedTopicPropertyKeysForMetrics, or a namespace-level allowlist. OpenTelemetry converts the allowed property keys to lowercase; Prometheus keeps the original keys. These attributes apply to persistent topics. See Configure topic metric labels.
pulsar.broker.topic.subscription.count
The number of Pulsar subscriptions of the topic served by this broker.
- Type: UpDownCounter
- Unit:
{subscription} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.producer.count
The number of active producers of the topic connected to this broker.
- Type: UpDownCounter
- Unit:
{producer} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.consumer.count
The number of active consumers of the topic connected to this broker.
- Type: UpDownCounter
- Unit:
{consumer} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.message.incoming.count
The total number of messages received for this topic.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.message.outgoing.count
The total number of messages read from this topic.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.message.incoming.size
The total number of messages bytes received for this topic.
- Type: Counter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.message.outgoing.size
The total number of messages bytes read from this topic.
- Type: Counter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.publish.latency
The latency in seconds for publishing messages.
- Type: Histogram
- Unit:
s
pulsar.broker.topic.publish.rate.limit.count
The number of times the publish rate limit is triggered.
- Type: Counter
- Unit:
{event} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.storage.size
The total storage size of the messages in this topic, including storage used by replicas.
- Type: UpDownCounter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.storage.logical.size
The storage size of the messages in this topic, excluding storage used by replicas.
- Type: UpDownCounter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.storage.backlog.size
The size of the backlog storage for this topic.
- Type: UpDownCounter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.storage.offloaded.size
The total amount of the data in this topic offloaded to the tiered storage.
- Type: UpDownCounter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.storage.backlog.quota.limit.size
The size based backlog quota limit for this topic.
- Type: UpDownCounter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.storage.backlog.quota.limit.time
The time based backlog quota limit for this topic.
- Type: Gauge
- Unit:
s - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.storage.backlog.quota.eviction.count
The number of times a backlog was evicted since it has exceeded its quota.
- Type: Counter
- Unit:
{eviction} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.backlog.quota.type- The backlog quota type. Can be one of:sizetime
pulsar.broker.topic.storage.backlog.age
The age of the oldest unacknowledged message (backlog).
- Type: Gauge
- Unit:
s - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.storage.entry.outgoing.count
The total message batches (entries) written to the storage for this topic.
- Type: Counter
- Unit:
{entry} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.storage.entry.incoming.count
The total message batches (entries) read from the storage for this topic.
- Type: Counter
- Unit:
{entry} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.compaction.removed.message.count
The total number of messages removed by compaction.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.compaction.operation.count
The total number of compaction operations.
- Type: Counter
- Unit:
{operation} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.compaction.status- The compaction status. Can be one of:success- `failure
pulsar.broker.topic.compaction.duration
The total time duration of compaction operations on the topic.
- Type: UpDownCounter
- Unit:
s - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.compaction.incoming.size
The total count of bytes read by the compaction process for this topic.
- Type: Counter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.compaction.outgoing.size
The total count of bytes written by the compaction process for this topic.
- Type: Counter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.compaction.compacted.entry.count
The total number of compacted entries.
- Type: Counter
- Unit:
{entry} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.compaction.compacted.entry.size
The total size of the compacted entries.
- Type: Counter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
pulsar.broker.topic.transaction.count
The number of transactions on this topic.
- Type: UpDownCounter
- Unit:
{transaction} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.transaction.status- The transaction status. Can be one of:activecommittedaborted
pulsar.broker.topic.transaction.buffer.client.operation.count
The number of operations on the transaction buffer client.
- Type: Counter
- Unit:
{operation} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.transaction.status- The status of the Pulsar transaction. Can be one of:abortedcommitted
pulsar.transaction.buffer.client.operation.status- The status of the Pulsar transaction buffer client operation. Can be one of:failuresuccess
pulsar.broker.topic.subscription.delayed.entry.count
The total number of message batches (entries) delayed for dispatching.
- Type: UpDownCounter
- Unit:
{entry} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.
Topic Lookup metrics
pulsar.broker.request.topic.lookup.duration
The duration of topic lookup requests (either binary or HTTP)
- Type: Histogram
- Unit:
s - Attributes:
pulsar.lookup.response- The response type of the lookup requestfailurebrokerredirect
pulsar.broker.request.topic.lookup.concurrent.usage
The number of pending lookup operations in the broker. When it reaches threshold "maxConcurrentLookupRequest" defined in broker.conf, new requests are rejected.
- Type: UpDownCounter
- Unit:
{operation}
pulsar.broker.request.topic.lookup.concurrent.limit
The maximum number of pending lookup operations in the broker. Equal to "maxConcurrentLookupRequest" defined in broker.conf.
- Type: UpDownCounter
- Unit:
{operation}
pulsar.broker.topic.load.concurrent.usage
The number of pending topic load operations in the broker. When it reaches threshold "maxConcurrentTopicLoadRequest" defined in broker.conf, new requests are rejected.
- Type: UpDownCounter
- Unit:
{operation}
pulsar.broker.topic.load.concurrent.limit
The maximum number of pending topic load operations in the broker. Equal to "maxConcurrentTopicLoadRequest" defined in broker.conf.
- Type: UpDownCounter
- Unit:
{operation}
pulsar.broker.topic.policies.cache.init.timeout.count
Number of namespace topic-policy cache initialization timeouts. A timeout closes the stuck __change_events reader and clears cached state so topic loading can be retried.
- Type: Counter
- Unit:
{timeout} - Attributes: None.
Metadata Store metrics
pulsar.broker.metadata.store.outgoing.size
The total amount of data written to the metadata store.
- Type: Counter
- Unit:
{By} - Attributes:
pulsar.metadata.store.name- The name of the metadata store.
For the batch metadata-store executor queue depth, use the Prometheus gauge pulsar_batch_metadata_store_executor_queue_size; there is no corresponding Pulsar OpenTelemetry instrument. See Metadata store metrics.
Consumer metrics
pulsar.broker.consumer.message.outgoing.count
The total number of messages dispatched to this consumer.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.subscription.name- The topic subscription name.pulsar.subscription.type- The subscription type.pulsar.consumer.name- The name of the consumer.pulsar.consumer.id- The ID of the consumer.
pulsar.broker.consumer.message.outgoing.size
The total number of messages bytes dispatched to this consumer.
- Type: Counter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.subscription.name- The topic subscription name.pulsar.subscription.type- The subscription type.pulsar.consumer.name- The name of the consumer.pulsar.consumer.id- The ID of the consumer.
pulsar.broker.consumer.message.ack.count
The total number of message acknowledgments received from this consumer.
- Type: Counter
- Unit:
{ack} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.subscription.name- The topic subscription name.pulsar.subscription.type- The subscription type.pulsar.consumer.name- The name of the consumer.pulsar.consumer.id- The ID of the consumer.
pulsar.broker.consumer.message.redeliver.count
The total number of messages that have been redelivered to this consumer.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.subscription.name- The topic subscription name.pulsar.subscription.type- The subscription type.pulsar.consumer.name- The name of the consumer.pulsar.consumer.id- The ID of the consumer.
pulsar.broker.consumer.message.unack.count
The number of messages currently unacknowledged by this consumer.
- Type: UpDownCounter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.subscription.name- The topic subscription name.pulsar.subscription.type- The subscription type.pulsar.consumer.name- The name of the consumer.pulsar.consumer.id- The ID of the consumer.
pulsar.broker.consumer.permit.count
The number of permits currently available for this consumer.
- Type: UpDownCounter
- Unit:
{permit} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.subscription.name- The topic subscription name.pulsar.subscription.type- The subscription type.pulsar.consumer.name- The name of the consumer.pulsar.consumer.id- The ID of the consumer.
pulsar.broker.consumer.blocked
Whether a consumer is blocked because it has too many unacknowledged messages: 1 when blocked, 0 otherwise.
- Type: UpDownCounter
- Unit:
1 - Attributes: The same topic, subscription, and consumer attributes as consumer message metrics.
Managed Ledger Cursor metrics
pulsar.broker.managed_ledger.persist.operation.count
The number of acknowledgment operations on the ledger.
- Type: Counter
- Unit:
{operation} - Attributes:
pulsar.namespace- The topic namespace.pulsar.managed_ledger.name- The name of the managed ledger.pulsar.managed_ledger.cursor.name- The name of the managed cursor.pulsar.managed_ledger.cursor.operation.status- The status of the managed cursor operation. Can be one of:successfailure
pulsar.broker.managed_ledger.persist.mds.operation.count
The number of acknowledgment operations in the metadata store.
- Type: Counter
- Unit:
{operation} - Attributes:
pulsar.namespace- The topic namespace.pulsar.managed_ledger.name- The name of the managed ledger.pulsar.managed_ledger.cursor.name- The name of the managed cursor.pulsar.managed_ledger.cursor.operation.status- The status of the managed cursor operation. Can be one of:successfailure
pulsar.broker.managed_ledger.message_range.count
The number of non-contiguous deleted messages ranges.
- Type: UpDownCounter
- Unit:
{range} - Attributes:
pulsar.namespace- The topic namespace.pulsar.managed_ledger.name- The name of the managed ledger.pulsar.managed_ledger.cursor.name- The name of the managed cursor.
pulsar.broker.managed_ledger.cursor.outgoing.size
The total amount of data written to the ledger.
- Type: Counter
- Unit:
{By} - Attributes:
pulsar.namespace- The topic namespace.pulsar.managed_ledger.name- The name of the managed ledger.pulsar.managed_ledger.cursor.name- The name of the managed cursor.
pulsar.broker.managed_ledger.cursor.outgoing.logical.size
The total amount of data written to the ledger, not including replicas.
- Type: Counter
- Unit:
{By} - Attributes:
pulsar.namespace- The topic namespace.pulsar.managed_ledger.name- The name of the managed ledger.pulsar.managed_ledger.cursor.name- The name of the managed cursor.
pulsar.broker.managed_ledger.cursor.incoming.size
The total amount of data read from the ledger.
- Type: Counter
- Unit:
{By} - Attributes:
pulsar.namespace- The topic namespace.pulsar.managed_ledger.name- The name of the managed ledger.pulsar.managed_ledger.cursor.name- The name of the managed cursor.
pulsar.broker.managed_ledger.cursor.persist.unacked_ranges.truncated
The number of times a cursor exceeded managedLedgerMaxUnackedRangesToPersist, causing ack state to be truncated at persistence. Ack state beyond the limit is lost on broker restart.
- Type: Counter
- Unit:
{truncation} - Attributes:
pulsar.namespace- The topic namespace.pulsar.managed_ledger.name- The name of the managed ledger.pulsar.managed_ledger.cursor.name- The name of the managed cursor.
pulsar.broker.managed_ledger.cursor.persist.batch_deleted_indexes.truncated
The number of times a cursor exceeded managedLedgerMaxBatchDeletedIndexToPersist, causing batch deleted index state to be truncated at persistence. State beyond the limit is lost on broker restart.
- Type: Counter
- Unit:
{truncation} - Attributes:
pulsar.namespace- The topic namespace.pulsar.managed_ledger.name- The name of the managed ledger.pulsar.managed_ledger.cursor.name- The name of the managed cursor.
Managed Ledger Cache metrics
pulsar.broker.managed_ledger.count
The total number of managed ledgers.
- Type: UpDownCounter
- Unit:
{managed_ledger}
pulsar.broker.managed_ledger.cache.eviction.count
The total number of cache eviction operations.
- Type: Counter
- Unit:
{eviction}
pulsar.broker.managed_ledger.cache.entry.count
The number of entries in the entry cache.
- Type: UpDownCounter
- Unit:
{entry} - Attributes:
pulsar.managed_ledger.cache.entry.status- The status of the cache entry. Can be one of:active- Indicates the number of entries currently in the cache. Equal to theevicted - inserted.inserted- Indicates the total number of entries inserted into the cache.evicted- Indicates the total number of entries evicted from the cache.
pulsar.broker.managed_ledger.cache.entry.size
The byte amount of entries stored in the entry cache.
- Type: UpDownCounter
- Unit:
{By}
pulsar.broker.managed_ledger.cache.operation.count
The number of cache operations.
- Type: Counter
- Unit:
{entry} - Attributes:
pulsar.managed_ledger.cache.operation.status- The cache operation result. Can be one of:hit- Indicates a successful cache lookup operation.miss- Indicates a failed cache lookup operation.
pulsar.broker.managed_ledger.cache.operation.size
The byte amount of data retrieved from cache operations.
- Type: Counter
- Unit:
{By} - Attributes:
pulsar.managed_ledger.cache.operation.status- The cache operation result. Can be one of:hit- Indicates a successful cache lookup operation.miss- Indicates a failed cache lookup operation.
pulsar.broker.managed_ledger.cache.pool.allocation.active.count
The number of currently active allocations in the managed-ledger cache allocator. This is the separate ml-cache allocator. Adaptive and unpooled allocators report -1 for unsupported allocation counts.
- Type: UpDownCounter
- Unit:
{allocation} - Attributes:
pulsar.managed_ledger.pool.arena.type- The arena type. Can be one of:smallnormalhuge
pulsar.broker.managed_ledger.cache.pool.allocation.size
Direct memory reserved or used by the managed-ledger cache allocator. This is the separate ml-cache allocator. For adaptive and unpooled allocators, both allocated and used use the allocator's reported direct-memory usage. This value differs from logical cached entry size.
- Type: UpDownCounter
- Unit:
{By} - Attributes:
pulsar.managed_ledger.pool.chunk.allocation.type- The chunk allocation type. Can be one of:allocatedused
Producer metrics
pulsar.broker.producer.message.incoming.count
The total number of messages received from this producer.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.producer.name- The name of the producer.pulsar.producer.id- The ID of the producer.pulsar.producer.access_mode- The access mode of the producer. Can be one of:sharedexclusivewait_for_exclusiveexclusive_with_fencing
pulsar.broker.producer.message.incoming.size
The total number of messages bytes received from this producer.
- Type: Counter
- Unit:
By - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.producer.name- The name of the producer.pulsar.producer.id- The ID of the producer.pulsar.producer.access_mode- The access mode of the producer. Can be one of:sharedexclusivewait_for_exclusiveexclusive_with_fencing
pulsar.broker.producer.message.drop.count
The total number of messages dropped from this producer.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.producer.name- The name of the producer.pulsar.producer.id- The ID of the producer.pulsar.producer.access_mode- The access mode of the producer. Can be one of:sharedexclusivewait_for_exclusiveexclusive_with_fencing
Managed Ledger metrics
pulsar.broker.managed_ledger.message.outgoing.count
The number of write operations to this ledger.
- Type: UpDownCounter
- Unit:
{operation} - Attributes:
pulsar.namespace- The managed ledger namespace.pulsar.managed_ledger.name- The name of the managed ledger.pulsar.managed_ledger.operation.status- The status of the managed ledger operation. Can be one of:successfailure
pulsar.broker.managed_ledger.message.outgoing.logical.size
The total number of messages bytes written to this ledger, excluding replicas.
- Type: Counter
- Unit:
By - Attributes:
pulsar.namespace- The managed ledger namespace.pulsar.managed_ledger.name- The name of the managed ledger.
pulsar.broker.managed_ledger.message.outgoing.replicated.size
The total number of messages bytes written to this ledger, including replicas.
- Type: Counter
- Unit:
By - Attributes:
pulsar.namespace- The managed ledger namespace.pulsar.managed_ledger.name- The name of the managed ledger.
pulsar.broker.managed_ledger.backlog.count
The number of messages in backlog for all consumers from this ledger.
- Type: UpDownCounter
- Unit:
{message} - Attributes:
pulsar.namespace- The managed ledger namespace.pulsar.managed_ledger.name- The name of the managed ledger.
pulsar.broker.managed_ledger.message.incoming.count
The number of read operations from this ledger.
- Type: UpDownCounter
- Unit:
{operation} - Attributes:
pulsar.namespace- The managed ledger namespace.pulsar.managed_ledger.name- The name of the managed ledger.pulsar.managed_ledger.operation.status- The status of the managed ledger operation. Can be one of:successfailure
pulsar.broker.managed_ledger.message.incoming.size
The total number of messages bytes read from this ledger.
- Type: Counter
- Unit:
By - Attributes:
pulsar.namespace- The managed ledger namespace.pulsar.managed_ledger.name- The name of the managed ledger.
pulsar.broker.managed_ledger.message.incoming.cache.miss.count
The number of cache misses during read operations from this ledger.
- Type: UpDownCounter
- Unit:
{operation} - Attributes:
pulsar.namespace- The managed ledger namespace.pulsar.managed_ledger.name- The name of the managed ledger.
pulsar.broker.managed_ledger.mark_delete.count
The total number of mark delete operations for this ledger.
- Type: Counter
- Unit:
{operation} - Attributes:
pulsar.namespace- The managed ledger namespace.pulsar.managed_ledger.name- The name of the managed ledger.
pulsar.broker.managed_ledger.message.outgoing.latency
End-to-end write latency, including time spent in the executor queue.
- Type: Histogram
- Unit:
s - Attributes:
pulsar.namespace- The managed ledger namespace.
pulsar.broker.managed_ledger.message.outgoing.ledger.latency
End-to end write latency.
- Type: Histogram
- Unit:
s - Attributes:
pulsar.namespace- The managed ledger namespace.
pulsar.broker.managed_ledger.ledger.switch.latency
Time taken to switch to a new ledger.
- Type: Histogram
- Unit:
s - Attributes:
pulsar.namespace- The managed ledger namespace.
pulsar.broker.managed_ledger.entry.size
Size of entries written to the ledger.
- Type: Histogram
- Unit:
By - Attributes:
pulsar.namespace- The managed ledger namespace.
pulsar.broker.managed_ledger.inflight.read.limit
Maximum number of bytes that can be retained by managed ledger data read from storage or cache.
- Type: Counter
- Unit:
By
pulsar.broker.managed_ledger.inflight.read.usage
Estimated number of bytes retained by managed ledger data read from storage or cache.
- Type: Counter
- Unit:
By - Attributes:
pulsar.managed_ledger.inflight.read.usage.state- Indicates managed ledger memory limiter usage state. Can be one of:usedfree
pulsar.broker.managed_ledger.inflight.read.acquire.count
The number of times an inflight-read permit acquisition decreases the remaining byte allowance. This counts acquisition events, not bytes or acquisition attempts that wait or fail.
- Type: Counter
- Unit:
{event}
pulsar.broker.managed_ledger.inflight.read.release.count
The number of times inflight-read permits are released, increasing the remaining byte allowance.
- Type: Counter
- Unit:
{event}
Message position search metrics
These broker-wide metrics measure timestamp searches used by seeks and message expiry. They do not carry topic or subscription attributes. A search runs when the cursor of a subscription is reset to a timestamp (a consumer seek by timestamp, or pulsar-admin topics reset-cursor --time) and when the broker looks for messages that exceeded the message TTL. The pulsar-admin topics get-message-id operation is not included.
pulsar.broker.message.find.duration
Time taken to find a message position by timestamp.
- Type: Histogram
- Unit:
s - Attributes:
pulsar.broker.message.find.reason-seekorexpiry.pulsar.broker.message.find.result-found,not_found, orfailure.
pulsar.broker.message.find.entry.read.count
The number of entries read while finding a message position by timestamp, including entries served from the broker entry cache.
- Type: Counter
- Unit:
{entry} - Attributes:
pulsar.broker.message.find.reason-seekorexpiry.pulsar.broker.message.find.entry.storage-bookkeeperoroffloaded, according to the ledger's storage location even when the entry is served from cache.
pulsar.broker.message.find.entry.read.size
The total bytes read while finding a message position by timestamp, including entries served from the broker entry cache.
- Type: Counter
- Unit:
By - Attributes:
pulsar.broker.message.find.reason-seekorexpiry.pulsar.broker.message.find.entry.storage-bookkeeperoroffloaded, according to the ledger's storage location even when the entry is served from cache.
Web Executor Service metrics
pulsar.web.executor.thread.limit
The thread limits for the pulsar-web executor pool.
- Type: UpDownCounter
- Unit:
{thread} - Attributes:
pulsar.web.executor.thread.limit.type- The limit type for the thread pool.maxmin
pulsar.web.executor.thread.usage
The current usage of threads in the pulsar-web executor pool.
- Type: UpDownCounter
- Unit:
{thread} - Attributes:
pulsar.web.executor.thread.usage.type- The usage type for the thread pool.active- Indicates the number of threads actively serving requests.current- Indicates the total number of threads currently associated with the pool.idle- Indicates the number of threads available to serve requests.
Replicator metrics
pulsar.broker.replication.message.incoming.count
The total number of messages received from the remote cluster through this replicator.
- Type: UpDownCounter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.replication.remote.cluster.name- The name of the remote cluster.
pulsar.broker.replication.message.outgoing.count
The total number of messages sent to the remote cluster through this replicator.
- Type: UpDownCounter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.replication.remote.cluster.name- The name of the remote cluster.
pulsar.broker.replication.message.incoming.size
The total number of messages bytes received from the remote cluster through this replicator.
- Type: UpDownCounter
- Unit:
{By} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.replication.remote.cluster.name- The name of the remote cluster.
pulsar.broker.replication.message.outgoing.size
The total number of messages bytes sent to the remote cluster through this replicator.
- Type: UpDownCounter
- Unit:
{By} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.replication.remote.cluster.name- The name of the remote cluster.
pulsar.broker.replication.message.backlog.count
The total number of messages in the backlog for this replicator.
- Type: UpDownCounter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.replication.remote.cluster.name- The name of the remote cluster.
pulsar.broker.replication.message.backlog.age
The age of the oldest message in the replicator backlog.
- Type: Gauge
- Unit:
s - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.replication.remote.cluster.name- The name of the remote cluster.
pulsar.broker.replication.message.expired.count
The total number of messages that expired for this replicator.
- Type: UpDownCounter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.replication.remote.cluster.name- The name of the remote cluster.
pulsar.broker.replication.message.dropped.count
The total number of messages dropped by this replicator.
- Type: UpDownCounter
- Unit:
{message} - Attributes:
pulsar.domain- The domain of the topic. Can be one of:persistentnon-persistent
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.replication.remote.cluster.name- The name of the remote cluster.
Schema Registry Metrics
pulsar.broker.request.schema_registry.duration
The duration of Schema Registry requests
- Type: Histogram
- Unit:
s - Attributes:
pulsar.namespace- The namespace referred by the Schema Registry requestpulsar.schema_registry.request- The Schema Registry request typegetlistputdelete
pulsar.schema_registry.response- The Schema Registry response typesuccessfailure
pulsar.broker.operation.schema_registry.compatibility_check.count
The number of Schema Registry compatibility check operations performed by the broker.
- Type: Counter
- Unit:
{operation} - Attributes:
pulsar.namespace- The namespace referred by the compatibility check operationpulsar.schema_registry.compatibility_check.response- The compatibility check response typecompatibleincompatible
HTTP Request Filter Metrics
pulsar.web.filter.rate_limit.request.count
Counter of HTTP requests processed by the rate limiting filter.
- Type: Counter
- Unit:
{request} - Attributes:
pulsar.web.filter.rate_limit.result- The result of the rate limiting operation. Can be one of:acceptedrejected
Transaction Coordinator Metrics
pulsar.broker.transaction.coordinator.transaction.count
The number of transactions handled by the coordinator.
- Type: UpDownCounter
- Unit:
{transaction} - Attributes:
pulsar.transaction.coordinator.id- The ID of the Pulsar transaction coordinator.pulsar.transaction.status- The status of the Pulsar transaction. Can be one of:abortedactivecreatedcommittedtimeout
pulsar.broker.transaction.coordinator.append.log.count
The number of transaction metadata entries appended by the coordinator.
- Type: Counter
- Unit:
{entry} - Attributes:
pulsar.transaction.coordinator.id- The ID of the Pulsar transaction coordinator.pulsar.transaction.status- The status of the Pulsar transaction. Can be one of:abortedactivecreatedcommittedtimeout
Transaction Pending Acknowledgment Store Metrics
pulsar.broker.transaction.pending.ack.store.transaction.count
The number of transactions handled by the persistent ack store.
- Type: Counter
- Unit:
{transaction} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition.index- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription.name- The name of the Pulsar subscription.pulsar.transaction.status- The Pulsar transaction status. Can be one of:abortedcommitted
pulsar.transaction.pending.ack.store.operation.status- The status of the pending acknowledgment store operation. Can be one of:failuresuccess
Authentication Metrics
pulsar.authentication.operation.count
The number of authentication operations.
- Type: Counter
- Unit:
{operation} - Attributes:
pulsar.authentication.provider- The name of the authentication provider class.pulsar.authentication.method- The name of the authentication method.pulsar.authentication.result- The authentication result. Can be one of:successfailure
pulsar.authentication.error- The authentication error, if the result isfailure.
Token Metrics
pulsar.authentication.token.expired.count
The total number of expired tokens.
- Type: Counter
- Unit:
{token}
pulsar.authentication.token.expiry.duration
The remaining time of expiring token in seconds.
- Type: Histogram
- Unit:
s
Replication Subscription Metrics
pulsar.broker.replication.subscription.snapshot.operation.count
The number of snapshot operations attempted.
- Type: Counter
- Unit:
{operation}
pulsar.broker.replication.subscription.snapshot.operation.duration
Time taken to complete a consistent snapshot operation across clusters.
- Type: Histogram
- Unit:
s - Attributes:
pulsar.replication.subscription.snapshot.operation.result- The result of the snapshot operation. Can be one of:successtimeout
Transaction buffer client pending requests
pulsar.broker.transaction.buffer.client.pending.count
Number of pending requests in the transaction buffer client.
- Type: UpDownCounter
- Unit:
{transaction} - Attributes: None.
Java Client
Producer Metrics
pulsar.client.producer.message.send.duration
Publish latency experienced by the application, includes client batching time.
- Type: Histogram
- Unit:
s - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.response.status- The response status. Can be one of:successfailed
pulsar.client.producer.rpc.send.duration
Publish RPC latency experienced internally by the client when sending data to receiving an ack.
- Type: Histogram
- Unit:
s - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.response.status- The response status. Can be one of:successfailed
pulsar.client.producer.message.send.size
The number of bytes published.
- Type: Counter
- Unit:
By - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.
pulsar.client.producer.message.pending.count
The number of messages in the producer internal send queue, waiting to be sent.
- Type: UpDownCounter
- Unit:
{message} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.
pulsar.client.producer.message.pending.size
The size of the messages in the producer internal queue, waiting to be sent.
- Type: UpDownCounter
- Unit:
By - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.
pulsar.client.producer.opened
The number of producer sessions opened.
- Type: Counter
- Unit:
{session} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.
pulsar.client.producer.closed
The number of producer sessions closed.
- Type: Counter
- Unit:
{session} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.
Consumer Metrics
pulsar.client.consumer.opened
The number of consumer sessions opened.
- Type: Counter
- Unit:
{session} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription- The subscription name.
pulsar.client.consumer.closed
The number of consumer sessions closed.
- Type: Counter
- Unit:
{session} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription- The subscription name.
pulsar.client.consumer.message.received.count
The number of messages explicitly received by the consumer application.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription- The subscription name.
pulsar.client.consumer.message.received.size
The number of bytes explicitly received by the consumer application.
- Type: Counter
- Unit:
By - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription- The subscription name.
pulsar.client.consumer.receive_queue.count
The number of messages currently sitting in the consumer receive queue.
- Type: UpDownCounter
- Unit:
{message} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription- The subscription name.
pulsar.client.consumer.receive_queue.size
The total size in bytes of messages currently sitting in the consumer receive queue.
- Type: UpDownCounter
- Unit:
By - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription- The subscription name.
pulsar.client.consumer.message.ack
The number of acknowledged messages.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription- The subscription name.
pulsar.client.consumer.message.nack
The number of negatively acknowledged messages.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription- The subscription name.
pulsar.client.consumer.message.dlq
The number of messages sent to the dead letter queue.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription- The subscription name.
pulsar.client.consumer.message.ack.timeout
The number of messages that were not acknowledged in the configured timeout period, hence, were requested by the client to be redelivered.
- Type: Counter
- Unit:
{message} - Attributes:
pulsar.tenant- The topic tenant.pulsar.namespace- The topic namespace.pulsar.topic- The topic name.pulsar.partition- The partition index of the topic. Present only if the topic is partitioned.pulsar.subscription- The subscription name.
Connection Metrics
pulsar.client.connection.opened
The number of connections opened.
- Type: Counter
- Unit:
{connection}
pulsar.client.connection.closed
The number of connections closed.
- Type: Counter
- Unit:
{connection}
pulsar.client.connection.failed
The number of failed connection attempts.
- Type: Counter
- Unit:
{connection} - Attributes:
pulsar.failure.type- The type of connection failure. Can be one of:tcp-failedhandshake
Lookup Service Metrics
pulsar.client.lookup.duration
Duration of lookup operations.
- Type: Histogram
- Unit:
s - Attributes:
pulsar.lookup.transport-type- The transport type used for the lookup. Can be one of:httpbinary
pulsar.response.status- The response status. Can be one of:successfailed
Memory Buffer Metrics
pulsar.client.memory.buffer.usage
Current memory buffer usage by the client.
- Type: UpDownCounter
- Unit:
By
pulsar.client.memory.buffer.limit
Memory buffer limit configured for the client.
- Type: UpDownCounter
- Unit:
By
Topic-list memory limiting (broker and proxy)
These instruments are emitted by the broker and proxy topic-list memory limiters. The instrument names have no pulsar. prefix. They have no per-topic attributes; use the resource and instrumentation scope to distinguish the emitting service. Heap and direct-memory limits, queue lengths, and acquisition timeouts are controlled by the maxTopicListInFlightHeapMem* and maxTopicListInFlightDirectMem* settings.
| Name | Type | Unit | Description |
|---|---|---|---|
topic.list.direct.memory.limit | Gauge | By | Configured direct memory limit. |
topic.list.direct.memory.used | Gauge | By | Current direct memory used by topic listings. |
topic.list.direct.queue.max.size | Gauge | 1 | Maximum direct memory limiter queue size. |
topic.list.direct.queue.size | UpDownCounter | 1 | Current direct memory limiter queue size. |
topic.list.direct.timeout.total | Counter | 1 | Total direct memory permit timeouts. |
topic.list.direct.wait.time | Histogram | s | Wait time for direct memory permits. |
topic.list.heap.memory.limit | Gauge | By | Configured heap memory limit. |
topic.list.heap.memory.used | Gauge | By | Current heap memory used by topic listings. |
topic.list.heap.queue.max.size | Gauge | 1 | Maximum heap memory limiter queue size. |
topic.list.heap.queue.size | UpDownCounter | 1 | Current heap memory limiter queue size. |
topic.list.heap.timeout.total | Counter | 1 | Total heap memory permit timeouts. |
topic.list.heap.wait.time | Histogram | s | Wait time for heap memory permits. |
Client authentication
The asynchronous authentication framework records credential acquisition through getAuthDataAsync and getHttpHeadersAsync. These instruments use the org.apache.pulsar.client.auth instrumentation scope and require a real OpenTelemetry instance in the authentication initialization context; a no-op instance produces no measurements.
pulsar.client.auth.credential.duration
Time spent acquiring credentials asynchronously, in seconds.
- Type: Histogram
- Unit:
s - Attributes:
auth_method: authentication method, orunknownwhen unspecified.
pulsar.client.auth.failure
Failed credential acquisitions. Terminal failures include rejected or unsupported credentials; transient failures can recover on retry, such as an unreachable identity provider.
- Type: Counter
- Unit: Unspecified (event count).
- Attributes:
auth_method;error:terminalortransient.
TLS material reloads
The built-in TLS factory records these instruments in the org.apache.pulsar.tls scope when its initialization context supplies a real OpenTelemetry instance. An initial material load or a reload after a change is an event; polling unchanged files does not increment the counter.
pulsar.tls.reload
TLS material load and reload events on client and server paths.
- Type: Counter
- Unit: Unspecified (event count).
- Attributes:
purpose: TLS purpose name;result:successorfailure.
pulsar.tls.last_reload_success
Unix timestamp in seconds of the last successful TLS material load or reload for each purpose. A failed reload does not advance it.
- Type: Gauge
- Unit:
s - Attributes:
purpose: TLS purpose name.