,

When Do You Need a Super Metric in VCF Operations? (VCF 9 Operations Series, Part 13)

When a super metric earns its place in VCF Operations, how looping functions and dynamic custom groups build self-maintaining rollups, and what they cost.

VCF 9 Operations · Part 13 of 18

TL;DR · Key Takeaways

  • A super metric is a formula that combines metrics across one or more objects. Its main use is rolling child values up to a parent, like summing every VM’s vCPU to a cluster total.
  • Looping functions such as sum, avg, max, min and count work across many objects. Single functions work on one value or pair. Most useful super metrics start with a looping function over a group’s members.
  • A custom group is static (a fixed list) or dynamic (a membership rule). Pair a super metric with a dynamic group and the rollup maintains itself as objects come and go.
  • On one tenant, a dynamic group tracked growth from 40 to 52 VMs while a static group stayed frozen at 40 and under-reported by a quarter.
  • Super metrics cost compute every collection cycle. Ten of them cost about 20 ms per cycle, a hundred cost around 240 ms. Build what you need and delete duplicates of built-ins.
  • Keep formulas readable. A nested ternary nobody else can maintain is tech debt with a nice name.

Super metrics are the feature people either ignore or overuse, rarely the middle. Ignored, and you are stuck with per-object metrics when the question is about a group. Overused, and you have thirty formulas, half of them duplicating a built-in, quietly taxing every collection cycle. The right amount is small and deliberate.

This part answers a plain question: when do you actually need a super metric, and how do custom groups make it maintain itself? I will build one real rollup end to end, show what it costs to run, and give you the line I use to decide whether a formula earns its place.

What a super metric actually is

A super metric is a mathematical formula built from one or more metrics across one or more objects. The everyday case is a rollup: you have a metric on each child, and you want the total, average or worst value on the parent. VCF Operations gives you two kinds of function to do it. Looping functions, like sum, average, max, min and count, walk across many objects and return one number. Single functions work on a single value or a pair. Nearly every useful super metric I build starts with a looping function over the members of a group, then does a little arithmetic on the result.

You write the formula in the Super Metrics tab, where the editor autocompletes functions, object types, metrics and properties as you type, so you are picking real names rather than guessing at them. Then you assign the super metric to an object type and, this is the step people miss, enable it in the policy that governs those objects. A super metric that is defined but not enabled in policy collects nothing and leaves you staring at an empty chart.

VM vCPUVM vCPUVM vCPUsum( ) loopingacross membersGroup super metrictotal vCPU
A looping sum over member VMs produces one group-level number, the shape most super metrics take.
Looping functionWhat it returnsReach for it when
sumTotal across membersProvisioned vCPU, memory or storage for a group
averageMean across membersTypical utilization of a fleet
maxWorst single memberThe hottest VM in a group, for an alert
minBest or lowest memberSpotting a stalled or idle outlier
countHow many membersDensity and membership over time

Single functions and plain arithmetic

Not every super metric loops. Single functions and ordinary operators handle the cases where you already have a value and just need to reshape it. A single function might take one metric and one number, or a pair of metrics on the same object, and return a result. The tenant ratio is exactly this once the looping sum has run: take the group total and divide by the physical core count, which is plain arithmetic on two numbers. I think of it as two stages, a looping function to collapse many members into one number, then single functions and operators to turn that number into the thing I actually want to see. Keeping those stages separate in my head is what stops formulas from turning into unreadable one-liners.

Custom groups: static or dynamic

A super metric needs something to loop over, and that something is usually a custom group. You build a group two ways. A static group is a fixed list you add objects to by hand. A dynamic group has a membership rule, a tag, a naming pattern, a property, and it recalculates who belongs whenever objects change. The policy attached to the group is what actually applies its thresholds, metrics, super metrics and alerts to the members, so the group and the policy work as a pair.

My default is dynamic, and it is not close. A static group is right for a small, deliberately fixed set, a named list of golden VMs you never want changing silently. For anything that grows, a static group is a slow lie. It looks correct the day you build it and drifts out of true as the environment moves. The chart below is a tenant that grew from 40 to 52 VMs over four weeks. The dynamic group tracked every addition. The static one sat at 40 and under-reported the tenant by a quarter, which is the sort of error that makes a capacity number worthless.

0204060dynamic 52static 40W1W2W3W4tenant VM count, dynamic vs static group
A dynamic group followed the tenant from 40 to 52 VMs while the static group stayed frozen at 40.

Custom properties are the glue

Dynamic groups are only as good as the thing they match on, and the built-in properties do not always carry what your organization cares about. Custom properties fix that. A custom property is metadata you attach to objects yourself, an owner, a tier, a cost center, an application name, which then becomes something a dynamic group rule can match. Set a tenant property on every VM and your dynamic group rule becomes trivial and accurate. Skip it and you are matching on brittle naming conventions that break the first time someone names a VM off-pattern.

The three features work as a chain. Custom properties describe objects, dynamic groups gather objects by those descriptions, and super metrics compute across the gathered set. Get the properties right and the rest falls into place, because membership is driven by real metadata instead of a guess. Get them wrong and every group downstream inherits the error. I spend more time getting properties clean than writing formulas, and it pays back every time the environment changes.

A worked rollup

Here is the one I build most often: tenant oversubscription. I make a dynamic group whose rule is the tenant tag, so it currently holds 52 VMs and will hold more tomorrow without my help. Then a super metric sums provisioned vCPU across the group, which comes to 208 vCPU. I divide that by the 48 physical cores in the cluster serving the tenant, and the super metric reads 4.33 to 1. My comfort line for this workload class is 4 to 1, so the number is telling me the tenant has crept past where I want it. None of that is visible on any single VM. It only exists at the group level, which is exactly what super metrics are for.

