Naming convention
Metric names follow a consistent shape:
So a real-time ingestion delay gauge on a server becomes
pinot_server_realtimeIngestionDelayMs_Value, and a broker query counter becomes pinot_broker_queries_Count.
A few metrics do not follow the pattern. RocksDB metrics, used by off-heap upsert, appear as pinot_server_rocksdb_ticker_<name> and pinot_server_rocksdb_histogram_<name>_<stat>. JVM metrics such as jvm_gc_collection_seconds_sum and jvm_threads_state keep their standard JVM names and carry a component label instead of a pinot_ prefix.
Suffixes
Not every statistic is available for every metric. If a suffix such as
_Mean or _FifteenMinuteRate returns nothing, use one from the table above instead — _50thPercentile for a typical value, or a rate over _Count for throughput. Confirm what a metric actually offers by running the bare name in Explore and reading the series that come back.
Labels
Metrics are labelled so you can slice them without name explosion:
Some metrics also carry pod-level labels such as
pod or kubernetes_pod_name. These identify the component instance rather than a table, so resource questions (“which server is hot?”) are answered by grouping on those, and workload questions (“which table is slow?”) by grouping on table.
The
table label always carries the type suffix. table="orders_REALTIME" and table="orders_OFFLINE" are separate series for a hybrid table, so a per-table chart of a hybrid table needs both, or a table=~"orders_.*" matcher.Metrics worth watching
These are the metrics behind the Grafana dashboards. They are the ones to reach for first; they are not the complete set.Real-time ingestion
Queries
For per-query rather than aggregate analysis, use
system_query_log — metrics tell you the shape of the problem, the query log tells you which query.
Upserts and dedup
Minion tasks and batch ingestion
Cluster, storage, and capacity
Finding a metric that is not listed here
The lists above are curated, not exhaustive — Pinot exports far more than this. To find something specific:1
Browse in Grafana Explore
Open Grafana, choose Explore, and select the Prometheus data source. Type
pinot_server_ in the metric field and the metric browser will complete against everything currently present in your cluster. This is the fastest way to check whether a metric exists at all.2
Search by fragment
Metric names are camelCase inside a snake_case wrapper, so search on a distinctive fragment —
Upsert, Ingestion, Segment — rather than a whole name. Prometheus’s metric browser matches on substring.3
Check the labels before charting
Run the bare metric name first and look at the label set on the returned series. Whether a metric is per-table, per-partition, or per-pod determines whether you need
sum by (table) or avg by (pod) — and getting this wrong is the most common cause of a chart that looks alarming and means nothing.4
Copy from an existing panel
Every panel on the built-in dashboards exposes its query. Open the panel menu, choose Explore, and you get a working query with the right labels and aggregation to modify.
Related
- Grafana dashboards — the built-in dashboards over these metrics
- Accessing logs — when a metric tells you something happened and you need the log line
- Query Logger — per-query records rather than aggregates
- Table Health Dashboard — evaluated checks rather than raw metrics

