<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 -->
<p>Monitoring dashboards provide visual representations of system metrics, enabling at-a-glance health checks, trend analysis, and rapid problem identification. Well-designed dashboards surface critical information, guide investigation workflows, and enable data-driven decision-making for operations and capacity planning.</p>
<p>Geode’s comprehensive metrics expose detailed performance data that can be visualized through Grafana, Datadog, New Relic, or custom dashboard platforms. Effective dashboard design balances detail with clarity, focusing on actionable insights rather than raw data dumps.</p>
<p>This guide covers dashboard design principles, essential visualizations, Grafana configuration, dashboard templates, and best practices for monitoring Geode deployments.</p>
<h3 id="dashboard-design-principles" class="position-relative d-flex align-items-center group">
<span>Dashboard Design Principles</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="dashboard-design-principles"
aria-haspopup="dialog"
aria-label="Share link: Dashboard Design Principles">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden>
<div class="hsm-dialog" role="document">
<div class="hsm-header">
<h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2>
<button type="button" class="hsm-close" aria-label="Close">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div class="hsm-body">
<label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label>
<div class="input-group mb-4 hsm-url-group">
<input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" />
<button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy">
<i class="fa-duotone fa-clipboard" aria-hidden="true"></i>
</button>
</div>
<div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div>
<div class="hsm-share-grid">
<a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-twitter me-2"></i>Twitter
</a>
<a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-linkedin me-2"></i>LinkedIn
</a>
<a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-facebook me-2"></i>Facebook
</a>
</div>
</div>
</div>
</div>
<style>
.heading-share-modal {
position: fixed;
inset: 0;
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0.6);
z-index: 1050;
padding: 1rem;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
.heading-share-modal[hidden] { display: none !important; }
.hsm-dialog {
max-width: 420px;
width: 100%;
background: var(--bs-body-bg, #fff);
color: var(--bs-body-color, #212529);
border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
border-radius: 1rem;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
overflow: hidden;
animation: hsm-fade-in 0.2s ease-out;
}
@keyframes hsm-fade-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
[data-bs-theme="dark"] .hsm-dialog {
background: #1e293b;
border-color: rgba(255,255,255,0.1);
color: #f8f9fa;
}
.hsm-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.5rem;
border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
background: rgba(0,0,0,0.02);
}
[data-bs-theme="dark"] .hsm-header {
background: rgba(255,255,255,0.02);
border-color: rgba(255,255,255,0.1);
}
.hsm-close {
background: transparent;
border: none;
color: inherit;
opacity: 0.5;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-size: 1.2rem;
line-height: 1;
transition: opacity 0.2s;
}
.hsm-close:hover {
opacity: 1;
}
.hsm-body {
padding: 1.5rem;
}
.hsm-url-group {
display: flex !important;
align-items: stretch;
}
.hsm-url-group .form-control {
flex: 1;
min-width: 0;
margin: 0;
background: var(--bs-secondary-bg, #f8f9fa);
border-color: var(--bs-border-color, #dee2e6);
border-top-right-radius: 0;
border-bottom-right-radius: 0;
height: 42px;
}
.hsm-url-group .btn {
flex: 0 0 auto;
margin: 0;
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 1.25rem;
z-index: 2;
}
[data-bs-theme="dark"] .hsm-url-group .form-control {
background: #0f172a;
border-color: #334155;
color: #e2e8f0;
}
.hsm-share-grid {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.hsm-share-grid .btn {
display: flex;
align-items: center;
justify-content: center;
font-size: 0.9rem;
padding: 0.6rem;
border-color: var(--bs-border-color);
width: 100%;
}
[data-bs-theme="dark"] .hsm-share-grid .btn {
color: #e2e8f0;
border-color: #475569;
}
[data-bs-theme="dark"] .hsm-share-grid .btn:hover {
background: #334155;
border-color: #cbd5e1;
}
</style>
<script>
(function(){
const modal = document.getElementById('headingShareModal');
if(!modal) return;
const input = modal.querySelector('#headingShareInput');
const copyBtn = modal.querySelector('.hsm-copy');
const twitter = modal.querySelector('#share-twitter');
const linkedin = modal.querySelector('#share-linkedin');
const facebook = modal.querySelector('#share-facebook');
const closeBtn = modal.querySelector('.hsm-close');
let lastFocus=null;
let trapBound=false;
function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; }
function isOpen(){ return !modal.hasAttribute('hidden'); }
function hydrate(id){
const url=buildUrl(id);
input.value=url;
const enc=encodeURIComponent(url);
const text=encodeURIComponent(document.title);
if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`;
if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`;
if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`;
}
function openModal(id){
lastFocus=document.activeElement;
hydrate(id);
if(!isOpen()){
modal.removeAttribute('hidden');
}
requestAnimationFrame(()=>{ input.focus(); });
trapFocus();
}
function closeModal(){
if(!isOpen()) return;
modal.setAttribute('hidden','');
if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus();
}
function copyCurrent(){
try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); }
catch(e){ fallback(); }
}
function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} }
function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); }
function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); }
function bindShareButtons(){
document.querySelectorAll('.h-share').forEach(btn=>{
if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; }
});
}
bindShareButtons();
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', bindShareButtons);
} else {
requestAnimationFrame(bindShareButtons);
}
document.addEventListener('click', function(e){
const shareBtn=e.target.closest && e.target.closest('.h-share');
if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); }
}, true);
document.addEventListener('click', e=>{
if(e.target===modal) closeModal();
if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); }
if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); }
});
document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); });
function trapFocus(){
if(trapBound) return;
trapBound=true;
modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } });
}
if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); });
})();
</script>
<h4 id="purpose-driven-organization" class="position-relative d-flex align-items-center group">
<span>Purpose-Driven Organization</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="purpose-driven-organization"
aria-haspopup="dialog"
aria-label="Share link: Purpose-Driven Organization">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Design dashboards for specific audiences and use cases:</p>
<p><strong>Executive Dashboard</strong>: High-level SLO compliance and business metrics
<strong>Operations Dashboard</strong>: System health, resource utilization, alerts
<strong>Developer Dashboard</strong>: Query performance, application metrics, errors
<strong>Capacity Planning Dashboard</strong>: Growth trends, resource forecasts</p>
<h4 id="information-hierarchy" class="position-relative d-flex align-items-center group">
<span>Information Hierarchy</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="information-hierarchy"
aria-haspopup="dialog"
aria-label="Share link: Information Hierarchy">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Organize panels from most to least important:</p>
<ol>
<li><strong>SLO/Health Status</strong> (top): Red/green indicators for overall health</li>
<li><strong>Key Metrics</strong> (middle): Query rate, latency, errors</li>
<li><strong>Supporting Metrics</strong> (bottom): Detailed breakdowns, diagnostics</li>
</ol>
<h4 id="at-a-glance-comprehension" class="position-relative d-flex align-items-center group">
<span>At-a-Glance Comprehension</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="at-a-glance-comprehension"
aria-haspopup="dialog"
aria-label="Share link: At-a-Glance Comprehension">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Use visualization types that enable instant understanding:</p>
<p><strong>Stat Panels</strong>: Single value with threshold coloring (good/warning/critical)
<strong>Gauge Panels</strong>: Percentage utilization with color zones
<strong>Graph Panels</strong>: Time series trends over last N hours
<strong>Heatmaps</strong>: Distribution visualization (latency percentiles)
<strong>Tables</strong>: Detailed breakdowns when needed</p>
<h3 id="essential-geode-dashboards" class="position-relative d-flex align-items-center group">
<span>Essential Geode Dashboards</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="essential-geode-dashboards"
aria-haspopup="dialog"
aria-label="Share link: Essential Geode Dashboards">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="system-overview-dashboard" class="position-relative d-flex align-items-center group">
<span>System Overview Dashboard</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="system-overview-dashboard"
aria-haspopup="dialog"
aria-label="Share link: System Overview Dashboard">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>High-level health check for Geode cluster:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">Dashboard</span><span class="p">:</span><span class="w"> </span><span class="l">Geode System Overview</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Refresh</span><span class="p">:</span><span class="w"> </span><span class="l">30s</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Time Range</span><span class="p">:</span><span class="w"> </span><span class="l">Last 6 hours</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 1</span><span class="p">:</span><span class="w"> </span><span class="l">SLO Status</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Overall Health</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Stat</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">up{job="geode"}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="l">=red, 1=green</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Value</span><span class="p">:</span><span class="w"> </span><span class="s2">"{{ if value == 1 }}UP{{ else }}DOWN{{ end }}"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel: Query Success Rate (SLO</span><span class="p">:</span><span class="w"> </span><span class="l">>99.9%)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Gauge</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> rate(geode_queries_total{status="success"}[5m]) /
</span></span></span><span class="line"><span class="cl"><span class="sd"> rate(geode_queries_total[5m]) * 100</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l"><99.9=red, <99.95=orange, >=99.95=green</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel: P95 Latency (SLO</span><span class="p">:</span><span class="w"> </span><span class="l"><500ms)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Gauge</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> histogram_quantile(0.95, rate(geode_query_duration_seconds_bucket[5m])) * 1000</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>500=red, >300=orange, <=300=green</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Unit</span><span class="p">:</span><span class="w"> </span><span class="l">ms</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Error Rate</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Stat</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_queries_total{status="error"}[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>10=red, >1=orange, <=1=green</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Unit</span><span class="p">:</span><span class="w"> </span><span class="l">errors/sec</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 2</span><span class="p">:</span><span class="w"> </span><span class="l">Query Metrics</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Query Rate</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Queries</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Success</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_queries_total{status="success"}[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Error</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_queries_total{status="error"}[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">queries/sec</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Query Latency Percentiles</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Queries</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">p50</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">histogram_quantile(0.50, rate(geode_query_duration_seconds_bucket[5m]))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">p95</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">histogram_quantile(0.95, rate(geode_query_duration_seconds_bucket[5m]))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">p99</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">histogram_quantile(0.99, rate(geode_query_duration_seconds_bucket[5m]))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">seconds</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Format</span><span class="p">:</span><span class="w"> </span><span class="l">Time series</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 3</span><span class="p">:</span><span class="w"> </span><span class="l">System Resources</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Memory Usage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_memory_used_bytes / geode_memory_total_bytes * 100</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">percent</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>90=red, >75=orange</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Disk Usage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_disk_used_bytes / geode_disk_total_bytes * 100</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">percent</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>90=red, >75=orange</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Connection Pool</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_active_connections / geode_max_connections * 100</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">percent</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>90=red, >75=orange</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 4</span><span class="p">:</span><span class="w"> </span><span class="l">Recent Alerts</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Active Alerts</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Alert List</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">State Filter</span><span class="p">:</span><span class="w"> </span><span class="l">Pending, Alerting</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Sort</span><span class="p">:</span><span class="w"> </span><span class="l">Severity</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="query-performance-dashboard" class="position-relative d-flex align-items-center group">
<span>Query Performance Dashboard</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="query-performance-dashboard"
aria-haspopup="dialog"
aria-label="Share link: Query Performance Dashboard">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Deep dive into query execution metrics:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">Dashboard</span><span class="p">:</span><span class="w"> </span><span class="l">Geode Query Performance</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Refresh</span><span class="p">:</span><span class="w"> </span><span class="l">10s</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Time Range</span><span class="p">:</span><span class="w"> </span><span class="l">Last 1 hour</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 1</span><span class="p">:</span><span class="w"> </span><span class="l">Query Throughput</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Queries per Second</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">sum(rate(geode_queries_total[1m]))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Fill</span><span class="p">:</span><span class="w"> </span><span class="l">Area</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Stack</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Queries by Status</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Pie Chart</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Queries</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Success</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">sum(increase(geode_queries_total{status="success"}[1h]))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Error</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">sum(increase(geode_queries_total{status="error"}[1h]))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 2</span><span class="p">:</span><span class="w"> </span><span class="l">Latency Analysis</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Latency Heatmap</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Heatmap</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> sum(rate(geode_query_duration_seconds_bucket[5m])) by (le)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">X-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">Time</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">Latency buckets</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Color</span><span class="p">:</span><span class="w"> </span><span class="l">Query count</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Slow Queries (>1s)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Stat</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_slow_queries_total[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>5=red, >1=orange</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Unit</span><span class="p">:</span><span class="w"> </span><span class="l">queries/sec</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 3</span><span class="p">:</span><span class="w"> </span><span class="l">Query Breakdown</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Top Query Types by Duration</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Bar Gauge</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> topk(10,
</span></span></span><span class="line"><span class="cl"><span class="sd"> sum by (query_type) (rate(geode_query_duration_seconds_sum[5m]))
</span></span></span><span class="line"><span class="cl"><span class="sd"> )</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Orientation</span><span class="p">:</span><span class="w"> </span><span class="l">Horizontal</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Query Cache Hit Rate</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> rate(geode_query_plan_cache_hits_total[5m]) /
</span></span></span><span class="line"><span class="cl"><span class="sd"> (rate(geode_query_plan_cache_hits_total[5m]) +
</span></span></span><span class="line"><span class="cl"><span class="sd"> rate(geode_query_plan_cache_misses_total[5m])) * 100</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">percent</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l"><70=red, <85=orange</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 4</span><span class="p">:</span><span class="w"> </span><span class="l">Query Details Table</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Recent Slow Queries</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Table</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> topk(20,
</span></span></span><span class="line"><span class="cl"><span class="sd"> geode_query_duration_seconds{quantile="0.99"}
</span></span></span><span class="line"><span class="cl"><span class="sd"> )</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Columns</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">Query ID</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">Query Text (truncated)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">Duration (ms)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">Rows Returned</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">Timestamp</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="transaction-dashboard" class="position-relative d-flex align-items-center group">
<span>Transaction Dashboard</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="transaction-dashboard"
aria-haspopup="dialog"
aria-label="Share link: Transaction Dashboard">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Monitor transaction behavior and ACID guarantees:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">Dashboard</span><span class="p">:</span><span class="w"> </span><span class="l">Geode Transactions</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Refresh</span><span class="p">:</span><span class="w"> </span><span class="l">10s</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Time Range</span><span class="p">:</span><span class="w"> </span><span class="l">Last 1 hour</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 1</span><span class="p">:</span><span class="w"> </span><span class="l">Transaction Throughput</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Transactions per Second</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Queries</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Committed</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_transactions_total{status="committed"}[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Rolled Back</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_transactions_total{status="rolled_back"}[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Stack</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Commit Rate</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Gauge</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> rate(geode_transactions_total{status="committed"}[5m]) /
</span></span></span><span class="line"><span class="cl"><span class="sd"> rate(geode_transactions_total[5m]) * 100</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l"><95=red, <98=orange, >=98=green</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Unit</span><span class="p">:</span><span class="w"> </span><span class="l">percent</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 2</span><span class="p">:</span><span class="w"> </span><span class="l">Transaction Performance</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Transaction Duration</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Queries</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">p50</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">histogram_quantile(0.50, rate(geode_transaction_duration_seconds_bucket[5m]))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">p95</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">histogram_quantile(0.95, rate(geode_transaction_duration_seconds_bucket[5m]))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">p99</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">histogram_quantile(0.99, rate(geode_transaction_duration_seconds_bucket[5m]))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Active Transactions</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_active_transactions</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">count</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 3</span><span class="p">:</span><span class="w"> </span><span class="l">Conflicts and Retries</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Conflict Rate</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_transaction_conflicts_total[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">conflicts/sec</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>100=red, >50=orange</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Conflict Ratio</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> rate(geode_transaction_conflicts_total[5m]) /
</span></span></span><span class="line"><span class="cl"><span class="sd"> rate(geode_transactions_total[5m]) * 100</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">percent</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>5=red, >2=orange</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 4</span><span class="p">:</span><span class="w"> </span><span class="l">Long-Running Transactions</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Transactions >60s</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Stat</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_long_running_transactions{threshold="60s"}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>5=red, >2=orange</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Oldest Transaction Age</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Stat</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_oldest_transaction_age_seconds</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Unit</span><span class="p">:</span><span class="w"> </span><span class="l">seconds</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>300=red, >120=orange</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="resource-utilization-dashboard" class="position-relative d-flex align-items-center group">
<span>Resource Utilization Dashboard</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="resource-utilization-dashboard"
aria-haspopup="dialog"
aria-label="Share link: Resource Utilization Dashboard">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Track resource consumption and capacity:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">Dashboard</span><span class="p">:</span><span class="w"> </span><span class="l">Geode Resource Utilization</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Refresh</span><span class="p">:</span><span class="w"> </span><span class="l">30s</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Time Range</span><span class="p">:</span><span class="w"> </span><span class="l">Last 24 hours</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 1</span><span class="p">:</span><span class="w"> </span><span class="l">Memory</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Memory Usage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Queries</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Used</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_memory_used_bytes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Total</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_memory_total_bytes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">bytes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Format</span><span class="p">:</span><span class="w"> </span><span class="l">IEC</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Memory by Subsystem</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">sum by (subsystem) (geode_memory_used_bytes)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Stack</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">bytes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 2</span><span class="p">:</span><span class="w"> </span><span class="l">Disk</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Disk Space</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Queries</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Used</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_disk_used_bytes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Available</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_disk_free_bytes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">bytes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Format</span><span class="p">:</span><span class="w"> </span><span class="l">IEC</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">WAL Size</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_wal_size_bytes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">bytes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Thresholds</span><span class="p">:</span><span class="w"> </span><span class="l">>10GB=orange, >20GB=red</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 3</span><span class="p">:</span><span class="w"> </span><span class="l">I/O</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Disk I/O Operations</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Queries</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Reads</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_disk_io_operations_total{type="read"}[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Writes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_disk_io_operations_total{type="write"}[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">ops/sec</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Disk I/O Throughput</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Queries</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Read</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_disk_bytes_read_total[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Legend</span><span class="p">:</span><span class="w"> </span><span class="l">Write</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">rate(geode_disk_bytes_written_total[5m])</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">bytes/sec</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">Row 4</span><span class="p">:</span><span class="w"> </span><span class="l">Cache</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Cache Hit Rate</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> rate(geode_cache_hits_total[5m]) /
</span></span></span><span class="line"><span class="cl"><span class="sd"> (rate(geode_cache_hits_total[5m]) + rate(geode_cache_misses_total[5m])) * 100</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">percent</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">Panel</span><span class="p">:</span><span class="w"> </span><span class="l">Cache Size</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Type</span><span class="p">:</span><span class="w"> </span><span class="l">Graph</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Query</span><span class="p">:</span><span class="w"> </span><span class="l">geode_cache_size_bytes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Y-Axis</span><span class="p">:</span><span class="w"> </span><span class="l">bytes</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="grafana-configuration" class="position-relative d-flex align-items-center group">
<span>Grafana Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="grafana-configuration"
aria-haspopup="dialog"
aria-label="Share link: Grafana Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="data-source-setup" class="position-relative d-flex align-items-center group">
<span>Data Source Setup</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="data-source-setup"
aria-haspopup="dialog"
aria-label="Share link: Data Source Setup">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">datasources</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Prometheus</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">prometheus</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">access</span><span class="p">:</span><span class="w"> </span><span class="l">proxy</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">url</span><span class="p">:</span><span class="w"> </span><span class="l">http://prometheus:9090</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">isDefault</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">jsonData</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">timeInterval</span><span class="p">:</span><span class="w"> </span><span class="s2">"15s"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">queryTimeout</span><span class="p">:</span><span class="w"> </span><span class="s2">"60s"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">httpMethod</span><span class="p">:</span><span class="w"> </span><span class="l">POST</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="dashboard-variables" class="position-relative d-flex align-items-center group">
<span>Dashboard Variables</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="dashboard-variables"
aria-haspopup="dialog"
aria-label="Share link: Dashboard Variables">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Use template variables for dynamic filtering:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">templating</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">instance</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">query</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">datasource</span><span class="p">:</span><span class="w"> </span><span class="l">Prometheus</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">query</span><span class="p">:</span><span class="w"> </span><span class="l">label_values(geode_queries_total, instance)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">refresh</span><span class="p">:</span><span class="w"> </span><span class="l">on_time_range_change</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">multi</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">includeAll</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">interval</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">interval</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">query</span><span class="p">:</span><span class="w"> </span><span class="l">1m,5m,10m,30m,1h</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">auto</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">auto_count</span><span class="p">:</span><span class="w"> </span><span class="m">30</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">auto_min</span><span class="p">:</span><span class="w"> </span><span class="l">10s</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">user</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">query</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">datasource</span><span class="p">:</span><span class="w"> </span><span class="l">Prometheus</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">query</span><span class="p">:</span><span class="w"> </span><span class="l">label_values(geode_queries_total, user)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">refresh</span><span class="p">:</span><span class="w"> </span><span class="l">on_time_range_change</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">multi</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">includeAll</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span></code></pre></div><p>Use variables in queries:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-promql" data-lang="promql"><span class="line"><span class="cl"><span class="c1"># Filter by selected instance</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kr">rate</span><span class="o">(</span><span class="nv">geode_queries_total</span><span class="p">{</span><span class="nl">instance</span><span class="o">=~</span><span class="p">"</span><span class="s">$instance</span><span class="p">"}[</span><span class="err">$interval</span><span class="p">]</span><span class="o">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1"># Filter by selected user</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">sum</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="o">(</span><span class="nv">user</span><span class="o">)</span><span class="w"> </span><span class="o">(</span><span class="kr">rate</span><span class="o">(</span><span class="nv">geode_queries_total</span><span class="p">{</span><span class="nl">user</span><span class="o">=~</span><span class="p">"</span><span class="s">$user</span><span class="p">"}[</span><span class="s">5m</span><span class="p">]</span><span class="o">))</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="panel-annotations" class="position-relative d-flex align-items-center group">
<span>Panel Annotations</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="panel-annotations"
aria-haspopup="dialog"
aria-label="Share link: Panel Annotations">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Add context with annotations:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">annotations</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Deployments</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">datasource</span><span class="p">:</span><span class="w"> </span><span class="l">Prometheus</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">expr</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> ALERTS{alertname="DeploymentCompleted"}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">titleFormat</span><span class="p">:</span><span class="w"> </span><span class="s2">"Deployment"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">textFormat</span><span class="p">:</span><span class="w"> </span><span class="s2">"{{ version }}"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">iconColor</span><span class="p">:</span><span class="w"> </span><span class="l">green</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Incidents</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">datasource</span><span class="p">:</span><span class="w"> </span><span class="l">Prometheus</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">expr</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> ALERTS{severity="critical"}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">titleFormat</span><span class="p">:</span><span class="w"> </span><span class="s2">"{{ alertname }}"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">textFormat</span><span class="p">:</span><span class="w"> </span><span class="s2">"{{ description }}"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">iconColor</span><span class="p">:</span><span class="w"> </span><span class="l">red</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="dashboard-best-practices" class="position-relative d-flex align-items-center group">
<span>Dashboard Best Practices</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="dashboard-best-practices"
aria-haspopup="dialog"
aria-label="Share link: Dashboard Best Practices">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="performance-optimization" class="position-relative d-flex align-items-center group">
<span>Performance Optimization</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="performance-optimization"
aria-haspopup="dialog"
aria-label="Share link: Performance Optimization">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Use Recording Rules</strong>: Pre-compute expensive queries to reduce dashboard load time</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">groups</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">dashboard_recordings</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">interval</span><span class="p">:</span><span class="w"> </span><span class="l">15s</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">rules</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">record</span><span class="p">:</span><span class="w"> </span><span class="l">job:geode_query_latency_p95:5m</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">expr</span><span class="p">:</span><span class="w"> </span><span class="l">histogram_quantile(0.95, sum(rate(geode_query_duration_seconds_bucket[5m])) by (job, le))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">record</span><span class="p">:</span><span class="w"> </span><span class="l">job:geode_query_rate:5m</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">expr</span><span class="p">:</span><span class="w"> </span><span class="l">sum(rate(geode_queries_total[5m])) by (job, status)</span><span class="w">
</span></span></span></code></pre></div><p>Use in dashboard:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-promql" data-lang="promql"><span class="line"><span class="cl"><span class="c1"># Instead of complex query</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kr">histogram_quantile</span><span class="o">(</span><span class="mf">0.95</span><span class="p">,</span><span class="w"> </span><span class="k">sum</span><span class="o">(</span><span class="kr">rate</span><span class="o">(</span><span class="nv">geode_query_duration_seconds_bucket</span><span class="p">[</span><span class="s">5m</span><span class="p">]</span><span class="o">))</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="o">(</span><span class="nv">le</span><span class="o">))</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1"># Use recording rule</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nv">job</span><span class="err">:</span><span class="nv">geode_query_latency_p95</span><span class="err">:</span><span class="s">5m</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="consistent-visualization" class="position-relative d-flex align-items-center group">
<span>Consistent Visualization</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="consistent-visualization"
aria-haspopup="dialog"
aria-label="Share link: Consistent Visualization">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Color Schemes</strong>: Use consistent colors across dashboards</p>
<ul>
<li>Green: Good/Normal</li>
<li>Yellow/Orange: Warning</li>
<li>Red: Critical/Error</li>
<li>Blue: Informational</li>
</ul>
<p><strong>Units</strong>: Use appropriate units consistently</p>
<ul>
<li>Time: seconds, milliseconds</li>
<li>Data: bytes (IEC format: KiB, MiB, GiB)</li>
<li>Rates: /sec</li>
</ul>
<p><strong>Thresholds</strong>: Set meaningful thresholds based on SLOs</p>
<h4 id="dashboard-organization" class="position-relative d-flex align-items-center group">
<span>Dashboard Organization</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="dashboard-organization"
aria-haspopup="dialog"
aria-label="Share link: Dashboard Organization">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Folder Structure</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Geode/
</span></span><span class="line"><span class="cl">├── Overview/
</span></span><span class="line"><span class="cl">│ └── System Overview
</span></span><span class="line"><span class="cl">├── Performance/
</span></span><span class="line"><span class="cl">│ ├── Query Performance
</span></span><span class="line"><span class="cl">│ ├── Transaction Performance
</span></span><span class="line"><span class="cl">│ └── Index Performance
</span></span><span class="line"><span class="cl">├── Resources/
</span></span><span class="line"><span class="cl">│ ├── Resource Utilization
</span></span><span class="line"><span class="cl">│ ├── Memory Deep Dive
</span></span><span class="line"><span class="cl">│ └── Disk Analysis
</span></span><span class="line"><span class="cl">└── Operations/
</span></span><span class="line"><span class="cl"> ├── Alerts
</span></span><span class="line"><span class="cl"> └── Capacity Planning
</span></span></code></pre></div>
<h4 id="dashboard-sharing" class="position-relative d-flex align-items-center group">
<span>Dashboard Sharing</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="dashboard-sharing"
aria-haspopup="dialog"
aria-label="Share link: Dashboard Sharing">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Export dashboards as JSON for version control:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Export dashboard</span>
</span></span><span class="line"><span class="cl">curl -H <span class="s2">"Authorization: Bearer </span><span class="si">${</span><span class="nv">API_KEY</span><span class="si">}</span><span class="s2">"</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> <span class="s2">"http://grafana:3000/api/dashboards/uid/geode-overview"</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> <span class="p">|</span> jq <span class="s1">'.dashboard'</span> > geode-overview.json
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Import dashboard</span>
</span></span><span class="line"><span class="cl">curl -X POST -H <span class="s2">"Authorization: Bearer </span><span class="si">${</span><span class="nv">API_KEY</span><span class="si">}</span><span class="s2">"</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">"Content-Type: application/json"</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -d @geode-overview.json <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> <span class="s2">"http://grafana:3000/api/dashboards/db"</span>
</span></span></code></pre></div>
<h3 id="related-topics" class="position-relative d-flex align-items-center group">
<span>Related Topics</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="related-topics"
aria-haspopup="dialog"
aria-label="Share link: Related Topics">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><a
href="/tags/monitoring/"
>System Monitoring</a>
- Monitoring strategies</li>
<li><a
href="/tags/metrics/"
>Performance Metrics</a>
- Metrics collection</li>
<li><a
href="/tags/grafana/"
>Grafana Visualization</a>
- Grafana setup</li>
<li><a
href="/tags/prometheus/"
>Prometheus Integration</a>
- Prometheus configuration</li>
<li><a
href="/tags/observability/"
>System Observability</a>
- Observability pillars</li>
<li><a
href="/tags/alerting/"
>Alerting</a>
- Alert configuration</li>
</ul>
<h3 id="further-reading" class="position-relative d-flex align-items-center group">
<span>Further Reading</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="further-reading"
aria-haspopup="dialog"
aria-label="Share link: Further Reading">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li>Dashboard Design Best Practices</li>
<li>Grafana Dashboard Templates</li>
<li>Prometheus Query Optimization</li>
<li>Visual Analytics Principles</li>
<li>Dashboard as Code</li>
</ul>
Related Articles
No articles found with this tag yet.
Back to Home