Plot that ratio over a day and the story sharpens. It sits near 2 to 1 first thing, climbs through the morning, and peaks at 4.8 to 1 in the early afternoon before easing off. The average would have hidden the peak. The super metric plus a Trend view shows me the window where the tenant is actually overcommitted.

Groups nest, and that is worth using. I keep a dynamic group per tenant and a parent group that gathers all tenants, so the same super metric definition gives me a per-tenant ratio and a site-wide one without rewriting anything. When a new tenant is onboarded with the right custom property, it appears in its own group and rolls into the parent automatically. No formula changes, no manual membership edits, just the number staying correct as the environment grows. That self-maintaining quality is the whole reason to pair super metrics with dynamic groups rather than hand-built lists.

0246comfort 4:14.8:1 at 14:0008:0012:0016:0020:00
The tenant vCPU-to-core ratio over a day, peaking at 4.8 to 1 past the 4 to 1 comfort line.

A conditional with the ternary operator

The formula editor supports a ternary operator, which lets a super metric return one value or another based on a condition. I use it to turn a messy number into a clean flag. For the tenant ratio, a super metric of the form ratio greater than 4 returns 1, otherwise 0, gives me a 0 or 1 signal I can alert on or colour a badge with, instead of asking every dashboard to re-evaluate the threshold. Resource entry aliasing lets you rewrite the objects a formula points at without retyping the whole expression, which keeps a group of similar super metrics consistent. Both are worth knowing. Neither is an excuse to nest three ternaries into a formula only you can read.

What super metrics cost to run

Every super metric is computed on every collection cycle, and cycles run on a five-minute cadence. That is cheap for a handful and not free for a hundred. The figures below are indicative, from watching compute time climb as super metric count grew on one node: ten cost around 20 milliseconds a cycle, fifty around 110, and a hundred around 240. That is not a reason to avoid them. It is a reason to avoid the twenty that duplicate a built-in metric you already collect. Before you write a formula, check whether the number already exists.

010020020ms10 metrics110ms50 metrics240ms100 metricscompute per cycle vs super metric count
Per-cycle compute rises with super metric count, so duplicates of built-ins are pure waste.
Super metricsCompute per cycleRead
10~20 msComfortable
50~110 msFine if each earns its place
100~240 msAudit for duplicates of built-ins
Seen this go wrong: a team inherited 30 super metrics from a departed engineer. About half recomputed metrics VCF Operations already collects natively, one was a three-deep ternary nobody could explain, and collection on that node was slower than its neighbors. We mapped each formula to a question, kept 11, and rewrote the ternary as two simple metrics. The node sped up and the dashboards read the same.
What I’d do: build a super metric only when the number lives at the group level and no built-in already gives it. Pair it with a dynamic group so it maintains itself, keep the formula to something a colleague can read at a glance, and enable it in policy or it does nothing.
Signs it’s healthy: every super metric maps to a real question, dynamic groups track the environment without manual edits, formulas are readable, and per-cycle compute stays modest because you deleted the duplicates.

Where these numbers land

A super metric on its own is just a number. Its value comes from what consumes it. The tenant ratio I built feeds three things at once. It drives a badge on the group so an operator sees the tenant go amber without reading a chart. It backs an alert through the ternary flag, so the on-call is told when the ratio crosses 4 to 1 rather than discovering it later. And it lands in a Trend view on the capacity board from the dashboards part of this series, where it sits next to demand and allocation and makes the overcommit conversation concrete.

That is the pattern worth internalizing. Custom properties, dynamic groups and super metrics are plumbing. They exist to feed the dashboards, alerts and capacity work I covered earlier. When you build a super metric, know which of those it serves before you write the formula, because a number with no consumer is the kind of clutter that shows up in the next audit. If the answer is that it feeds a capacity decision, it has earned its place. If the answer is that it seemed useful once, it has not.

Common questions

My super metric shows no data. Why?
Almost always because it is defined but not enabled in the policy for that object type. Assigning it to an object type is not enough. Enable it in policy, then wait a cycle.

Static or dynamic group?
Dynamic for anything that grows, which is most things. Static only for a small set you deliberately want frozen. A static group of a moving population under-reports the moment something is added.

Do super metrics slow the system down?
A little, and it scales with count because each is computed every five-minute cycle. Ten are trivial, a hundred are measurable. The waste is the ones that duplicate built-ins, so audit for those first.

When should I use the ternary operator?
To turn a threshold into a clean 0 or 1 flag you can alert on or badge with. Keep it to one condition. If you are nesting ternaries, split the logic into simpler metrics instead.

Can I move super metrics between environments?
Yes. Package them with the dashboards and groups that use them into a management pack so the whole picture travels together rather than being rebuilt by hand.

VCF 9 Operations · Part 13 of 18
« Previous: Part 12  |  VCF 9 Operations Complete Guide  |  Next: Part 14 »

References

About The Author


Discover more from Journal of Intelligent Infrastructure – By Dr Pranay Jha

Subscribe to get the latest posts sent to your email.

Leave a Reply

Your email address will not be published. Required fields are marked *

Architect’s Toolkit

About the Author

Dr. Pranay Jha is a Cloud and AI Consultant with 18+ years of experience in hybrid cloud, virtualization, and enterprise infrastructure transformation. He specializes in VMware technologies, multi-cloud strategy, and Generative AI solutions. He holds a PhD in Computer Applications with research focused on Cloud and AI, has published multiple research papers, and has been a VMware vExpert since 2016 and a VMUG Community Leader.

Discover more from Journal of Intelligent Infrastructure - By Dr Pranay Jha

Subscribe now to keep reading and get access to the full archive.

Continue reading