blob: 49539a187b02332ed57903889134dcb18609b94e [file] [log] [blame]
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-reference-metrics">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.4.0">
<title data-rh="true">Pulsar metrics | Apache Pulsar</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://pulsar.apache.org/img/pulsar-social-media-card.png"><meta data-rh="true" name="twitter:image" content="https://pulsar.apache.org/img/pulsar-social-media-card.png"><meta data-rh="true" property="og:url" content="https://pulsar.apache.org/docs/next/reference-metrics/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Pulsar metrics | Apache Pulsar"><meta data-rh="true" name="description" content="Pulsar exposes the following metrics in Prometheus format. You can monitor your clusters with those metrics."><meta data-rh="true" property="og:description" content="Pulsar exposes the following metrics in Prometheus format. You can monitor your clusters with those metrics."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="alternate" href="https://pulsar.apache.org/docs/next/reference-metrics/" hreflang="en"><link data-rh="true" rel="alternate" href="https://pulsar.apache.org/docs/next/reference-metrics/" hreflang="x-default"><link data-rh="true" rel="canonical" href="https://pulsar.apache.org/docs/next/reference-metrics/"><link data-rh="true" rel="preconnect" href="https://WK2YL0SALL-dsn.algolia.net" crossorigin="anonymous"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Pulsar RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Pulsar Atom Feed">
<link rel="search" type="application/opensearchdescription+xml" title="Apache Pulsar" href="/opensearch.xml">
<link rel="stylesheet" href="/css/katex-0.13.24.min.css" media="print" onload="this.media=&#39;all&#39;">
<script src="/js/sine-waves.min.js" async></script>
<script src="/js/matomo-agent.js"></script><link rel="stylesheet" href="/assets/css/styles.b0f65ef3.css">
<link rel="preload" href="/assets/js/runtime~main.1d0ed2a7.js" as="script">
<link rel="preload" href="/assets/js/main.e07a0c68.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><div class="announcementBar_mb4j" style="background-color:#282826;color:#fff" role="banner"><div class="content_knG7 announcementBarContent_xLdY">
<a class="announcement-bar" href="https://registration.socio.events/e/pulsarvirtualsummiteurope2024" target="_blank">
<div class="announcement-bar__content">
<svg class="announcement-bar__icon">
<svg viewBox="0 0 33 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.5 19.6001H16.1L15.3 29.2001L26.5 12.4H17.06L18.1 2.80005L6.5 19.6001Z" stroke="#F7F7F7" stroke-width="1.5" stroke-linejoin="round"/>
</svg>
</svg>
<span>
Get your free pass for Pulsar Virtual Summit Europe 2024 on May 14, 2024 🗓️
</span>
<svg class="announcement-bar__icon">
<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="20" height="20" transform="translate(6 6)" fill="white" fill-opacity="0.01"/>
<path d="M17.6667 10.1667L23.5 16.0001M23.5 16.0001L17.6667 21.8334M23.5 16.0001L8.5 16.0001" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="0.5" y="0.5" width="31" height="31" rx="15.5" stroke="white"/>
</svg>
</svg>
</div>
</a>
</div></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-black.svg" alt="Apache Pulsar logo" class="themedImage_ToTc themedImage--light_HNdA" height="25" width="127"><img src="/img/logo-black.svg" alt="Apache Pulsar logo" class="themedImage_ToTc themedImage--dark_i4oU" height="25" width="127"></div><b class="navbar__title text--truncate"></b></a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Get Started</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/3.2.x/concepts-overview/">Concepts</a></li><li><a class="dropdown__link" href="/docs/3.2.x/">Quickstart</a></li><li><a class="dropdown__link" href="/ecosystem/">Ecosystem</a></li></ul></div><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/next/">Docs</a><a class="navbar__item navbar__link" href="/features/">Features</a><a class="navbar__item navbar__link" href="/use-cases/">Use Cases</a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link community-dropdown">Community</a><ul class="dropdown__menu"><li><a class="dropdown__link scroll-link scroll-welcome" id="scroll-welcome" href="/community/">Welcome</a></li><li><a class="dropdown__link scroll-link scroll-discussions" id="scroll-discussions" href="/community/#section-discussions">Discussions</a></li><li><a class="dropdown__link scroll-link" id="scroll-governance" href="/community/#section-governance">Governance</a></li><li><a class="dropdown__link scroll-link" id="scroll-community" href="/community/#section-community">Meet the Community</a></li><li><a class="dropdown__link scroll-link" id="scroll-contribute" href="/community/#section-contribute">Contribute</a></li><li><a class="dropdown__link" href="/contribute/">Contribution Guide</a></li><li><a href="https://github.com/apache/pulsar/wiki" target="_blank" rel="noopener noreferrer" class="dropdown__link">Wiki</a></li><li><a href="https://github.com/apache/pulsar/issues" target="_blank" rel="noopener noreferrer" class="dropdown__link">Issue Tracking</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Learn</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/blog/">Blog</a></li><li><a class="dropdown__link" href="/books/">Books</a></li><li><a class="dropdown__link" href="/case-studies/">Case Studies</a></li><li><a class="dropdown__link" href="/articles/">Articles</a></li><li><a class="dropdown__link" href="/presentations/">Presentations</a></li><li><a class="dropdown__link" href="/events/">Events</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link navbar_download_button" href="/download/">Download</a><div class="searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_mhZE"><div class="sidebarVersionSwitch_EHpo">Version:<div class="navbar__item dropdown dropdown--hoverable"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/next/">Next</a><ul class="dropdown__menu"><li><a class="dropdown__link">Next</a></li><li><a class="dropdown__link">3.2.x</a></li><li><a class="dropdown__link">3.0.x LTS</a></li><li><a class="dropdown__link">Others</a></li></ul></div></div><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG menuWithAnnouncementBar_GW3s"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/next/">About</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/next/getting-started-home/">Get Started</a><button aria-label="Toggle the collapsible sidebar category &#x27;Get Started&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/concepts-overview/">Concepts and Architecture</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/schema-overview/">Pulsar Schema</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/functions-overview/">Pulsar Functions</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/io-overview/">Pulsar IO</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/sql-overview/">Pulsar SQL</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/tiered-storage-overview/">Tiered Storage</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/txn-why/">Transactions</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/next/install-deploy-upgrade-landing/">Deployment</a><button aria-label="Toggle the collapsible sidebar category &#x27;Deployment&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/administration-zk-bk/">Administration</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/docs/next/administration-stats/">Observability</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/administration-stats/">Statistics</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/next/reference-metrics/">Metrics</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/deploy-monitoring/">Monitoring</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/reference-metrics-opentelemetry/">OpenTelemetry Metrics</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/security-overview/">Security</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/performance-pulsar-perf/">Performance</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/client-libraries/">Client Libraries</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/admin-api-overview/">Admin API</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/next/adaptors-kafka/">Adaptors</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/next/how-to-landing/">Tutorials</a><button aria-label="Toggle the collapsible sidebar category &#x27;Tutorials&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/next/developers-landing/">Development</a><button aria-label="Toggle the collapsible sidebar category &#x27;Development&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/next/reference-landing/">Reference</a><button aria-label="Toggle the collapsible sidebar category &#x27;Reference&#x27;" type="button" class="clean-btn menu__caret"></button></div></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Observability</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Metrics</span><meta itemprop="position" content="2"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: Next</span><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Pulsar metrics</h1></header><p>Pulsar exposes the following metrics in Prometheus format. You can monitor your clusters with those metrics.</p><ul><li><a href="/docs/next/reference-metrics/"></a><ul><li><a href="#pulsar-functions">Pulsar Functions</a></li><li><a href="#connectors">Connectors</a></li><li><a href="#proxy">Proxy</a></li><li><a href="#pulsar-sql-worker">Pulsar SQL Worker</a></li><li><a href="#pulsar-transaction">Pulsar transaction</a></li></ul></li></ul><p>The following types of metrics are available:</p><ul><li><a href="https://prometheus.io/docs/concepts/metric_types/#counter" target="_blank" rel="noopener noreferrer">Counter</a>: a cumulative metric that represents a single monotonically increasing counter. The value increases by default. You can reset the value to zero or restart your cluster.</li><li><a href="https://prometheus.io/docs/concepts/metric_types/#gauge" target="_blank" rel="noopener noreferrer">Gauge</a>: a metric that represents a single numerical value that can arbitrarily go up and down.</li><li><a href="https://prometheus.io/docs/concepts/metric_types/#histogram" target="_blank" rel="noopener noreferrer">Histogram</a>: a histogram samples observations (usually things like request durations or response sizes) and counts them in configurable buckets. The <code>_bucket</code> suffix is the number of observations within a histogram bucket, configured with parameter <code>{le=&quot;&lt;upper inclusive bound&gt;&quot;}</code>. The <code>_count</code> suffix is the number of observations, shown as a time series and behaves like a counter. The <code>_sum</code> suffix is the sum of observed values, also shown as a time series and behaves like a counter. These suffixes are together denoted by <code>_*</code> in this doc.</li><li><a href="https://prometheus.io/docs/concepts/metric_types/#summary" target="_blank" rel="noopener noreferrer">Summary</a>: similar to a histogram, a summary samples observations (usually things like request durations and response sizes). While it also provides a total count of observations and a sum of all observed values, it calculates configurable quantiles over a sliding time window.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper">ZooKeeper<a href="#zookeeper" class="hash-link" aria-label="Direct link to ZooKeeper" title="Direct link to ZooKeeper"></a></h2><p>The ZooKeeper metrics are exposed under &quot;/metrics&quot; at port <code>8000</code>. You can use a different port by configuring the <code>metricsProvider.httpPort</code> in <code>conf/zookeeper.conf</code>.</p><p>ZooKeeper provides a New Metrics System since 3.6.0. For more detailed metrics, refer to the <a href="https://zookeeper.apache.org/doc/r3.7.0/zookeeperMonitor.html" target="_blank" rel="noopener noreferrer">ZooKeeper Monitor Guide</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="bookkeeper">BookKeeper<a href="#bookkeeper" class="hash-link" aria-label="Direct link to BookKeeper" title="Direct link to BookKeeper"></a></h2><p>The BookKeeper metrics are exposed under &quot;/metrics&quot; at port <code>8000</code>. You can change the port by updating <code>prometheusStatsHttpPort</code>
in the <code>bookkeeper.conf</code> configuration file.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="server-metrics">Server metrics<a href="#server-metrics" class="hash-link" aria-label="Direct link to Server metrics" title="Direct link to Server metrics"></a></h3><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>bookie_SERVER_STATUS</td><td>Gauge</td><td>The server status for bookie server. <br><ul><li>1: the bookie is running in writable mode.</li><li>0: the bookie is running in read-only mode.</li></ul></td></tr><tr><td>bookkeeper_server_ADD_ENTRY_count</td><td>Counter</td><td>The total number of ADD_ENTRY requests received at the bookie. The <code>success</code> label is used to distinguish between successes and failures.</td></tr><tr><td>bookkeeper_server_READ_ENTRY_count</td><td>Counter</td><td>The total number of READ_ENTRY requests received at the bookie. The <code>success</code> label is used to distinguish between successes and failures.</td></tr><tr><td>bookie_WRITE_BYTES</td><td>Counter</td><td>The total number of bytes written to the bookie.</td></tr><tr><td>bookie_READ_BYTES</td><td>Counter</td><td>The total number of bytes read from the bookie.</td></tr><tr><td>bookkeeper_server_ADD_ENTRY_REQUEST</td><td>Summary</td><td>The summary of request latency of ADD_ENTRY requests at the bookie. The <code>success</code> label is used to distinguish between successes and failures.</td></tr><tr><td>bookkeeper_server_READ_ENTRY_REQUEST</td><td>Summary</td><td>The summary of request latency of READ_ENTRY requests at the bookie. The <code>success</code> label is used to distinguish between successes and failures.</td></tr><tr><td>bookkeeper<em>server_BookieReadThreadPool_queue</em>{thread_id}</td><td>Gauge</td><td>The number of requests to be processed in a read thread queue.</td></tr><tr><td>bookkeeper_server_BookieReadThreadPool_task_queued</td><td>Summary</td><td>The waiting time of a task to be processed in a read thread queue.</td></tr><tr><td>bookkeeper_server_BookieReadThreadPool_task_execution</td><td>Summary</td><td>The execution time of a task in a read thread queue.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="journal-metrics">Journal metrics<a href="#journal-metrics" class="hash-link" aria-label="Direct link to Journal metrics" title="Direct link to Journal metrics"></a></h3><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>bookie_journal_JOURNAL_SYNC_count</td><td>Counter</td><td>The total number of journal fsync operations happening at the bookie. The <code>success</code> label is used to distinguish between successes and failures.</td></tr><tr><td>bookie_journal_JOURNAL_QUEUE_SIZE</td><td>Gauge</td><td>The total number of requests pending in the journal queue.</td></tr><tr><td>bookie_journal_JOURNAL_FORCE_WRITE_QUEUE_SIZE</td><td>Gauge</td><td>The total number of force write (fsync) requests pending in the force-write queue.</td></tr><tr><td>bookie_journal_JOURNAL_CB_QUEUE_SIZE</td><td>Gauge</td><td>The total number of callbacks pending in the callback queue.</td></tr><tr><td>bookie_journal_JOURNAL_ADD_ENTRY</td><td>Summary</td><td>The summary of request latency of adding entries to the journal.</td></tr><tr><td>bookie_journal_JOURNAL_SYNC</td><td>Summary</td><td>The summary of fsync latency of syncing data to the journal disk.</td></tr><tr><td>bookie_journal_JOURNAL_CREATION_LATENCY</td><td>Summary</td><td>The latency created by a journal log file.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="storage-metrics">Storage metrics<a href="#storage-metrics" class="hash-link" aria-label="Direct link to Storage metrics" title="Direct link to Storage metrics"></a></h3><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>bookie_ledgers_count</td><td>Gauge</td><td>The total number of ledgers stored in the bookie.</td></tr><tr><td>bookie_entries_count</td><td>Gauge</td><td>The total number of entries stored in the bookie.</td></tr><tr><td>bookie_write_cache_size</td><td>Gauge</td><td>The bookie write cache size (in bytes).</td></tr><tr><td>bookie_read_cache_size</td><td>Gauge</td><td>The bookie read cache size (in bytes).</td></tr><tr><td>bookie_DELETED_LEDGER_COUNT</td><td>Counter</td><td>The total number of ledgers deleted since the bookie has started.</td></tr><tr><td>bookie_ledger_writable_dirs</td><td>Gauge</td><td>The number of writable directories in the bookie.</td></tr><tr><td>bookie_flush</td><td>Gauge</td><td>The table flush latency of bookie memory.</td></tr><tr><td>bookie_throttled_write_requests</td><td>Counter</td><td>The number of write requests to be throttled.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="replication-metrics">Replication metrics<a href="#replication-metrics" class="hash-link" aria-label="Direct link to Replication metrics" title="Direct link to Replication metrics"></a></h3><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>auditor_NUM_UNDER_REPLICATED_LEDGERS</td><td>Summary</td><td>The distribution of num under_replicated ledgers on each auditor run.</td></tr><tr><td>auditor_UNDER_REPLICATED_LEDGERS_TOTAL_SIZE</td><td>Summary</td><td>The distribution of under_replicated ledgers total size on each auditor run.</td></tr><tr><td>auditor_URL_PUBLISH_TIME_FOR_LOST_BOOKIE</td><td>Summary</td><td>The latency distribution of publishing under replicated ledgers for lost bookies.</td></tr><tr><td>auditor_BOOKIE_TO_LEDGERS_MAP_CREATION_TIME</td><td>Summary</td><td>The latency distribution of creating bookies-to-ledgers map.</td></tr><tr><td>auditor_CHECK_ALL_LEDGERS_TIME</td><td>Summary</td><td>The latency distribution of checking all ledgers.</td></tr><tr><td>auditor_PLACEMENT_POLICY_CHECK_TIME</td><td>Summary</td><td>The latency distribution of placementPolicy check.</td></tr><tr><td>auditor_REPLICAS_CHECK_TIME</td><td>Summary</td><td>The latency distribution of replicas check.</td></tr><tr><td>auditor_AUDIT_BOOKIES_TIME</td><td>Summary</td><td>The latency distribution of auditing all the bookies.</td></tr><tr><td>auditor_NUM_LEDGERS_CHECKED</td><td>Counter</td><td>The number of ledgers checked by the auditor.</td></tr><tr><td>auditor_NUM_FRAGMENTS_PER_LEDGER</td><td>Summary</td><td>The distribution of number of fragments per ledger.</td></tr><tr><td>auditor_NUM_BOOKIES_PER_LEDGER</td><td>Summary</td><td>The distribution of number of bookies per ledger.</td></tr><tr><td>auditor_NUM_BOOKIE_AUDITS_DELAYED</td><td>Counter</td><td>The number of bookie-audits delayed.</td></tr><tr><td>auditor_NUM_DELAYED_BOOKIE_AUDITS_DELAYES_CANCELLED</td><td>Counter</td><td>The number of delayed-bookie-audits cancelled.</td></tr><tr><td>auditor_NUM_LEDGERS_NOT_ADHERING_TO_PLACEMENT_POLICY</td><td>Gauge</td><td>The number of ledgers not adhering to placement policy found in placement policy check.</td></tr><tr><td>auditor_NUM_LEDGERS_SOFTLY_ADHERING_TO_PLACEMENT_POLICY</td><td>Gauge</td><td>The number of ledgers softly adhering to placement policy found in placement policy check.</td></tr><tr><td>auditor_NUM_UNDERREPLICATED_LEDGERS_ELAPSED_RECOVERY_GRACE_PERIOD</td><td>Gauge</td><td>The number of underreplicated ledgers elapsed recovery grace period.</td></tr><tr><td>auditor_NUM_LEDGERS_HAVING_NO_REPLICA_OF_AN_ENTRY</td><td>Gauge</td><td>The number of ledgers having an entry with all the replicas missing.</td></tr><tr><td>auditor_NUM_LEDGERS_HAVING_LESS_THAN_AQ_REPLICAS_OF_AN_ENTRY</td><td>Gauge</td><td>The number of ledgers having an entry with less than AQ number of replicas, this doesn&#x27;t include ledgers counted towards numLedgersHavingNoReplicaOfAnEntry.</td></tr><tr><td>auditor_NUM_LEDGERS_HAVING_LESS_THAN_WQ_REPLICAS_OF_AN_ENTRY</td><td>Gauge</td><td>The number of ledgers having an entry with less than WQ number of replicas, this doesn&#x27;t include ledgers counted towards numLedgersHavingLessThanAQReplicasOfAnEntry.</td></tr><tr><td>election_attempts</td><td>Counter</td><td>The number of auditor election attempts.</td></tr><tr><td>replication_worker_NUM_BYTES_READ</td><td>Summary</td><td>The distribution size of entries read by the replicator.</td></tr><tr><td>replication_worker_NUM_ENTRIES_READ</td><td>Counter</td><td>Number of entries read by the replicator.</td></tr><tr><td>replication_worker_NUM_ENTRIES_WRITTEN</td><td>Counter</td><td>Number of entries written by the replicator.</td></tr><tr><td>replication_worker_NUM_BYTES_WRITTEN</td><td>Summary</td><td>The distribution size of entries written by the replicator.</td></tr><tr><td>replication_worker_READ_DATA_LATENCY</td><td>Summary</td><td>The distribution of latency of read entries by the replicator.</td></tr><tr><td>replication_worker_WRITE_DATA_LATENCY</td><td>Summary</td><td>The distribution of latency of write entries by the replicator.</td></tr><tr><td>replication_worker_exceptions</td><td>Summary</td><td>Replication related exceptions.</td></tr><tr><td>replication_worker_rereplicate</td><td>Summary</td><td>Operation stats of re-replicating ledgers.</td></tr><tr><td>replication_worker_NUM_FULL_OR_PARTIAL_LEDGERS_REPLICATED</td><td>Counter</td><td>The number of ledgers re-replicated.</td></tr><tr><td>replication_worker_NUM_DEFER_LEDGER_LOCK_RELEASE_OF_FAILED_LEDGER</td><td>Counter</td><td>The number of defer-ledger-lock-releases of failed ledgers.</td></tr><tr><td>replication_worker_NUM_ENTRIES_UNABLE_TO_READ_FOR_REPLICATION</td><td>Counter</td><td>The number of entries ReplicationWorker unable to read.</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="broker">Broker<a href="#broker" class="hash-link" aria-label="Direct link to Broker" title="Direct link to Broker"></a></h2><p>The broker metrics are exposed under &quot;/metrics/&quot; at port <code>8080</code>. You can change the port by updating <code>webServicePort</code> to a different port
in the <code>broker.conf</code> configuration file.</p><p>All the metrics exposed by a broker are labeled with <code>cluster=${pulsar_cluster}</code>. The name of Pulsar cluster is the value of <code>${pulsar_cluster}</code>, which you have configured in the <code>broker.conf</code> file.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="broker-metrics">Broker metrics<a href="#broker-metrics" class="hash-link" aria-label="Direct link to Broker metrics" title="Direct link to Broker metrics"></a></h3><p>All the broker metrics are labeled with the following labels:</p><ul><li>cluster: cluster=${pulsar_cluster}. ${pulsar_cluster} is the cluster name that you have configured in the <code>broker.conf</code> file.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_ml_cache_evictions</td><td>Gauge</td><td>The number of cache evictions during the last minute.</td></tr><tr><td>pulsar_ml_cache_inserted_entries_total</td><td>Counter</td><td>The number of entries inserted into the entry cache.</td></tr><tr><td>pulsar_ml_cache_evicted_entries_total</td><td>Counter</td><td>The number of entries evicted from the entry cache.</td></tr><tr><td>pulsar_ml_cache_entries</td><td>Gauge</td><td>The number of entries in the entry cache.</td></tr><tr><td>pulsar_ml_cache_hits_rate</td><td>Gauge</td><td>The number of cache hits per second on the broker side.</td></tr><tr><td>pulsar_ml_cache_hits_throughput</td><td>Gauge</td><td>The amount of data (byte per second) retrieved from the cache on the broker side.</td></tr><tr><td>pulsar_ml_cache_misses_rate</td><td>Gauge</td><td>The number of cache missed per second on the broker side.</td></tr><tr><td>pulsar_ml_cache_misses_throughput</td><td>Gauge</td><td>The amount of data (byte per second) that cannot be retrieved from the cache on the broker side.</td></tr><tr><td>pulsar_ml_cache_pool_active_allocations</td><td>Gauge</td><td>The number of currently active allocations in direct arena.</td></tr><tr><td>pulsar_ml_cache_pool_active_allocations_huge</td><td>Gauge</td><td>The number of currently active huge allocation in direct arena.</td></tr><tr><td>pulsar_ml_cache_pool_active_allocations_normal</td><td>Gauge</td><td>The number of currently active normal allocations in direct arena.</td></tr><tr><td>pulsar_ml_cache_pool_active_allocations_small</td><td>Gauge</td><td>The number of currently active small allocations in direct arena.</td></tr><tr><td>pulsar_ml_cache_pool_allocated</td><td>Gauge</td><td>The total allocated memory of chunk lists in direct arena.</td></tr><tr><td>pulsar_ml_cache_pool_used</td><td>Gauge</td><td>The total used memory of chunk lists in direct arena.</td></tr><tr><td>pulsar_ml_cache_used_size</td><td>Gauge</td><td>The size used to store the payloads of entries (in bytes).</td></tr><tr><td>pulsar_ml_count</td><td>Gauge</td><td>The number of currently opened managed ledgers.</td></tr><tr><td><del>topic_load_times (deprecated)</del></td><td><del>Summary</del></td><td><del>The topic load latency calculated in milliseconds.</del></td></tr><tr><td>pulsar_topic_load_times</td><td>Summary</td><td>The topic load latency calculated in milliseconds.</td></tr><tr><td>pulsar_active_connections</td><td>Gauge</td><td>The number of active connections.</td></tr><tr><td>pulsar_connection_created_total_count</td><td>Gauge</td><td>The total number of connections.</td></tr><tr><td>pulsar_connection_create_success_count</td><td>Gauge</td><td>The number of successfully created connections.</td></tr><tr><td>pulsar_connection_create_fail_count</td><td>Gauge</td><td>The number of failed connections.</td></tr><tr><td>pulsar_connection_closed_total_count</td><td>Gauge</td><td>The total number of closed connections.</td></tr><tr><td>pulsar_broker_throttled_connections</td><td>Gauge</td><td>The number of throttled connections.</td></tr><tr><td>pulsar_broker_throttled_connections_global_limit</td><td>Gauge</td><td>The number of throttled connections due to per-connection limit.</td></tr><tr><td>pulsar_broker_topics_count</td><td>Gauge</td><td>The number of Pulsar topics in this broker.</td></tr><tr><td>pulsar_broker_subscriptions_count</td><td>Gauge</td><td>The number of Pulsar subscriptions in this broker.</td></tr><tr><td>pulsar_broker_producers_count</td><td>Gauge</td><td>The number of active producers connected to this broker.</td></tr><tr><td>pulsar_broker_consumers_count</td><td>Gauge</td><td>The number of active consumers connected to this broker.</td></tr><tr><td>pulsar_broker_rate_in</td><td>Gauge</td><td>The total message rate coming into this broker (message per second).</td></tr><tr><td>pulsar_broker_rate_out</td><td>Gauge</td><td>The total message rate going out from this broker (message per second).</td></tr><tr><td>pulsar_broker_throughput_in</td><td>Gauge</td><td>The total throughput coming into this broker (byte per second).</td></tr><tr><td>pulsar_broker_throughput_out</td><td>Gauge</td><td>The total throughput going out from this broker (byte per second).</td></tr><tr><td>pulsar_broker_storage_size</td><td>Gauge</td><td>The total storage size of all topics in this broker (in bytes).</td></tr><tr><td>pulsar_broker_storage_logical_size</td><td>Gauge</td><td>The storage size of all topics in this broker without replicas (in bytes).</td></tr><tr><td>pulsar_broker_storage_write_rate</td><td>Gauge</td><td>The total message batches (entries) written to the storage for this broker (message batch per second).</td></tr><tr><td>pulsar_broker_storage_read_rate</td><td>Gauge</td><td>The total message batches (entries) read from the storage for this broker (message batch per second).</td></tr><tr><td>pulsar_broker_msg_backlog</td><td>Gauge</td><td>The total number of message backlogs in this broker (entries).</td></tr><tr><td>pulsar_storage_backlog_quota_check_duration_seconds</td><td>Histogram</td><td>The duration of the backlog quota check process (in seconds)</td></tr><tr><td>pulsar_broker_storage_backlog_quota_exceeded_evictions_total</td><td>Counter</td><td>The number of times a backlog was evicted since it has exceeded its quota. Includes the label <code>quota_type = (time \| size)</code></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="bookkeeper-client-metrics">BookKeeper client metrics<a href="#bookkeeper-client-metrics" class="hash-link" aria-label="Direct link to BookKeeper client metrics" title="Direct link to BookKeeper client metrics"></a></h3><p>The BookKeeper client metrics is disabled by default. Set <code>bookkeeperClientExposeStatsToPrometheus=true</code> in <code>broker.conf</code> to expose the BookKeeper client metrics. Suppose you want to expose PerChannel BookKeeper client metrics, which allows you to get the metrics for each bookie that the BookKeeper client connected. You can set <code>bookkeeperClientLimitStatsLogging=true</code> in <code>broker.conf</code>. Note that enabling the PerChannel BookKeeper client metrics might introduce performance issues in high-load situations.</p><p>All the BookKeeper client metrics are labeled with the following label:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you configured in <code>broker.conf</code>.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_managedLedger_client_bookkeeper_client_BOOKIE_QUARANTINE</td><td>Counter</td><td>The number of bookie clients to be quarantined.</td></tr><tr><td>pulsar_managedLedger_client_BookKeeperClientWorker_task_execution</td><td>Summary</td><td>The task execution latency calculated in milliseconds</td></tr><tr><td>pulsar_managedLedger_client_BookKeeperClientWorker_task_queued</td><td>Summary</td><td>The task queued latency calculated in milliseconds</td></tr><tr><td>pulsar_managedLedger_client_bookkeeper_client_ADD_ENTRY</td><td>Summary</td><td>Add entry latency calculated in milliseconds</td></tr><tr><td>pulsar_managedLedger_client_bookkeeper_client_READ_ENTRY</td><td>Summary</td><td>Read entry latency calculated in milliseconds</td></tr><tr><td>pulsar_managedLedger_client_bookkeeper_client_READ_LAC</td><td>Summary</td><td>Read Last Add Confirmed request latency calculated in milliseconds</td></tr><tr><td>pulsar_managedLedger_client_bookkeeper_client_WRITE_LAC</td><td>Summary</td><td>Write Last Add Confirmed request latency calculated in milliseconds</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="namespace-metrics">Namespace metrics<a href="#namespace-metrics" class="hash-link" aria-label="Direct link to Namespace metrics" title="Direct link to Namespace metrics"></a></h3><blockquote><p>Namespace metrics are only exposed when <code>exposeTopicLevelMetricsInPrometheus</code> is set to <code>false</code>.</p></blockquote><p>All the namespace metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you configured in <code>broker.conf</code>.</li><li><em>namespace</em>: <code>namespace=${pulsar_namespace}</code>. <code>${pulsar_namespace}</code> is the namespace name.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_topics_count</td><td>Gauge</td><td>The number of Pulsar topics of the namespace owned by this broker.</td></tr><tr><td>pulsar_subscriptions_count</td><td>Gauge</td><td>The number of Pulsar subscriptions of the namespace served by this broker.</td></tr><tr><td>pulsar_producers_count</td><td>Gauge</td><td>The number of active producers of the namespace connected to this broker.</td></tr><tr><td>pulsar_consumers_count</td><td>Gauge</td><td>The number of active consumers of the namespace connected to this broker.</td></tr><tr><td>pulsar_rate_in</td><td>Gauge</td><td>The total message rate of the namespace coming into this broker (message per second).</td></tr><tr><td>pulsar_rate_out</td><td>Gauge</td><td>The total message rate of the namespace going out from this broker (message per second).</td></tr><tr><td>pulsar_throughput_in</td><td>Gauge</td><td>The total throughput of the namespace coming into this broker (byte per second).</td></tr><tr><td>pulsar_throughput_out</td><td>Gauge</td><td>The total throughput of the namespace going out from this broker (byte per second).</td></tr><tr><td>pulsar_consumer_msg_ack_rate</td><td>Gauge</td><td>The total message acknowledgment rate of the namespace owned by this broker (message per second).</td></tr><tr><td>pulsar_storage_size</td><td>Gauge</td><td>The total storage size of the topics in this namespace owned by this broker (bytes).</td></tr><tr><td>pulsar_storage_logical_size</td><td>Gauge</td><td>The storage size of topics in the namespace owned by the broker without replicas (in bytes).</td></tr><tr><td>pulsar_storage_backlog_size</td><td>Gauge</td><td>The total backlog size of the topics of this namespace owned by this broker (in bytes).</td></tr><tr><td>pulsar_storage_backlog_quota_exceeded_evictions_total</td><td>Counter</td><td>The number of times a backlog was evicted since it has exceeded its quota (When <a href="/docs/next/cookbooks-retention-expiry/#backlog-quotas">backlog quota&#x27;s retention policy</a> was set to <code>consumer_backlog_eviction</code>). Also includes label <code>quota_type = (time \| size)</code></td></tr><tr><td>pulsar_storage_offloaded_size</td><td>Gauge</td><td>The total amount of the data in this namespace offloaded to the tiered storage (bytes).</td></tr><tr><td>pulsar_storage_write_rate</td><td>Gauge</td><td>The total message batches (entries) written to the storage for this namespace (message batch per second).</td></tr><tr><td>pulsar_storage_read_rate</td><td>Gauge</td><td>The total message batches (entries) read from the storage for this namespace (message batch per second).</td></tr><tr><td>pulsar_subscription_delayed</td><td>Gauge</td><td>The total message batches (entries) are delayed for dispatching.</td></tr><tr><td>pulsar<em>storage_write_latency_le</em>*</td><td>Histogram</td><td>The entry rate of a namespace that the storage write latency is smaller with a given threshold.<br> Available thresholds: <br><ul><li>pulsar_storage_write_latency_le_0_5: &lt;= 0.5ms </li><li>pulsar_storage_write_latency_le_1: &lt;= 1ms</li><li>pulsar_storage_write_latency_le_5: &lt;= 5ms</li><li>pulsar_storage_write_latency_le_10: &lt;= 10ms</li><li>pulsar_storage_write_latency_le_20: &lt;= 20ms</li><li>pulsar_storage_write_latency_le_50: &lt;= 50ms</li><li>pulsar_storage_write_latency_le_100: &lt;= 100ms</li><li>pulsar_storage_write_latency_le_200: &lt;= 200ms</li><li>pulsar_storage_write_latency_le_1000: &lt;= 1s</li><li>pulsar_storage_write_latency_le_overflow: &gt; 1s</li></ul></td></tr><tr><td>pulsar<em>entry_size_le</em>*</td><td>Histogram</td><td>The entry rate of a namespace that the entry size is smaller with a given threshold.<br> Available thresholds: <br><ul><li>pulsar_entry_size_le_128: &lt;= 128 bytes </li><li>pulsar_entry_size_le_512: &lt;= 512 bytes</li><li>pulsar_entry_size_le_1_kb: &lt;= 1 KB</li><li>pulsar_entry_size_le_2_kb: &lt;= 2 KB</li><li>pulsar_entry_size_le_4_kb: &lt;= 4 KB</li><li>pulsar_entry_size_le_16_kb: &lt;= 16 KB</li><li>pulsar_entry_size_le_100_kb: &lt;= 100 KB</li><li>pulsar_entry_size_le_1_mb: &lt;= 1 MB</li><li>pulsar_entry_size_le_overflow: &gt; 1 MB</li></ul></td></tr><tr><td>pulsar_delayed_message_index_size_bytes</td><td>Gauge</td><td>The total memory size allocated by <code>DelayedDeliveryTracker</code> of the namespace owned by this broker (in bytes).</td></tr><tr><td>pulsar_delayed_message_index_bucket_total</td><td>Gauge</td><td>The number of delayed message index buckets (immutable buckets + LastMutableBucket )</td></tr><tr><td>pulsar_delayed_message_index_loaded</td><td>Gauge</td><td>The total number of delayed message indexes for in the memory.</td></tr><tr><td>pulsar_delayed_message_index_bucket_snapshot_size_bytes</td><td>Gauge</td><td>The total size of delayed message index bucket snapshot (in bytes).</td></tr><tr><td>pulsar_delayed_message_index_bucket_op_count</td><td>Counter</td><td>The total number of operation delayed message index bucket snapshots. The <code>state</code> label can be <code>succeed</code>,<code>failed</code>, and<code>all</code> (<code>all</code> means the total number of all states) and the <code>type</code> label can be <code>create</code>,<code>load</code>,<code>delete</code>, and <code>merge</code>.</td></tr><tr><td>pulsar_delayed_message_index_bucket_op_latency_ms</td><td>Histogram</td><td>The latency of delayed message index bucket snapshot operation with a given quantile (threshold). The <code>type</code> label can be <code>create</code>,<code>load</code>,<code>delete</code>, and <code>merge</code><br>The label <code>quantile</code> can be:<ul><li>quantile=&quot;50&quot; is operation latency between (0ms, 50ms]</li><li>quantile=&quot;100&quot; is operation latency between (50ms, 100ms]</li><li>quantile=&quot;500&quot; is operation latency between (100ms, 500ms]</li><li>quantile=&quot;1000&quot; is operation latency between (500ms, 1s]</li><li>quantile=&quot;5000&quot; is operation latency between (1s, 5s]</li><li>quantile=&quot;30000&quot; is operation latency between (5s, 30s]</li><li>quantile=&quot;60000&quot; is operation latency between (30s, 60s]</li><li>quantile=&quot;overflow&quot; is operation latency &gt; 1m</li></ul></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="topic-metrics">Topic metrics<a href="#topic-metrics" class="hash-link" aria-label="Direct link to Topic metrics" title="Direct link to Topic metrics"></a></h3><blockquote><p>Topic metrics are only exposed when <code>exposeTopicLevelMetricsInPrometheus</code> is set to <code>true</code>.</p></blockquote><p>All the topic metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you configured in <code>broker.conf</code>.</li><li><em>namespace</em>: <code>namespace=${pulsar_namespace}</code>. <code>${pulsar_namespace}</code> is the namespace name.</li><li><em>topic</em>: <code>topic=${pulsar_topic}</code>. <code>${pulsar_topic}</code> is the topic name.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_subscriptions_count</td><td>Gauge</td><td>The number of Pulsar subscriptions of the topic served by this broker.</td></tr><tr><td>pulsar_producers_count</td><td>Gauge</td><td>The number of active producers of the topic connected to this broker.</td></tr><tr><td>pulsar_consumers_count</td><td>Gauge</td><td>The number of active consumers of the topic connected to this broker.</td></tr><tr><td>pulsar_rate_in</td><td>Gauge</td><td>The total message rate of the topic coming into this broker (message per second).</td></tr><tr><td>pulsar_rate_out</td><td>Gauge</td><td>The total message rate of the topic going out from this broker (message per second).</td></tr><tr><td>pulsar_publish_rate_limit_times</td><td>Gauge</td><td>The number of times the publish rate limit is triggered.</td></tr><tr><td>pulsar_throughput_in</td><td>Gauge</td><td>The total throughput of the topic coming into this broker (byte per second).</td></tr><tr><td>pulsar_throughput_out</td><td>Gauge</td><td>The total throughput of the topic going out from this broker (byte per second).</td></tr><tr><td>pulsar_consumer_msg_ack_rate</td><td>Gauge</td><td>The total message acknowledgment rate of the topic connected to this broker (message per second).</td></tr><tr><td>pulsar_storage_size</td><td>Gauge</td><td>The total storage size of the topics in this topic owned by this broker (bytes).</td></tr><tr><td>pulsar_storage_logical_size</td><td>Gauge</td><td>The storage size of topics in the namespace owned by the broker without replicas (in bytes).</td></tr><tr><td>pulsar_storage_backlog_size</td><td>Gauge</td><td>The total backlog size of the topics of this topic owned by this broker (in bytes).</td></tr><tr><td>pulsar_storage_offloaded_size</td><td>Gauge</td><td>The total amount of the data in this topic offloaded to the tiered storage (bytes).</td></tr><tr><td>pulsar_storage_backlog_quota_limit</td><td>Gauge</td><td>The total amount of the data in this topic that limit the backlog quota (bytes).</td></tr><tr><td>pulsar_storage_backlog_age_seconds</td><td>Gauge</td><td>The age of the oldest unacknowledged message (backlog).</td></tr><tr><td>pulsar_storage_backlog_quota_exceeded_evictions_total</td><td>Counter</td><td>The number of times a backlog was evicted since it has exceeded its quota. Includes label <code>quota_type = (time \| size)</code></td></tr><tr><td>pulsar_storage_write_rate</td><td>Gauge</td><td>The total message batches (entries) written to the storage for this topic (message batch per second).</td></tr><tr><td>pulsar_storage_read_rate</td><td>Gauge</td><td>The total message batches (entries) read from the storage for this topic (message batch per second).</td></tr><tr><td>pulsar_subscription_delayed</td><td>Gauge</td><td>The total message batches (entries) are delayed for dispatching.</td></tr><tr><td>pulsar<em>storage_write_latency_le</em>*</td><td>Histogram</td><td>The entry rate of a topic that the storage write latency is smaller with a given threshold.<br> Available thresholds: <br><ul><li>pulsar_storage_write_latency_le_0_5: &lt;= 0.5ms </li><li>pulsar_storage_write_latency_le_1: &lt;= 1ms</li><li>pulsar_storage_write_latency_le_5: &lt;= 5ms</li><li>pulsar_storage_write_latency_le_10: &lt;= 10ms</li><li>pulsar_storage_write_latency_le_20: &lt;= 20ms</li><li>pulsar_storage_write_latency_le_50: &lt;= 50ms</li><li>pulsar_storage_write_latency_le_100: &lt;= 100ms</li><li>pulsar_storage_write_latency_le_200: &lt;= 200ms</li><li>pulsar_storage_write_latency_le_1000: &lt;= 1s</li><li>pulsar_storage_write_latency_le_overflow: &gt; 1s</li></ul></td></tr><tr><td>pulsar<em>entry_size_le</em>*</td><td>Histogram</td><td>The entry rate of a topic that the entry size is smaller with a given threshold.<br> Available thresholds: <br><ul><li>pulsar_entry_size_le_128: &lt;= 128 bytes </li><li>pulsar_entry_size_le_512: &lt;= 512 bytes</li><li>pulsar_entry_size_le_1_kb: &lt;= 1 KB</li><li>pulsar_entry_size_le_2_kb: &lt;= 2 KB</li><li>pulsar_entry_size_le_4_kb: &lt;= 4 KB</li><li>pulsar_entry_size_le_16_kb: &lt;= 16 KB</li><li>pulsar_entry_size_le_100_kb: &lt;= 100 KB</li><li>pulsar_entry_size_le_1_mb: &lt;= 1 MB</li><li>pulsar_entry_size_le_overflow: &gt; 1 MB</li></ul></td></tr><tr><td>pulsar_in_bytes_total</td><td>Counter</td><td>The total number of messages in bytes received for this topic.</td></tr><tr><td>pulsar_in_messages_total</td><td>Counter</td><td>The total number of messages received for this topic.</td></tr><tr><td>pulsar_out_bytes_total</td><td>Counter</td><td>The total number of messages in bytes read from this topic.</td></tr><tr><td>pulsar_out_messages_total</td><td>Counter</td><td>The total number of messages read from this topic.</td></tr><tr><td>pulsar_compaction_removed_event_count</td><td>Gauge</td><td>The total number of removed events of the compaction.</td></tr><tr><td>pulsar_compaction_succeed_count</td><td>Gauge</td><td>The total number of successes of the compaction.</td></tr><tr><td>pulsar_compaction_failed_count</td><td>Gauge</td><td>The total number of failures of the compaction.</td></tr><tr><td>pulsar_compaction_duration_time_in_mills</td><td>Gauge</td><td>The duration time of the compaction.</td></tr><tr><td>pulsar_compaction_read_throughput</td><td>Gauge</td><td>The read throughput of the compaction.</td></tr><tr><td>pulsar_compaction_write_throughput</td><td>Gauge</td><td>The write throughput of the compaction.</td></tr><tr><td>pulsar<em>compaction_latency_le</em>*</td><td>Histogram</td><td>The compaction latency with given quantile. <br> Available thresholds: <br><ul><li>pulsar_compaction_latency_le_0_5: &lt;= 0.5ms </li><li>pulsar_compaction_latency_le_1: &lt;= 1ms</li><li>pulsar_compaction_latency_le_5: &lt;= 5ms</li><li>pulsar_compaction_latency_le_10: &lt;= 10ms</li><li>pulsar_compaction_latency_le_20: &lt;= 20ms</li><li>pulsar_compaction_latency_le_50: &lt;= 50ms</li><li>pulsar_compaction_latency_le_100: &lt;= 100ms</li><li>pulsar_compaction_latency_le_200: &lt;= 200ms</li><li>pulsar_compaction_latency_le_1000: &lt;= 1s</li><li>pulsar_compaction_latency_le_overflow: &gt; 1s</li></ul></td></tr><tr><td>pulsar_compaction_compacted_entries_count</td><td>Gauge</td><td>The total number of the compacted entries.</td></tr><tr><td>pulsar_compaction_compacted_entries_size</td><td>Gauge</td><td>The total size of the compacted entries.</td></tr><tr><td>pulsar_txn_tb_active_total</td><td>Gauge</td><td>The number of active transactions on this topic.</td></tr><tr><td>pulsar_txn_tb_aborted_total</td><td>Counter</td><td>The number of aborted transactions on the topic.</td></tr><tr><td>pulsar_txn_tb_committed_total</td><td>Counter</td><td>The number of committed transactions on the topic.</td></tr><tr><td>pulsar_delayed_message_index_size_bytes</td><td>Gauge</td><td>The total memory size allocated by <code>DelayedDeliveryTracker</code> of the topic owned by this broker (in bytes).</td></tr><tr><td>pulsar_delayed_message_index_bucket_total</td><td>Gauge</td><td>The number of delayed message index buckets (immutable buckets + LastMutableBucket )</td></tr><tr><td>pulsar_delayed_message_index_loaded</td><td>Gauge</td><td>The total number of delayed message indexes for in the memory.</td></tr><tr><td>pulsar_delayed_message_index_bucket_snapshot_size_bytes</td><td>Gauge</td><td>The total size of delayed message index bucket snapshot (in bytes).</td></tr><tr><td>pulsar_delayed_message_index_bucket_op_count</td><td>Counter</td><td>The total number of operation delayed message index bucket snapshots. The <code>state</code> label can be <code>succeed</code>,<code>failed</code>, and<code>all</code> (<code>all</code> means the total number of all states) and the <code>type</code> label can be <code>create</code>,<code>load</code>,<code>delete</code>, and <code>merge</code>.</td></tr><tr><td>pulsar_delayed_message_index_bucket_op_latency_ms</td><td>Histogram</td><td>The latency of delayed message index bucket snapshot operation with a given quantile (threshold). The label<code>type</code> label can be <code>create</code>,<code>load</code>,<code>delete</code>, and <code>merge</code><br>The label <code>quantile</code> can be:<ul><li>quantile=&quot;50&quot; is operation latency between (0ms, 50ms]</li><li>quantile=&quot;100&quot; is operation latency between (50ms, 100ms]</li><li>quantile=&quot;500&quot; is operation latency between (100ms, 500ms]</li><li>quantile=&quot;1000&quot; is operation latency between (500ms, 1s]</li><li>quantile=&quot;5000&quot; is operation latency between (1s, 5s]</li><li>quantile=&quot;30000&quot; is operation latency between (5s, 30s]</li><li>quantile=&quot;60000&quot; is operation latency between (30s, 60s]</li><li>quantile=&quot;overflow&quot; is operation latency &gt; 1m</li></ul></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="replication-metrics-1">Replication metrics<a href="#replication-metrics-1" class="hash-link" aria-label="Direct link to Replication metrics" title="Direct link to Replication metrics"></a></h3><p>If a namespace is configured to be replicated among multiple Pulsar clusters, the corresponding replication metrics is also exposed when <code>replicationMetricsEnabled</code> is enabled.</p><p>All the replication metrics are also labelled with <code>remoteCluster=${pulsar_remote_cluster}</code>.</p><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_replication_rate_in</td><td>Gauge</td><td>The total message rate of the namespace replicating from remote cluster (messages/second).</td></tr><tr><td>pulsar_replication_rate_out</td><td>Gauge</td><td>The total message rate of the namespace replicating to remote cluster (messages/second).</td></tr><tr><td>pulsar_replication_throughput_in</td><td>Gauge</td><td>The total throughput of the namespace replicating from remote cluster (bytes/second).</td></tr><tr><td>pulsar_replication_throughput_out</td><td>Gauge</td><td>The total throughput of the namespace replicating to remote cluster (bytes/second).</td></tr><tr><td>pulsar_replication_backlog</td><td>Gauge</td><td>The total backlog of the namespace replicating to remote cluster (messages).</td></tr><tr><td>pulsar_replication_rate_expired</td><td>Gauge</td><td>Total rate of messages expired (messages/second).</td></tr><tr><td>pulsar_replication_connected_count</td><td>Gauge</td><td>The count of replication-subscriber up and running to replicate to remote cluster.</td></tr><tr><td>pulsar_replication_delay_in_seconds</td><td>Gauge</td><td>Time in seconds from the time a message was produced to the time when it is about to be replicated.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="topic-lookup-metrics">Topic lookup metrics<a href="#topic-lookup-metrics" class="hash-link" aria-label="Direct link to Topic lookup metrics" title="Direct link to Topic lookup metrics"></a></h3><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_broker_load_manager_bundle_assignment</td><td>Gauge</td><td>The summary of latency of bundles ownership operations.</td></tr><tr><td>pulsar_broker_lookup</td><td>Gauge</td><td>The latency of all lookup operations.</td></tr><tr><td>pulsar_broker_lookup_redirects</td><td>Gauge</td><td>The number of lookup redirected requests.</td></tr><tr><td>pulsar_broker_lookup_answers</td><td>Gauge</td><td>The number of lookup responses (i.e. not redirected requests).</td></tr><tr><td>pulsar_broker_lookup_failures</td><td>Gauge</td><td>The number of lookup failures.</td></tr><tr><td>pulsar_broker_lookup_pending_requests</td><td>Gauge</td><td>The number of pending lookups in broker. When it is up to the threshold, new requests are rejected.</td></tr><tr><td>pulsar_broker_topic_load_pending_requests</td><td>Gauge</td><td>The load of pending topic operations.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="managedledger-metrics">ManagedLedger metrics<a href="#managedledger-metrics" class="hash-link" aria-label="Direct link to ManagedLedger metrics" title="Direct link to ManagedLedger metrics"></a></h3><p>All the managedLedger metrics are labeled with the following labels:</p><ul><li>cluster: cluster=${pulsar_cluster}. ${pulsar_cluster} is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li>namespace: namespace=${pulsar_namespace}. ${pulsar_namespace} is the namespace name.</li><li>quantile: quantile=${quantile}. Quantile is only for <code>Histogram</code> type metric, and represents the threshold for given Buckets.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_ml_AddEntryBytesRate</td><td>Gauge</td><td>The B/s rate of messages added</td></tr><tr><td>pulsar_ml_AddEntryWithReplicasBytesRate</td><td>Gauge</td><td>The B/s rate of messages added with replicas</td></tr><tr><td>pulsar_ml_AddEntryErrors</td><td>Gauge</td><td>The number of addEntry requests that failed</td></tr><tr><td>pulsar_ml_AddEntryLatencyBuckets</td><td>Histogram</td><td>The latency of adding a ledger entry with a given quantile (threshold), including time spent waiting in queue on the broker side.<br> Available quantile: <br><ul><li> quantile=&quot;0.0_0.5&quot; is AddEntryLatency between (0.0ms, 0.5ms]</li> <li>quantile=&quot;0.5_1.0&quot; is AddEntryLatency between (0.5ms, 1.0ms]</li><li>quantile=&quot;1.0_5.0&quot; is AddEntryLatency between (1ms, 5ms]</li><li>quantile=&quot;5.0_10.0&quot; is AddEntryLatency between (5ms, 10ms]</li><li>quantile=&quot;10.0_20.0&quot; is AddEntryLatency between (10ms, 20ms]</li><li>quantile=&quot;20.0_50.0&quot; is AddEntryLatency between (20ms, 50ms]</li><li>quantile=&quot;50.0_100.0&quot; is AddEntryLatency between (50ms, 100ms]</li><li>quantile=&quot;100.0_200.0&quot; is AddEntryLatency between (100ms, 200ms]</li><li>quantile=&quot;200.0_1000.0&quot; is AddEntryLatency between (200ms, 1s]</li></ul></td></tr><tr><td>pulsar_ml_AddEntryLatencyBuckets_OVERFLOW</td><td>Gauge</td><td>The number of times the AddEntryLatency is longer than 1 second</td></tr><tr><td>pulsar_ml_AddEntryMessagesRate</td><td>Gauge</td><td>The msg/s rate of messages added</td></tr><tr><td>pulsar_ml_AddEntrySucceed</td><td>Gauge</td><td>The number of addEntry requests that succeeded</td></tr><tr><td>pulsar_ml_EntrySizeBuckets</td><td>Histogram</td><td>The added entry size of a ledger with a given quantile.<br> Available quantile: <br><ul><li>quantile=&quot;0.0_128.0&quot; is EntrySize between (0byte, 128byte]</li><li>quantile=&quot;128.0_512.0&quot; is EntrySize between (128byte, 512byte]</li><li>quantile=&quot;512.0_1024.0&quot; is EntrySize between (512byte, 1KB]</li><li>quantile=&quot;1024.0_2048.0&quot; is EntrySize between (1KB, 2KB]</li><li>quantile=&quot;2048.0_4096.0&quot; is EntrySize between (2KB, 4KB]</li><li>quantile=&quot;4096.0_16384.0&quot; is EntrySize between (4KB, 16KB]</li><li>quantile=&quot;16384.0_102400.0&quot; is EntrySize between (16KB, 100KB]</li><li>quantile=&quot;102400.0_1232896.0&quot; is EntrySize between (100KB, 1MB]</li></ul></td></tr><tr><td>pulsar_ml_EntrySizeBuckets_OVERFLOW</td><td>Gauge</td><td>The number of times the EntrySize is larger than 1MB</td></tr><tr><td>pulsar_ml_LedgerSwitchLatencyBuckets</td><td>Histogram</td><td>The ledger switch latency with a given quantile. <br> Available quantile: <br><ul><li>quantile=&quot;0.0_0.5&quot; is EntrySize between (0ms, 0.5ms]</li><li>quantile=&quot;0.5_1.0&quot; is EntrySize between (0.5ms, 1ms]</li><li>quantile=&quot;1.0_5.0&quot; is EntrySize between (1ms, 5ms]</li><li>quantile=&quot;5.0_10.0&quot; is EntrySize between (5ms, 10ms]</li><li>quantile=&quot;10.0_20.0&quot; is EntrySize between (10ms, 20ms]</li><li>quantile=&quot;20.0_50.0&quot; is EntrySize between (20ms, 50ms]</li><li>quantile=&quot;50.0_100.0&quot; is EntrySize between (50ms, 100ms]</li><li>quantile=&quot;100.0_200.0&quot; is EntrySize between (100ms, 200ms]</li><li>quantile=&quot;200.0_1000.0&quot; is EntrySize between (200ms, 1000ms]</li></ul></td></tr><tr><td>pulsar_ml_LedgerSwitchLatencyBuckets_OVERFLOW</td><td>Gauge</td><td>The number of times the ledger switch latency is longer than 1 second</td></tr><tr><td>pulsar_ml_LedgerAddEntryLatencyBuckets</td><td>Histogram</td><td>The latency for bookie client to persist a ledger entry from broker to BookKeeper service with a given quantile (threshold). <br> Available quantile: <br><ul><li> quantile=&quot;0.0_0.5&quot; is LedgerAddEntryLatency between (0.0ms, 0.5ms]</li> <li>quantile=&quot;0.5_1.0&quot; is LedgerAddEntryLatency between (0.5ms, 1.0ms]</li><li>quantile=&quot;1.0_5.0&quot; is LedgerAddEntryLatency between (1ms, 5ms]</li><li>quantile=&quot;5.0_10.0&quot; is LedgerAddEntryLatency between (5ms, 10ms]</li><li>quantile=&quot;10.0_20.0&quot; is LedgerAddEntryLatency between (10ms, 20ms]</li><li>quantile=&quot;20.0_50.0&quot; is LedgerAddEntryLatency between (20ms, 50ms]</li><li>quantile=&quot;50.0_100.0&quot; is LedgerAddEntryLatency between (50ms, 100ms]</li><li>quantile=&quot;100.0_200.0&quot; is LedgerAddEntryLatency between (100ms, 200ms]</li><li>quantile=&quot;200.0_1000.0&quot; is LedgerAddEntryLatency between (200ms, 1s]</li></ul></td></tr><tr><td>pulsar_ml_LedgerAddEntryLatencyBuckets_OVERFLOW</td><td>Gauge</td><td>The number of times the LedgerAddEntryLatency is longer than 1 second</td></tr><tr><td>pulsar_ml_MarkDeleteRate</td><td>Gauge</td><td>The rate of mark-delete ops/s</td></tr><tr><td>pulsar_ml_NumberOfMessagesInBacklog</td><td>Gauge</td><td>The number of backlog messages for all the consumers</td></tr><tr><td>pulsar_ml_ReadEntriesBytesRate</td><td>Gauge</td><td>The B/s rate of messages read</td></tr><tr><td>pulsar_ml_ReadEntriesErrors</td><td>Gauge</td><td>The number of readEntries requests that failed</td></tr><tr><td>pulsar_ml_ReadEntriesRate</td><td>Gauge</td><td>The msg/s rate of messages read</td></tr><tr><td>pulsar_ml_ReadEntriesSucceeded</td><td>Gauge</td><td>The number of readEntries requests that succeeded</td></tr><tr><td>pulsar_ml_StoredMessagesSize</td><td>Gauge</td><td>The total size of the messages in active ledgers (accounting for the multiple copies stored)</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="managed-cursor-acknowledgment-state">Managed cursor acknowledgment state<a href="#managed-cursor-acknowledgment-state" class="hash-link" aria-label="Direct link to Managed cursor acknowledgment state" title="Direct link to Managed cursor acknowledgment state"></a></h3><p>The acknowledgment state is persistent to the ledger first. When the acknowledgment state fails to be persistent to the ledger, they are persistent to ZooKeeper. To track the stats of acknowledgment, you can configure the metrics for the managed cursor.</p><p>All the cursor acknowledgment state metrics are labeled with the following labels:</p><ul><li><p>namespace: <code>namespace=${pulsar_namespace}</code>. <code>${pulsar_namespace}</code> is the namespace name.</p></li><li><p>ledger_name: <code>ledger_name=${pulsar_ledger_name}</code>. <code>${pulsar_ledger_name}</code> is the ledger name.</p></li><li><p>cursor_name: <code>ledger_name=${pulsar_cursor_name}</code>. <code>${pulsar_cursor_name}</code> is the cursor name.</p></li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_ml_cursor_persistLedgerSucceed</td><td>Gauge</td><td>The number of acknowledgment states that is persistent to a ledger.</td></tr><tr><td>pulsar_ml_cursor_persistLedgerErrors</td><td>Gauge</td><td>The number of ledger errors occurred when acknowledgment states fail to be persistent to the ledger.</td></tr><tr><td>pulsar_ml_cursor_persistZookeeperSucceed</td><td>Gauge</td><td>The number of acknowledgment states that is persistent to ZooKeeper.</td></tr><tr><td>pulsar_ml_cursor_persistZookeeperErrors</td><td>Gauge</td><td>The number of ledger errors occurred when acknowledgment states fail to be persistent to ZooKeeper.</td></tr><tr><td>pulsar_ml_cursor_nonContiguousDeletedMessagesRange</td><td>Gauge</td><td>The number of non-contiguous deleted messages ranges.</td></tr><tr><td>pulsar_ml_cursor_writeLedgerSize</td><td>Gauge</td><td>The size of write to ledger.</td></tr><tr><td>pulsar_ml_cursor_writeLedgerLogicalSize</td><td>Gauge</td><td>The size of write to ledger (accounting for without replicas).</td></tr><tr><td>pulsar_ml_cursor_readLedgerSize</td><td>Gauge</td><td>The size of read from ledger.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="subscription-metrics">Subscription metrics<a href="#subscription-metrics" class="hash-link" aria-label="Direct link to Subscription metrics" title="Direct link to Subscription metrics"></a></h3><blockquote><p>Subscription metrics are only exposed when <code>exposeTopicLevelMetricsInPrometheus</code> is set to <code>true</code>.</p></blockquote><p>All the subscription metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li><em>namespace</em>: <code>namespace=${pulsar_namespace}</code>. <code>${pulsar_namespace}</code> is the namespace name.</li><li><em>topic</em>: <code>topic=${pulsar_topic}</code>. <code>${pulsar_topic}</code> is the topic name.</li><li><em>subscription</em>: <code>subscription=${subscription}</code>. <code>${subscription}</code> is the topic subscription name.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_subscription_back_log</td><td>Gauge</td><td>The number of entries (messages/batched-messages) in unacknowledged state for a subscription</td></tr><tr><td>pulsar_subscription_back_log_no_delayed</td><td>Gauge</td><td>The backlog of a subscription that does not contain the delay messages (entries).</td></tr><tr><td>pulsar_subscription_delayed</td><td>Gauge</td><td>The total number of messages are delayed to be dispatched for a subscription (messages).</td></tr><tr><td>pulsar_subscription_msg_rate_redeliver</td><td>Gauge</td><td>The total message rate for message being redelivered (message per second).</td></tr><tr><td>pulsar_subscription_unacked_messages</td><td>Gauge</td><td>The number of entries (messages/batched-messages) dispatched to consumers and are still unacknowledged</td></tr><tr><td>pulsar_subscription_blocked_on_unacked_messages</td><td>Gauge</td><td>Indicate whether a subscription is blocked on unacknowledged messages or not. <br> <ul><li>1 means the subscription is blocked on waiting for unacknowledged messages to be acked.</li><li>0 means the subscription is not blocked on waiting for unacknowledged messages to be acked.</li></ul></td></tr><tr><td>pulsar_subscription_msg_rate_out</td><td>Gauge</td><td>The total message dispatch rate for a subscription (message per second).</td></tr><tr><td>pulsar_subscription_msg_throughput_out</td><td>Gauge</td><td>The total message dispatch throughput for a subscription (byte per second).</td></tr><tr><td>pulsar_subscription_msg_ack_rate</td><td>Gauge</td><td>The total message acknowledgment rate for a subscription (message per second).</td></tr><tr><td>pulsar_subscription_last_expire_timestamp</td><td>Gauge</td><td>The expiration timestamp of the last message on the subscription.</td></tr><tr><td>pulsar_subscription_last_acked_timestamp</td><td>Gauge</td><td>The timestamp of the last acknowledged message on the subscription.</td></tr><tr><td>pulsar_subscription_last_consumed_flow_timestamp</td><td>Gauge</td><td>The timestamp of the last received consume flow command on the subscription.</td></tr><tr><td>pulsar_subscription_last_consumed_timestamp</td><td>Gauge</td><td>The timestamp of the last consumed message on the subscription.</td></tr><tr><td>pulsar_subscription_last_mark_delete_advanced_timestamp</td><td>Gauge</td><td>The advanced timestamp of the last MarkDelete position on the subscription.</td></tr><tr><td>pulsar_subscription_msg_rate_expired</td><td>Gauge</td><td>The total rate of messages expired on this subscription (message per second).</td></tr><tr><td>pulsar_subscription_total_msg_expired</td><td>Gauge</td><td>The total number of messages expired on this subscription.</td></tr><tr><td>pulsar_subscription_msg_drop_rate</td><td>Gauge</td><td>The rate of messages dropped on this subscription (message per second).</td></tr><tr><td>pulsar_subscription_consumers_count</td><td>Gauge</td><td>The number of connected consumers on this subscription.</td></tr><tr><td>pulsar_subscription_filter_processed_msg_count</td><td>Counter</td><td>The number of messages processed by <code>EntryFilter</code>.</td></tr><tr><td>pulsar_subscription_filter_accepted_msg_count</td><td>Counter</td><td>The number of messages accepted by <code>EntryFilter</code>.</td></tr><tr><td>pulsar_subscription_filter_rejected_msg_count</td><td>Counter</td><td>The number of messages rejected by <code>EntryFilter</code>.</td></tr><tr><td>pulsar_subscription_filter_rescheduled_msg_count</td><td>Counter</td><td>The number of messages rescheduled by <code>EntryFilter</code>.</td></tr><tr><td>pulsar_delayed_message_index_size_bytes</td><td>Gauge</td><td>The total memory size allocated by <code>DelayedDeliveryTracker</code> of the subscription owned by this broker (in bytes).</td></tr><tr><td>pulsar_delayed_message_index_bucket_total</td><td>Gauge</td><td>The number of delayed message index buckets (immutable buckets + LastMutableBucket )</td></tr><tr><td>pulsar_delayed_message_index_loaded</td><td>Gauge</td><td>The total number of delayed message indexes for in the memory.</td></tr><tr><td>pulsar_delayed_message_index_bucket_snapshot_size_bytes</td><td>Gauge</td><td>The total size of delayed message index bucket snapshot (in bytes).</td></tr><tr><td>pulsar_delayed_message_index_bucket_op_count</td><td>Counter</td><td>The total number of operation delayed message index bucket snapshots. The <code>state</code> label can be <code>succeed</code>,<code>failed</code>, and<code>all</code> (<code>all</code> means the total number of all states) and the <code>type</code> label can be <code>create</code>,<code>load</code>,<code>delete</code>, and <code>merge</code>.</td></tr><tr><td>pulsar_delayed_message_index_bucket_op_latency_ms</td><td>Histogram</td><td>The latency of delayed message index bucket snapshot operation with a given quantile (threshold). The label<code>type</code> label can be <code>create</code>,<code>load</code>,<code>delete</code>, and <code>merge</code><br>The label <code>quantile</code> can be:<ul><li>quantile=&quot;50&quot; is operation latency between (0ms, 50ms]</li><li>quantile=&quot;100&quot; is operation latency between (50ms, 100ms]</li><li>quantile=&quot;500&quot; is operation latency between (100ms, 500ms]</li><li>quantile=&quot;1000&quot; is operation latency between (500ms, 1s]</li><li>quantile=&quot;5000&quot; is operation latency between (1s, 5s]</li><li>quantile=&quot;30000&quot; is operation latency between (5s, 30s]</li><li>quantile=&quot;60000&quot; is operation latency between (30s, 60s]</li><li>quantile=&quot;overflow&quot; is operation latency &gt; 1m</li></ul></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="consumer-metrics">Consumer metrics<a href="#consumer-metrics" class="hash-link" aria-label="Direct link to Consumer metrics" title="Direct link to Consumer metrics"></a></h3><blockquote><p>Consumer metrics are only exposed when both <code>exposeTopicLevelMetricsInPrometheus</code> and <code>exposeConsumerLevelMetricsInPrometheus</code> are set to <code>true</code>.</p></blockquote><p>All the consumer metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li><em>namespace</em>: <code>namespace=${pulsar_namespace}</code>. <code>${pulsar_namespace}</code> is the namespace name.</li><li><em>topic</em>: <code>topic=${pulsar_topic}</code>. <code>${pulsar_topic}</code> is the topic name.</li><li><em>subscription</em>: <code>subscription=${subscription}</code>. <code>${subscription}</code> is the topic subscription name.</li><li><em>consumer_name</em>: <code>consumer_name=${consumer_name}</code>. <code>${consumer_name}</code> is the topic consumer name.</li><li><em>consumer_id</em>: <code>consumer_id=${consumer_id}</code>. <code>${consumer_id}</code> is the topic consumer id.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_consumer_msg_rate_redeliver</td><td>Gauge</td><td>The total message rate for message being redelivered (message per second).</td></tr><tr><td>pulsar_consumer_unacked_messages</td><td>Gauge</td><td>The total number of unacknowledged messages of a consumer (messages).</td></tr><tr><td>pulsar_consumer_blocked_on_unacked_messages</td><td>Gauge</td><td>Indicate whether a consumer is blocked on unacknowledged messages or not. <br> <ul><li>1 means the consumer is blocked on waiting for unacknowledged messages to be acked.</li><li>0 means the consumer is not blocked on waiting for unacknowledged messages to be acked.</li></ul></td></tr><tr><td>pulsar_consumer_msg_rate_out</td><td>Gauge</td><td>The total message dispatch rate for a consumer (message per second).</td></tr><tr><td>pulsar_consumer_msg_ack_rate</td><td>Gauge</td><td>The total rate of message ack (message per second).</td></tr><tr><td>pulsar_consumer_msg_throughput_out</td><td>Gauge</td><td>The total message dispatch throughput for a consumer (byte per second).</td></tr><tr><td>pulsar_consumer_available_permits</td><td>Gauge</td><td>The available permits for for a consumer.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="managed-ledger-bookie-client-metrics">Managed ledger bookie client metrics<a href="#managed-ledger-bookie-client-metrics" class="hash-link" aria-label="Direct link to Managed ledger bookie client metrics" title="Direct link to Managed ledger bookie client metrics"></a></h3><p>All the managed ledger bookie client metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar<em>managedLedger_client_bookkeeper_ml_scheduler_completed_tasks</em>*</td><td>Gauge</td><td>The number of tasks the scheduler executor execute completed. <br>The number of metrics determined by the scheduler executor thread number configured by <code>managedLedgerNumSchedulerThreads</code> in <code>broker.conf</code>. <br></td></tr><tr><td>pulsar<em>managedLedger_client_bookkeeper_ml_scheduler_queue</em>*</td><td>Gauge</td><td>The number of tasks queued in the scheduler executor&#x27;s queue. <br>The number of metrics determined by the scheduler executor&#x27;s thread number configured by <code>managedLedgerNumSchedulerThreads</code> in <code>broker.conf</code>. <br></td></tr><tr><td>pulsar<em>managedLedger_client_bookkeeper_ml_scheduler_total_tasks</em>*</td><td>Gauge</td><td>The total number of tasks the scheduler executor received. <br>The number of metrics determined by the scheduler executor&#x27;s thread number configured by <code>managedLedgerNumSchedulerThreads</code> in <code>broker.conf</code>. <br></td></tr><tr><td>pulsar_managedLedger_client_bookkeeper_ml_scheduler_task_execution</td><td>Summary</td><td>The scheduler task execution latency calculated in milliseconds.</td></tr><tr><td>pulsar_managedLedger_client_bookkeeper_ml_scheduler_task_queued</td><td>Summary</td><td>The scheduler task queued latency calculated in milliseconds.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="token-metrics">Token metrics<a href="#token-metrics" class="hash-link" aria-label="Direct link to Token metrics" title="Direct link to Token metrics"></a></h3><p>All the token metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_expired_token_total</td><td>Counter</td><td>The number of expired tokens in Pulsar.</td></tr><tr><td>pulsar_expiring_token_minutes</td><td>Histogram</td><td>The remaining time of expiring tokens in minutes.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="authentication-metrics">Authentication metrics<a href="#authentication-metrics" class="hash-link" aria-label="Direct link to Authentication metrics" title="Direct link to Authentication metrics"></a></h3><p>All the authentication metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li><em>provider_name</em>: <code>provider_name=${provider_name}</code>. <code>${provider_name}</code> is the class name of the authentication provider.</li><li><em>auth_method</em>: <code>auth_method=${auth_method}</code>. <code>${auth_method}</code> is the authentication method of the authentication provider.</li><li><em>reason</em>: <code>reason=${reason}</code>. <code>${reason}</code> is the reason for failing authentication operation. (This label is only for <code>pulsar_authentication_failures_total</code>.)</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_authentication_success_total</td><td>Counter</td><td>The number of successful authentication operations.</td></tr><tr><td>pulsar_authentication_failures_total</td><td>Counter</td><td>The number of failing authentication operations.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="connection-metrics">Connection metrics<a href="#connection-metrics" class="hash-link" aria-label="Direct link to Connection metrics" title="Direct link to Connection metrics"></a></h3><p>All the connection metrics are labelled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li><em>broker</em>: <code>broker=${advertised_address}</code>. <code>${advertised_address}</code> is the advertised address of the broker.</li><li><em>metric</em>: <code>metric=${metric}</code>. <code>${metric}</code> is the connection metric collective name.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_active_connections</td><td>Gauge</td><td>The number of active connections.</td></tr><tr><td>pulsar_connection_created_total_count</td><td>Gauge</td><td>The total number of connections.</td></tr><tr><td>pulsar_connection_create_success_count</td><td>Gauge</td><td>The number of successfully created connections.</td></tr><tr><td>pulsar_connection_create_fail_count</td><td>Gauge</td><td>The number of failed connections.</td></tr><tr><td>pulsar_connection_closed_total_count</td><td>Gauge</td><td>The total number of closed connections.</td></tr><tr><td>pulsar_broker_throttled_connections</td><td>Gauge</td><td>The number of throttled connections.</td></tr><tr><td>pulsar_broker_throttled_connections_global_limit</td><td>Gauge</td><td>The number of throttled connections because of per-connection limit.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="jetty-metrics">Jetty metrics<a href="#jetty-metrics" class="hash-link" aria-label="Direct link to Jetty metrics" title="Direct link to Jetty metrics"></a></h3><blockquote><p>For a functions-worker running separately from brokers, its Jetty metrics are only exposed when <code>includeStandardPrometheusMetrics</code> is set to <code>true</code>.</p></blockquote><p>All the jetty metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>jetty_requests_total</td><td>Counter</td><td>Number of requests.</td></tr><tr><td>jetty_requests_active</td><td>Gauge</td><td>Number of requests currently active.</td></tr><tr><td>jetty_requests_active_max</td><td>Gauge</td><td>Maximum number of requests that have been active at once.</td></tr><tr><td>jetty_request_time_max_seconds</td><td>Gauge</td><td>Maximum time spent handling requests.</td></tr><tr><td>jetty_request_time_seconds_total</td><td>Counter</td><td>Total time spent in all request handling.</td></tr><tr><td>jetty_dispatched_total</td><td>Counter</td><td>Number of dispatches.</td></tr><tr><td>jetty_dispatched_active</td><td>Gauge</td><td>Number of dispatches currently active.</td></tr><tr><td>jetty_dispatched_active_max</td><td>Gauge</td><td>Maximum number of active dispatches being handled.</td></tr><tr><td>jetty_dispatched_time_max</td><td>Gauge</td><td>Maximum time spent in dispatch handling.</td></tr><tr><td>jetty_dispatched_time_seconds_total</td><td>Counter</td><td>Total time spent in dispatch handling.</td></tr><tr><td>jetty_async_requests_total</td><td>Counter</td><td>Total number of async requests.</td></tr><tr><td>jetty_async_requests_waiting</td><td>Gauge</td><td>Currently waiting async requests.</td></tr><tr><td>jetty_async_requests_waiting_max</td><td>Gauge</td><td>Maximum number of waiting async requests.</td></tr><tr><td>jetty_async_dispatches_total</td><td>Counter</td><td>Number of requests that have been asynchronously dispatched.</td></tr><tr><td>jetty_expires_total</td><td>Counter</td><td>Number of async requests that have expired.</td></tr><tr><td>jetty_responses_total</td><td>Counter</td><td>Number of responses, labeled by status code. The <code>code</code> label can be &quot;1xx&quot;, &quot;2xx&quot;, &quot;3xx&quot;, &quot;4xx&quot;, or &quot;5xx&quot;.</td></tr><tr><td>jetty_stats_seconds</td><td>Gauge</td><td>Time in seconds stats have been collected for.</td></tr><tr><td>jetty_responses_bytes_total</td><td>Counter</td><td>Total number of bytes across all responses.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="schema-metrics">Schema metrics<a href="#schema-metrics" class="hash-link" aria-label="Direct link to Schema metrics" title="Direct link to Schema metrics"></a></h3><blockquote><p>For a functions-worker running separately from brokers, its schema metrics are only exposed when <code>includeStandardPrometheusMetrics</code> is set to <code>true</code>.</p></blockquote><p>All the schema metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_schema_del_ops_failed_total</td><td>Counter</td><td>Number of failed operations to delete schemas.</td></tr><tr><td>pulsar_schema_get_ops_failed_total</td><td>Counter</td><td>Number of failed operations to get schemas.</td></tr><tr><td>pulsar_schema_put_ops_failed_total</td><td>Counter</td><td>Number of failed operations to send schemas.</td></tr><tr><td>pulsar_schema_compatible_total</td><td>Counter</td><td>Number of compatible schemas.</td></tr><tr><td>pulsar_schema_incompatible_total</td><td>Counter</td><td>Number of incompatible schemas.</td></tr><tr><td>pulsar_schema_del_ops_latency</td><td>Summary</td><td>Latency of successful operations to delete schemas.</td></tr><tr><td>pulsar_schema_get_ops_latency</td><td>Summary</td><td>Latency of successful operations to get schemas.</td></tr><tr><td>pulsar_schema_put_ops_latency</td><td>Summary</td><td>Latency of successful operations to send schemas.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="offload-metrics">Offload metrics<a href="#offload-metrics" class="hash-link" aria-label="Direct link to Offload metrics" title="Direct link to Offload metrics"></a></h3><p>All the offload metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you configured in <code>broker.conf</code>.</li><li><em>namespace</em>: <code>namespace=${pulsar_namespace}</code>. <code>${pulsar_namespace}</code> is the namespace name.</li><li><em>topic</em>: <code>topic=${pulsar_topic}</code>. <code>${pulsar_topic}</code> is the topic name.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_ledgeroffloader_offload_error</td><td>Counter</td><td>The number of failed operations to offload.</td></tr><tr><td>pulsar_ledgeroffloader_offload_rate</td><td>Gauge</td><td>The rate of offloading(byte per second).</td></tr><tr><td>pulsar_ledgeroffloader_read_offload_error</td><td>Counter</td><td>The number of failed operations to read offload ledgers.</td></tr><tr><td>pulsar_ledgeroffloader_read_offload_rate</td><td>Gauge</td><td>The rate of reading entries from offload ledgers(byte per second).</td></tr><tr><td>pulsar_ledgeroffloader_write_storage_error</td><td>Counter</td><td>The number of failed operations to write to storage.</td></tr><tr><td>pulsar_ledgeroffloader_read_offload_index_latency</td><td>Summary</td><td>The latency of reading index from offload ledgers.</td></tr><tr><td>pulsar_ledgeroffloader_read_offload_data_latency</td><td>Summary</td><td>The latency of reading data from offload ledgers.</td></tr><tr><td>pulsar_ledgeroffloader_read_ledger_latency</td><td>Summary</td><td>The latency of reading entries from BookKeeper.</td></tr><tr><td>pulsar_ledgeroffloader_delete_offload_ops</td><td>Counter</td><td>The total number of successful and failed operations to delete offload ledgers.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="web-service-executor-metrics">Web service executor metrics<a href="#web-service-executor-metrics" class="hash-link" aria-label="Direct link to Web service executor metrics" title="Direct link to Web service executor metrics"></a></h3><blockquote><p>For functions workers running separately from brokers, their Jetty metrics are only exposed when <code>includeStandardPrometheusMetrics</code> is set to <code>true</code>.</p></blockquote><p>All the web service executor metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_web_executor_max_threads</td><td>GAUGE</td><td>The max threads of pulsar-web thread pool</td></tr><tr><td>pulsar_web_executor_min_threads</td><td>GAUGE</td><td>The min threads of pulsar-web thread pool</td></tr><tr><td>pulsar_web_executor_idle_threads</td><td>GAUGE</td><td>The idle threads of pulsar-web thread pool</td></tr><tr><td>pulsar_web_executor_active_threads</td><td>GAUGE</td><td>The number of threads performing tasks of pulsar-web thread pool</td></tr><tr><td>pulsar_web_executor_current_threads</td><td>GAUGE</td><td>The number of threads in the pulsar-web thread pool</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-store-metrics">Metadata store metrics<a href="#metadata-store-metrics" class="hash-link" aria-label="Direct link to Metadata store metrics" title="Direct link to Metadata store metrics"></a></h3><p>All the metadata store metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you configured in <code>broker.conf</code>.</li><li><em>name</em>: <code>name=${metadata-store|configuration-metadata-store|state-metadata-store}</code>. <code>${name}</code> is the metadata store name.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_metadata_store_ops_latency</td><td>Histogram</td><td>The latency of getting/deleting/putting data from/to metadata store.</td></tr><tr><td>pulsar_metadata_store_put_bytes_total</td><td>Counter</td><td>The number of data put to metadata store.</td></tr><tr><td>pulsar_batch_metadata_store_executor_queue_size</td><td>Gauge</td><td>The number of blocking operations in metadata store executor.</td></tr><tr><td>pulsar_batch_metadata_store_queue_wait_time_ms</td><td>Histogram</td><td>The waiting time of batch operations.</td></tr><tr><td>pulsar_batch_metadata_store_batch_execute_time_ms</td><td>Histogram</td><td>The duration of the batch execution in milliseconds.</td></tr><tr><td>pulsar_batch_metadata_store_batch_size</td><td>Histogram</td><td>The number of read/write operations in the batch.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="jvm-metrics">JVM Metrics<a href="#jvm-metrics" class="hash-link" aria-label="Direct link to JVM Metrics" title="Direct link to JVM Metrics"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="process-metrics">Process Metrics<a href="#process-metrics" class="hash-link" aria-label="Direct link to Process Metrics" title="Direct link to Process Metrics"></a></h4><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>process_cpu_seconds_total</td><td>Counter</td><td>Total user and system CPU time spent in seconds.</td></tr><tr><td>process_start_time_seconds</td><td>Gauge</td><td>Start time of the process since unix epoch in seconds.</td></tr><tr><td>process_open_fds</td><td>Gauge</td><td>Number of open file descriptors.</td></tr><tr><td>process_max_fds</td><td>Gauge</td><td>Maximum number of open file descriptors.</td></tr><tr><td>process_virtual_memory_bytes</td><td>Gauge</td><td>Virtual memory size in bytes.</td></tr><tr><td>process_resident_memory_bytes</td><td>Gauge</td><td>Resident memory size in bytes.</td></tr></tbody></table><h4 class="anchor anchorWithStickyNavbar_LWe7" id="memory-metrics">Memory Metrics<a href="#memory-metrics" class="hash-link" aria-label="Direct link to Memory Metrics" title="Direct link to Memory Metrics"></a></h4><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>jvm_memory_objects_pending_finalization</td><td>Gauge</td><td>The number of objects waiting in the finalizer queue.</td></tr><tr><td>jvm_memory_bytes_used</td><td>Gauge</td><td>Used bytes of a given JVM memory area.</td></tr><tr><td>jvm_memory_bytes_committed</td><td>Gauge</td><td>Committed (bytes) of a given JVM memory area.</td></tr><tr><td>jvm_memory_bytes_max</td><td>Gauge</td><td>Max (bytes) of a given JVM memory area.</td></tr><tr><td>jvm_memory_bytes_init</td><td>Gauge</td><td>Initial bytes of a given JVM memory area.</td></tr><tr><td>jvm_memory_pool_bytes_used</td><td>Used bytes of a given JVM memory pool.</td><td></td></tr><tr><td>jvm_memory_pool_bytes_committed</td><td>Gauge</td><td>Committed bytes of a given JVM memory pool.</td></tr><tr><td>jvm_memory_pool_bytes_max</td><td>Gauge</td><td>Max bytes of a given JVM memory pool.</td></tr><tr><td>jvm_memory_pool_bytes_init</td><td>Gauge</td><td>Initial bytes of a given JVM memory pool.</td></tr><tr><td>jvm_memory_pool_collection_used_bytes</td><td>Gauge</td><td>Used bytes after the last collection of a given JVM memory pool.</td></tr><tr><td>jvm_memory_pool_collection_committed_bytes</td><td>Gauge</td><td>Committed after last collection bytes of a given JVM memory pool.</td></tr><tr><td>jvm_memory_pool_collection_max_bytes</td><td>Gauge</td><td>Max bytes after the last collection of a given JVM memory pool.</td></tr><tr><td>jvm_memory_pool_collection_init_bytes</td><td>Gauge</td><td>Initial after last collection bytes of a given JVM memory pool.</td></tr><tr><td>jvm_memory_pool_allocated_bytes_total</td><td>Counter</td><td>Total bytes allocated in a given JVM memory pool. Only updated after GC, not continuously.</td></tr></tbody></table><h4 class="anchor anchorWithStickyNavbar_LWe7" id="buffer-pools-metrics">Buffer Pools Metrics<a href="#buffer-pools-metrics" class="hash-link" aria-label="Direct link to Buffer Pools Metrics" title="Direct link to Buffer Pools Metrics"></a></h4><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>jvm_buffer_pool_used_bytes</td><td>Gauge</td><td>Used bytes of a given JVM buffer pool.</td></tr><tr><td>jvm_buffer_pool_capacity_bytes</td><td>Gauge</td><td>Bytes capacity of a given JVM buffer pool.</td></tr><tr><td>jvm_buffer_pool_used_buffers</td><td>Gauge</td><td>Used buffers of a given JVM buffer pool.</td></tr></tbody></table><h4 class="anchor anchorWithStickyNavbar_LWe7" id="garbage-collectors-metrics">Garbage Collectors Metrics<a href="#garbage-collectors-metrics" class="hash-link" aria-label="Direct link to Garbage Collectors Metrics" title="Direct link to Garbage Collectors Metrics"></a></h4><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>jvm_gc_collection_seconds</td><td>Summary</td><td>Time spent in a given JVM garbage collector in seconds.</td></tr></tbody></table><h4 class="anchor anchorWithStickyNavbar_LWe7" id="threads-metrics">Threads Metrics<a href="#threads-metrics" class="hash-link" aria-label="Direct link to Threads Metrics" title="Direct link to Threads Metrics"></a></h4><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>jvm_threads_current</td><td>Gauge</td><td>Current thread count of a JVM</td></tr><tr><td>jvm_threads_daemon</td><td>Gauge</td><td>Daemon thread count of a JVM</td></tr><tr><td>jvm_threads_peak</td><td>Gauge</td><td>Peak thread count of a JVM</td></tr><tr><td>jvm_threads_started_total</td><td>Counter</td><td>Started thread count of a JVM</td></tr><tr><td>jvm_threads_deadlocked</td><td>Gauge</td><td>Cycles of JVM-threads that are in deadlock waiting to acquire object monitors or ownable synchronizers</td></tr><tr><td>jvm_threads_deadlocked_monitor</td><td>Gauge</td><td>Cycles of JVM-threads that are in deadlock waiting to acquire object monitors</td></tr><tr><td>jvm_threads_state</td><td>Gauge</td><td>Current count of threads by state</td></tr></tbody></table><h4 class="anchor anchorWithStickyNavbar_LWe7" id="classloaders-metrics">Classloaders Metrics<a href="#classloaders-metrics" class="hash-link" aria-label="Direct link to Classloaders Metrics" title="Direct link to Classloaders Metrics"></a></h4><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>jvm_classes_currently_loaded</td><td>Gauge</td><td>The number of classes that are currently loaded in the JVM</td></tr><tr><td>jvm_classes_loaded_total</td><td>Counter</td><td>The total number of classes that have been loaded since the JVM has started execution</td></tr><tr><td>jvm_classes_unloaded_total</td><td>Counter</td><td>The total number of classes that have been unloaded since the JVM has started execution</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="load-balancing">Load balancing<a href="#load-balancing" class="hash-link" aria-label="Direct link to Load balancing" title="Direct link to Load balancing"></a></h2><p>This section shows all metrics related to <a href="/docs/next/concepts-broker-load-balancing-overview/">broker load balancing</a>.</p><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><ul><li><p>Load balancing metrics are <strong>not exposed by default</strong>. If you want to access load balancing metrics, you need to expose them by setting the following configurations in the <code>broker.conf</code> or <code>standalone.conf</code> file and ensure that your cluster has an active producer or consumer.</p><div class="language-conf codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-conf codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">loadManagerClassName=org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">loadBalancerEnabled=true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">exposeBundlesMetricsInPrometheus=true // Add this configuration to standalone.conf</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Metrics with an asterisk (*) are only available in the <strong>extensible</strong> load balancer.</p></li></ul></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="loadbalancing-metrics">LoadBalancing metrics<a href="#loadbalancing-metrics" class="hash-link" aria-label="Direct link to LoadBalancing metrics" title="Direct link to LoadBalancing metrics"></a></h3><p>All the loadbalancing metrics are labeled with the following labels:</p><ul><li>cluster: cluster=${pulsar_cluster}. ${pulsar_cluster} is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li>broker: broker=${broker}. ${broker} is the IP address of the broker</li><li>metric: metric=&quot;loadBalancing&quot;.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_lb_bandwidth_in_usage</td><td>Gauge</td><td>The broker inbound bandwidth usage (in percent).</td></tr><tr><td>pulsar_lb_bandwidth_out_usage</td><td>Gauge</td><td>The broker outbound bandwidth usage (in percent).</td></tr><tr><td>pulsar_lb_cpu_usage</td><td>Gauge</td><td>The broker cpu usage (in percent).</td></tr><tr><td>pulsar_lb_directMemory_usage</td><td>Gauge</td><td>The broker process direct memory usage (in percent).</td></tr><tr><td>pulsar_lb_memory_usage</td><td>Gauge</td><td>The broker process memory usage (in percent).</td></tr><tr><td>pulsar_lb_resource_usage {feature=max}*</td><td>Gauge</td><td>The max resource usage of the bandwidth, CPU, memory, and direct_memory.</td></tr><tr><td>pulsar_lb_resource_usage {feature=max_ema}*</td><td>Gauge</td><td>The broker load score (WeightedMaxEMA).</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="bundleunloading-metrics">BundleUnloading metrics<a href="#bundleunloading-metrics" class="hash-link" aria-label="Direct link to BundleUnloading metrics" title="Direct link to BundleUnloading metrics"></a></h3><p>All the bundleUnloading metrics are labeled with the following labels:</p><ul><li>cluster: cluster=${pulsar_cluster}. ${pulsar_cluster} is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li>bundle: bundle=${bundle}. ${bundle} is the bundle range on this broker.</li><li>metric: metric=&quot;bundleUnloading&quot;.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_lb_unload_broker_total</td><td>Counter</td><td>Unload broker count in this bundle unloading</td></tr><tr><td>pulsar_lb_unload_bundle_total</td><td>Counter</td><td>Bundle unload count in this bundle unloading. If the value of <code>pulsar_lb_unload_bundle_total</code> is greater than zero, it means that the bundle has been unloaded.</td></tr><tr><td>pulsar_lb_unload_broker_breakdown_total{result, reason}*</td><td>Counter</td><td>Unload broker breakdown count grouped by result and reason labels.</td></tr><tr><td>pulsar_lb_resource_usage_stats{feature=max_ema, stat=avg}*</td><td>Gauge</td><td>The average of brokers&#x27; load scores.</td></tr><tr><td>pulsar_lb_resource_usage_stats{feature=max_ema, stat=std}*</td><td>Gauge</td><td>The standard deviation of brokers&#x27; load scores.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="bundlesplit-metrics">BundleSplit metrics<a href="#bundlesplit-metrics" class="hash-link" aria-label="Direct link to BundleSplit metrics" title="Direct link to BundleSplit metrics"></a></h3><p>All the bundleUnloading metrics are labeled with the following labels:</p><ul><li>cluster: cluster=${pulsar_cluster}. ${pulsar_cluster} is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li>bundle: bundle=${bundle}. ${bundle} is the bundle range on this broker.</li><li>metric: metric=&quot;bundlesSplit&quot;.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_lb_bundles_split_total</td><td>Counter</td><td>The total count of bundle split in this leader broker</td></tr><tr><td>pulsar_lb_bundles_split_breakdown_total{result, reason}*</td><td>Counter</td><td>Bundle split breakdown count grouped by the result and reason labels.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="bundle-metrics">Bundle metrics<a href="#bundle-metrics" class="hash-link" aria-label="Direct link to Bundle metrics" title="Direct link to Bundle metrics"></a></h3><p>All the bundle metrics are labeled with the following labels:</p><ul><li>cluster: cluster=${pulsar_cluster}. ${pulsar_cluster} is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li>broker: broker=${broker}. ${broker} is the IP address of the broker</li><li>bundle: bundle=${bundle}. ${bundle} is the bundle range on this broker</li><li>metric: metric=&quot;bundle&quot;.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_bundle_msg_rate_in</td><td>Gauge</td><td>The total message rate coming into the topics in this bundle (message per second).</td></tr><tr><td>pulsar_bundle_msg_rate_out</td><td>Gauge</td><td>The total message rate going out from the topics in this bundle (message per second).</td></tr><tr><td>pulsar_bundle_topics_count</td><td>Gauge</td><td>The topic count in this bundle.</td></tr><tr><td>pulsar_bundle_consumer_count</td><td>Gauge</td><td>The consumer count of the topics in this bundle.</td></tr><tr><td>pulsar_bundle_producer_count</td><td>Gauge</td><td>The producer count of the topics in this bundle.</td></tr><tr><td>pulsar_bundle_msg_throughput_in</td><td>Gauge</td><td>The total throughput coming into the topics in this bundle (byte per second).</td></tr><tr><td>pulsar_bundle_msg_throughput_out</td><td>Gauge</td><td>The total throughput going out from the topics in this bundle (byte per second).</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="bundle-assign-metrics">Bundle assign metrics<a href="#bundle-assign-metrics" class="hash-link" aria-label="Direct link to Bundle assign metrics" title="Direct link to Bundle assign metrics"></a></h3><p>All the bundle assign metrics are labeled with the following labels:</p><ul><li>cluster: cluster=${pulsar_cluster}. ${pulsar_cluster} is the cluster name you have configured in the <code>broker.conf</code> file.</li><li>broker: broker=${broker}. ${broker} is the IP address of the broker.</li><li>bundle: bundle=${bundle}. ${bundle} is the bundle range on this broker.</li><li>metric: metric=&quot;assign&quot;.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_lb_assign_broker_breakdown_total{result, reason}*</td><td>Counter</td><td>Assign broker breakdown count grouped by result and reason labels.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="service-unit-state-channel-metrics">Service unit state channel metrics<a href="#service-unit-state-channel-metrics" class="hash-link" aria-label="Direct link to Service unit state channel metrics" title="Direct link to Service unit state channel metrics"></a></h3><p>All the service unit state channel metrics are labeled with the following labels:</p><ul><li>cluster: cluster=${pulsar_cluster}. ${pulsar_cluster} is the cluster name you have configured in the <code>broker.conf</code> file.</li><li>metric: metric=&quot;sunitStateChn&quot;.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_sunit_state_chn_owner_lookup_total{result, state}*</td><td>Counter</td><td>The owner broker lookup counts grouped by the result and state labels.</td></tr><tr><td>pulsar_sunit_state_chn_event_publish_ops_total{result, event}*</td><td>Counter</td><td>The published message count of service unit (e.g., bundle) state changes grouped by the result and event labels</td></tr><tr><td>pulsar_sunit_state_chn_subscribe_ops_total{result, event}*</td><td>Counter</td><td>The subscribed message count of service unit (e.g., bundle) state changes grouped by the result and event labels.</td></tr><tr><td>pulsar_sunit_state_chn_inactive_broker_cleanup_ops_total{result}*</td><td>Counter</td><td>The counts of inactive broker cleanup operations grouped by the result label.</td></tr><tr><td>pulsar_sunit_state_chn_orphan_su_cleanup_ops_total*</td><td>Counter</td><td>The total count of orphan service unit (e.g., bundle) cleanup operations.</td></tr><tr><td>pulsar_sunit_state_chn_owned_su_total*</td><td>Gauge</td><td>The number of owned bundles.</td></tr><tr><td>pulsar_sunit_state_chn_su_tombstone_cleanup_ops_total*</td><td>Counter</td><td>The total count of deleted service units (e.g., bundles) tombstone operations.</td></tr><tr><td>pulsar_sunit_state_chn_cleanup_ops_total{result=Failure}*</td><td>Counter</td><td>The total count of cleanup operation failures.</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="pulsar-functions">Pulsar Functions<a href="#pulsar-functions" class="hash-link" aria-label="Direct link to Pulsar Functions" title="Direct link to Pulsar Functions"></a></h2><p>All the Pulsar Functions metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li><em>namespace</em>: <code>namespace=${pulsar_namespace}</code>. <code>${pulsar_namespace}</code> is the namespace name.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_function_processed_successfully_total</td><td>Counter</td><td>The total number of messages processed successfully.</td></tr><tr><td>pulsar_function_processed_successfully_1min_total</td><td>Counter</td><td>The total number of messages processed successfully in the last 1 minute.</td></tr><tr><td>pulsar_function_system_exceptions_total</td><td>Counter</td><td>The total number of system exceptions.</td></tr><tr><td>pulsar_function_system_exceptions_1min_total</td><td>Counter</td><td>The total number of system exceptions in the last 1 minute.</td></tr><tr><td>pulsar_function_user_exceptions_total</td><td>Counter</td><td>The total number of user exceptions.</td></tr><tr><td>pulsar_function_user_exceptions_1min_total</td><td>Counter</td><td>The total number of user exceptions in the last 1 minute.</td></tr><tr><td>pulsar_function_process_latency_ms</td><td>Summary</td><td>The process latency in milliseconds.</td></tr><tr><td>pulsar_function_process_latency_ms_1min</td><td>Summary</td><td>The process latency in milliseconds in the last 1 minute.</td></tr><tr><td>pulsar_function_last_invocation</td><td>Gauge</td><td>The timestamp of the last invocation of the function.</td></tr><tr><td>pulsar_function_received_total</td><td>Counter</td><td>The total number of messages received from source.</td></tr><tr><td>pulsar_function_received_1min_total</td><td>Counter</td><td>The total number of messages received from source in the last 1 minute.</td></tr><tr><td>pulsar<em>function_user_metric</em></td><td>Summary</td><td>The user-defined metrics.</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="connectors">Connectors<a href="#connectors" class="hash-link" aria-label="Direct link to Connectors" title="Direct link to Connectors"></a></h2><p>All the Pulsar connector metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li><em>namespace</em>: <code>namespace=${pulsar_namespace}</code>. <code>${pulsar_namespace}</code> is the namespace name.</li></ul><p>Connector metrics contain <strong>source</strong> metrics and <strong>sink</strong> metrics.</p><ul><li><p><strong>Source</strong> metrics</p><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_source_written_total</td><td>Counter</td><td>The total number of records written to a Pulsar topic.</td></tr><tr><td>pulsar_source_written_1min_total</td><td>Counter</td><td>The total number of records written to a Pulsar topic in the last 1 minute.</td></tr><tr><td>pulsar_source_received_total</td><td>Counter</td><td>The total number of records received from source.</td></tr><tr><td>pulsar_source_received_1min_total</td><td>Counter</td><td>The total number of records received from source in the last 1 minute.</td></tr><tr><td>pulsar_source_last_invocation</td><td>Gauge</td><td>The timestamp of the last invocation of the source.</td></tr><tr><td>pulsar_source_source_exception</td><td>Gauge</td><td>The exception from a source.</td></tr><tr><td>pulsar_source_source_exceptions_total</td><td>Counter</td><td>The total number of source exceptions.</td></tr><tr><td>pulsar_source_source_exceptions_1min_total</td><td>Counter</td><td>The total number of source exceptions in the last 1 minute.</td></tr><tr><td>pulsar_source_system_exception</td><td>Gauge</td><td>The exception from system code.</td></tr><tr><td>pulsar_source_system_exceptions_total</td><td>Counter</td><td>The total number of system exceptions.</td></tr><tr><td>pulsar_source_system_exceptions_1min_total</td><td>Counter</td><td>The total number of system exceptions in the last 1 minute.</td></tr><tr><td>pulsar<em>source_user_metric</em></td><td>Summary</td><td>The user-defined metrics.</td></tr></tbody></table></li><li><p><strong>Sink</strong> metrics</p><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_sink_written_total</td><td>Counter</td><td>The total number of records processed by a sink.</td></tr><tr><td>pulsar_sink_written_1min_total</td><td>Counter</td><td>The total number of records processed by a sink in the last 1 minute.</td></tr><tr><td>pulsar_sink_received_1min_total</td><td>Counter</td><td>The total number of messages that a sink has received from Pulsar topics in the last 1 minute.</td></tr><tr><td>pulsar_sink_received_total</td><td>Counter</td><td>The total number of records that a sink has received from Pulsar topics.</td></tr><tr><td>pulsar_sink_last_invocation</td><td>Gauge</td><td>The timestamp of the last invocation of the sink.</td></tr><tr><td>pulsar_sink_sink_exception</td><td>Gauge</td><td>The exception from a sink.</td></tr><tr><td>pulsar_sink_sink_exceptions_total</td><td>Counter</td><td>The total number of sink exceptions.</td></tr><tr><td>pulsar_sink_sink_exceptions_1min_total</td><td>Counter</td><td>The total number of sink exceptions in the last 1 minute.</td></tr><tr><td>pulsar_sink_system_exception</td><td>Gauge</td><td>The exception from system code.</td></tr><tr><td>pulsar_sink_system_exceptions_total</td><td>Counter</td><td>The total number of system exceptions.</td></tr><tr><td>pulsar_sink_system_exceptions_1min_total</td><td>Counter</td><td>The total number of system exceptions in the last 1 minute.</td></tr><tr><td>pulsar<em>sink_user_metric</em></td><td>Summary</td><td>The user-defined metrics.</td></tr></tbody></table></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="proxy">Proxy<a href="#proxy" class="hash-link" aria-label="Direct link to Proxy" title="Direct link to Proxy"></a></h2><p>All the proxy metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li><em>kubernetes_pod_name</em>: <code>kubernetes_pod_name=${kubernetes_pod_name}</code>. <code>${kubernetes_pod_name}</code> is the Kubernetes pod name.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_proxy_active_connections</td><td>Gauge</td><td>Number of connections currently active in the proxy.</td></tr><tr><td>pulsar_proxy_new_connections</td><td>Counter</td><td>Counter of connections being opened in the proxy.</td></tr><tr><td>pulsar_proxy_rejected_connections</td><td>Counter</td><td>Counter for connections rejected due to throttling.</td></tr><tr><td>pulsar_proxy_binary_ops</td><td>Counter</td><td>Counter of proxy operations.</td></tr><tr><td>pulsar_proxy_binary_bytes</td><td>Counter</td><td>Counter of proxy bytes.</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="pulsar-sql-worker">Pulsar SQL Worker<a href="#pulsar-sql-worker" class="hash-link" aria-label="Direct link to Pulsar SQL Worker" title="Direct link to Pulsar SQL Worker"></a></h2><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>split_bytes_read</td><td>Counter</td><td>Number of bytes read from BookKeeper.</td></tr><tr><td>split_num_messages_deserialized</td><td>Counter</td><td>Number of messages deserialized.</td></tr><tr><td>split_num_record_deserialized</td><td>Counter</td><td>Number of records deserialized.</td></tr><tr><td>split_bytes_read_per_query</td><td>Summary</td><td>Total number of bytes read per query.</td></tr><tr><td>split_entry_deserialize_time</td><td>Summary</td><td>Time spent on deserializing entries.</td></tr><tr><td>split_entry_deserialize_time_per_query</td><td>Summary</td><td>Time spent on deserializing entries per query.</td></tr><tr><td>split_entry_queue_dequeue_wait_time</td><td>Summary</td><td>Time spend on waiting to get entry from entry queue because it is empty.</td></tr><tr><td>split_entry_queue_dequeue_wait_time_per_query</td><td>Summary</td><td>Total time spent waiting to get entry from entry queue per query.</td></tr><tr><td>split_message_queue_dequeue_wait_time_per_query</td><td>Summary</td><td>Time spent waiting to dequeue from message queue because is is empty per query.</td></tr><tr><td>split_message_queue_enqueue_wait_time</td><td>Summary</td><td>Time spent waiting for message queue enqueue because the message queue is full.</td></tr><tr><td>split_message_queue_enqueue_wait_time_per_query</td><td>Summary</td><td>Time spent waiting for message queue enqueue because the message queue is full per query.</td></tr><tr><td>split_num_entries_per_batch</td><td>Summary</td><td>Number of entries per batch.</td></tr><tr><td>split_num_entries_per_query</td><td>Summary</td><td>Number of entries per query.</td></tr><tr><td>split_num_messages_deserialized_per_entry</td><td>Summary</td><td>Number of messages deserialized per entry.</td></tr><tr><td>split_num_messages_deserialized_per_query</td><td>Summary</td><td>Number of messages deserialized per query.</td></tr><tr><td>split_read_attempts</td><td>Summary</td><td>Number of reading attempts (fail if queues are full).</td></tr><tr><td>split_read_attempts_per_query</td><td>Summary</td><td>Number of reading attempts per query.</td></tr><tr><td>split_read_latency_per_batch</td><td>Summary</td><td>Latency of reads per batch.</td></tr><tr><td>split_read_latency_per_query</td><td>Summary</td><td>Total read latency per query.</td></tr><tr><td>split_record_deserialize_time</td><td>Summary</td><td>Time spent deserializing message to record. For example, Avro, JSON, and so on.</td></tr><tr><td>split_record_deserialize_time_per_query</td><td>Summary</td><td>Time spent deserializing message to record per query.</td></tr><tr><td>split_total_execution_time</td><td>Summary</td><td>The total execution time.</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="pulsar-transaction">Pulsar transaction<a href="#pulsar-transaction" class="hash-link" aria-label="Direct link to Pulsar transaction" title="Direct link to Pulsar transaction"></a></h2><p>All the transaction metrics are labeled with the following labels:</p><ul><li><em>cluster</em>: <code>cluster=${pulsar_cluster}</code>. <code>${pulsar_cluster}</code> is the cluster name that you have configured in the <code>broker.conf</code> file.</li><li><em>coordinator_id</em>: <code>coordinator_id=${coordinator_id}</code>. <code>${coordinator_id}</code> is the coordinator id.</li></ul><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>pulsar_txn_active_count</td><td>Gauge</td><td>Number of active transactions.</td></tr><tr><td>pulsar_txn_created_total</td><td>Counter</td><td>Number of created transactions.</td></tr><tr><td>pulsar_txn_committed_total</td><td>Counter</td><td>Number of committed transactions.</td></tr><tr><td>pulsar_txn_aborted_total</td><td>Counter</td><td>Number of aborted transactions of this coordinator.</td></tr><tr><td>pulsar_txn_timeout_total</td><td>Counter</td><td>Number of timeout transactions.</td></tr><tr><td>pulsar_txn_append_log_total</td><td>Counter</td><td>Number of append transaction logs.</td></tr><tr><td>pulsar<em>txn_execution_latency_le</em>*</td><td>Histogram</td><td>Transaction execution latency. <br> Available latencies are as below: <br><ul><li> latency=&quot;10&quot; is TransactionExecutionLatency between (0ms, 10ms]</li> <li>latency=&quot;20&quot; is TransactionExecutionLatency between (10ms, 20ms]</li><li>latency=&quot;50&quot; is TransactionExecutionLatency between (20ms, 50ms]</li><li>latency=&quot;100&quot; is TransactionExecutionLatency between (50ms, 100ms]</li><li>latency=&quot;500&quot; is TransactionExecutionLatency between (100ms, 500ms]</li><li>latency=&quot;1000&quot; is TransactionExecutionLatency between (500ms, 1000ms]</li><li>latency=&quot;5000&quot; is TransactionExecutionLatency between (1s, 5s]</li><li>latency=&quot;15000&quot; is TransactionExecutionLatency between (5s, 15s]</li><li>latency=&quot;30000&quot; is TransactionExecutionLatency between (15s, 30s]</li><li>latency=&quot;60000&quot; is TransactionExecutionLatency between (30s, 60s]</li><li>latency=&quot;300000&quot; is TransactionExecutionLatency between (1m,5m]</li><li>latency=&quot;1500000&quot; is TransactionExecutionLatency between (5m,15m]</li><li>latency=&quot;3000000&quot; is TransactionExecutionLatency between (15m,30m]</li><li>latency=&quot;overflow&quot; is TransactionExecutionLatency between (30m,∞]</li></ul></td></tr><tr><td>pulsar_txn_tb_client_abort_failed_total</td><td>Counter</td><td>The number of failures to abort transactions for <code>transaction buffer client</code>.</td></tr><tr><td>pulsar_txn_tb_client_commit_failed_total</td><td>Counter</td><td>The number of failures to commit transaction for <code>transaction buffer client</code>.</td></tr><tr><td>pulsar_txn_tb_client_abort_latency</td><td>Summary</td><td>The latency of aborting transactions for <code>transaction buffer client</code>.</td></tr><tr><td>pulsar_txn_tb_client_commit_latency</td><td>Summary</td><td>The latency of committing transactions for <code>transaction buffer client</code>.</td></tr><tr><td>pulsar_txn_tb_client_pending_requests</td><td>Counter</td><td>The number of pending requests for <code>transaction buffer client</code>.</td></tr><tr><td>pulsar_txn_tp_committed_count_total</td><td>Counter</td><td>The number of committed transactions for pending ack store.</td></tr><tr><td>pulsar_txn_tp_aborted_count_total</td><td>Counter</td><td>The number of aborted transactions for pending ack store.</td></tr><tr><td>pulsar_txn_tp_commit_latency</td><td>Summary</td><td>The latency of committing transactions for <code>transaction pending ack handle</code>.</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/pulsar-site/edit/main/docs/reference-metrics.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/next/administration-stats/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Statistics</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/next/deploy-monitoring/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Monitoring</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_jeP5 thin-scrollbar theme-doc-toc-desktop"><div class="border"><div style="color:var(--ifm-toc-link-color)">Was this helpful?</div><div style="border-width:1px;padding:3px;display:flex"><div style="justify-content:center;display:flex;border-radius:99999px;width:2.5rem;height:2.5rem;cursor:pointer;background:;color:"><svg style="width:initial;height:initial" width="12" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.086 1.594A1 1 0 0 1 11 1a4 4 0 0 1 4 4v3h4.655a3 3 0 0 1 2.994 3.45l-1.38 9A3.002 3.002 0 0 1 18.275 23H4a3 3 0 0 1-3-3v-7a3 3 0 0 1 3-3h2.35l3.736-8.406ZM8 11.212l3.608-8.117A2 2 0 0 1 13 5v4a1 1 0 0 0 1 1h5.671a1 1 0 0 1 1 1.15l-1.38 9a1 1 0 0 1-1 .85H8v-9.788ZM6 21v-9H4a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h2Z" fill="currentColor"></path></svg></div><div style="justify-content:center;display:flex;border-radius:99999px;width:2.5rem;height:2.5rem;cursor:pointer;background:;color:"><svg style="width:initial;height:initial" width="12" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M20.563 3.316A1.31 1.31 0 0 0 19.687 3h-1.688v9h1.688a1.31 1.31 0 0 0 1.312-1.077V4.077a1.31 1.31 0 0 0-.436-.761ZM16 12.788l-3.608 8.117A1.999 1.999 0 0 1 11 19v-4a1 1 0 0 0-1-1H4.328a1.002 1.002 0 0 1-1-1.15l1.38-9a1 1 0 0 1 1-.85h10.291v9.788ZM19.661 1a3.31 3.31 0 0 1 3.329 2.866c.006.044.01.09.01.134v7c0 .045-.004.09-.01.134A3.31 3.31 0 0 1 19.661 14h-2.012l-3.736 8.406a1 1 0 0 1-.914.594 4 4 0 0 1-4-4v-3H4.344a3 3 0 0 1-2.994-3.45l1.38-9A3.002 3.002 0 0 1 5.724 1h13.937Z" fill="currentColor"></path></svg></div></div><div class="Actions_uugI"><a target="_blank" class="Action_iBHd" href="https://github.com/apache/pulsar/issues/new?assignees=&amp;labels=doc-required&amp;projects=&amp;template=doc.yml&amp;title=%5BDoc%5D+">💡 Suggest changes</a><a target="_blank" class="Action_iBHd" href="https://github.com/apache/pulsar/discussions/new?category=q-a">🛟 Get support</a></div></div><ul class="table-of-contents table-of-contents__left-border"><li><a href="#zookeeper" class="table-of-contents__link toc-highlight">ZooKeeper</a></li><li><a href="#bookkeeper" class="table-of-contents__link toc-highlight">BookKeeper</a><ul><li><a href="#server-metrics" class="table-of-contents__link toc-highlight">Server metrics</a></li><li><a href="#journal-metrics" class="table-of-contents__link toc-highlight">Journal metrics</a></li><li><a href="#storage-metrics" class="table-of-contents__link toc-highlight">Storage metrics</a></li><li><a href="#replication-metrics" class="table-of-contents__link toc-highlight">Replication metrics</a></li></ul></li><li><a href="#broker" class="table-of-contents__link toc-highlight">Broker</a><ul><li><a href="#broker-metrics" class="table-of-contents__link toc-highlight">Broker metrics</a></li><li><a href="#bookkeeper-client-metrics" class="table-of-contents__link toc-highlight">BookKeeper client metrics</a></li><li><a href="#namespace-metrics" class="table-of-contents__link toc-highlight">Namespace metrics</a></li><li><a href="#topic-metrics" class="table-of-contents__link toc-highlight">Topic metrics</a></li><li><a href="#replication-metrics-1" class="table-of-contents__link toc-highlight">Replication metrics</a></li><li><a href="#topic-lookup-metrics" class="table-of-contents__link toc-highlight">Topic lookup metrics</a></li><li><a href="#managedledger-metrics" class="table-of-contents__link toc-highlight">ManagedLedger metrics</a></li><li><a href="#managed-cursor-acknowledgment-state" class="table-of-contents__link toc-highlight">Managed cursor acknowledgment state</a></li><li><a href="#subscription-metrics" class="table-of-contents__link toc-highlight">Subscription metrics</a></li><li><a href="#consumer-metrics" class="table-of-contents__link toc-highlight">Consumer metrics</a></li><li><a href="#managed-ledger-bookie-client-metrics" class="table-of-contents__link toc-highlight">Managed ledger bookie client metrics</a></li><li><a href="#token-metrics" class="table-of-contents__link toc-highlight">Token metrics</a></li><li><a href="#authentication-metrics" class="table-of-contents__link toc-highlight">Authentication metrics</a></li><li><a href="#connection-metrics" class="table-of-contents__link toc-highlight">Connection metrics</a></li><li><a href="#jetty-metrics" class="table-of-contents__link toc-highlight">Jetty metrics</a></li><li><a href="#schema-metrics" class="table-of-contents__link toc-highlight">Schema metrics</a></li><li><a href="#offload-metrics" class="table-of-contents__link toc-highlight">Offload metrics</a></li><li><a href="#web-service-executor-metrics" class="table-of-contents__link toc-highlight">Web service executor metrics</a></li><li><a href="#metadata-store-metrics" class="table-of-contents__link toc-highlight">Metadata store metrics</a></li><li><a href="#jvm-metrics" class="table-of-contents__link toc-highlight">JVM Metrics</a></li></ul></li><li><a href="#load-balancing" class="table-of-contents__link toc-highlight">Load balancing</a><ul><li><a href="#loadbalancing-metrics" class="table-of-contents__link toc-highlight">LoadBalancing metrics</a></li><li><a href="#bundleunloading-metrics" class="table-of-contents__link toc-highlight">BundleUnloading metrics</a></li><li><a href="#bundlesplit-metrics" class="table-of-contents__link toc-highlight">BundleSplit metrics</a></li><li><a href="#bundle-metrics" class="table-of-contents__link toc-highlight">Bundle metrics</a></li><li><a href="#bundle-assign-metrics" class="table-of-contents__link toc-highlight">Bundle assign metrics</a></li><li><a href="#service-unit-state-channel-metrics" class="table-of-contents__link toc-highlight">Service unit state channel metrics</a></li></ul></li><li><a href="#pulsar-functions" class="table-of-contents__link toc-highlight">Pulsar Functions</a></li><li><a href="#connectors" class="table-of-contents__link toc-highlight">Connectors</a></li><li><a href="#proxy" class="table-of-contents__link toc-highlight">Proxy</a></li><li><a href="#pulsar-sql-worker" class="table-of-contents__link toc-highlight">Pulsar SQL Worker</a></li><li><a href="#pulsar-transaction" class="table-of-contents__link toc-highlight">Pulsar transaction</a></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Foundation<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/events/current-event.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Events<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="footer__link-item">License<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/foundation/thanks" target="_blank" rel="noopener noreferrer" class="footer__link-item">Thanks<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/foundation/sponsorship" target="_blank" rel="noopener noreferrer" class="footer__link-item">Sponsorship<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/security/">Security</a></li><li class="footer__item"><a href="https://www.apache.org/foundation/policies/privacy.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a class="footer__link-item" href="/contact/">Contact</a></li></ul></div><div class="col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item">
<div class="social-icons">
<a target="_blank" href="https://communityinviter.com/apps/apache-pulsar/apache-pulsar" aria-label="Join the Apache Pulsar Slack workspace">
<img alt="Slack logo" src="/img/slack-white.svg" width="26">
</a>
<a target="_blank" href="https://github.com/apache/pulsar/" aria-label="View the Apache Pulsar project on GitHub">
<img alt="GitHub logo" src="/img/github-white.svg" width="26">
</a>
</div>
</li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a class="footerLogoLink_BH7S" href="/"><img src="/img/pulsar-white.svg" alt="Pulsar Logo" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/pulsar-white.svg" alt="Pulsar Logo" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></a></div><div class="footer__copyright">
<div>
<img class="footer-apache-logo" src="/img/feather-logo-white.svg" alt="" width="20">
The Apache Software Foundation
</div>
<p>Apache Pulsar is available under the Apache License, version 2.0. Apache Pulsar is an open-source, distributed messaging and streaming platform built for the cloud.</p>
<p>Copyright © 2024 The Apache Software Foundation. All Rights Reserved. Apache, Pulsar, Apache Pulsar, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation.</p>
</div></div></div></footer></div>
<script src="/assets/js/runtime~main.1d0ed2a7.js"></script>
<script src="/assets/js/main.e07a0c68.js"></script>
</body>
</html>