Skip to main content
Version: 5.0.x

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:
      • active
      • open
      • close

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:
      • success
      • failure

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:
      • paused
      • resumed
      • throttled
      • unthrottled

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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • size
      • time

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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • active
      • committed
      • aborted

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:
      • aborted
      • committed
    • pulsar.transaction.buffer.client.operation.status - The status of the Pulsar transaction buffer client operation. Can be one of:
      • failure
      • success

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:
      • persistent
      • non-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 request
      • failure
      • broker
      • redirect

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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • success
      • failure

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:
      • success
      • failure

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 the evicted - 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:
      • small
      • normal
      • huge

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:
      • allocated
      • used

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:
      • persistent
      • non-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:
      • shared
      • exclusive
      • wait_for_exclusive
      • exclusive_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:
      • persistent
      • non-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:
      • shared
      • exclusive
      • wait_for_exclusive
      • exclusive_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:
      • persistent
      • non-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:
      • shared
      • exclusive
      • wait_for_exclusive
      • exclusive_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:
      • success
      • failure

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:
      • success
      • failure

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:
      • used
      • free

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 - seek or expiry.
    • pulsar.broker.message.find.result - found, not_found, or failure.

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 - seek or expiry.
    • pulsar.broker.message.find.entry.storage - bookkeeper or offloaded, 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 - seek or expiry.
    • pulsar.broker.message.find.entry.storage - bookkeeper or offloaded, 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.
      • max
      • min

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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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:
      • persistent
      • non-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 request
    • pulsar.schema_registry.request - The Schema Registry request type
      • get
      • list
      • put
      • delete
    • pulsar.schema_registry.response - The Schema Registry response type
      • success
      • failure

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 operation
    • pulsar.schema_registry.compatibility_check.response - The compatibility check response type
      • compatible
      • incompatible

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:
      • accepted
      • rejected

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:
      • aborted
      • active
      • created
      • committed
      • timeout

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:
      • aborted
      • active
      • created
      • committed
      • timeout

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:
      • aborted
      • committed
    • pulsar.transaction.pending.ack.store.operation.status - The status of the pending acknowledgment store operation. Can be one of:
      • failure
      • success

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:
      • success
      • failure
    • pulsar.authentication.error - The authentication error, if the result is failure.

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:
      • success
      • timeout

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:
      • success
      • failed

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:
      • success
      • failed

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-failed
      • handshake

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:
      • http
      • binary
    • pulsar.response.status - The response status. Can be one of:
      • success
      • failed

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.

NameTypeUnitDescription
topic.list.direct.memory.limitGaugeByConfigured direct memory limit.
topic.list.direct.memory.usedGaugeByCurrent direct memory used by topic listings.
topic.list.direct.queue.max.sizeGauge1Maximum direct memory limiter queue size.
topic.list.direct.queue.sizeUpDownCounter1Current direct memory limiter queue size.
topic.list.direct.timeout.totalCounter1Total direct memory permit timeouts.
topic.list.direct.wait.timeHistogramsWait time for direct memory permits.
topic.list.heap.memory.limitGaugeByConfigured heap memory limit.
topic.list.heap.memory.usedGaugeByCurrent heap memory used by topic listings.
topic.list.heap.queue.max.sizeGauge1Maximum heap memory limiter queue size.
topic.list.heap.queue.sizeUpDownCounter1Current heap memory limiter queue size.
topic.list.heap.timeout.totalCounter1Total heap memory permit timeouts.
topic.list.heap.wait.timeHistogramsWait 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, or unknown when 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: terminal or transient.

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: success or failure.

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.