Observability Event Volume Calculator
Estimate observability storage from event volume and retention with compression, replica copies and reserve plus optional quota headroom.| Measure | Value | Calculation basis | Copy |
|---|---|---|---|
| {{ row.measure }} | {{ row.value }} | {{ row.basis }} |
{{ tableExportAnnouncement }}
| Guardrail | Current reading | Operator action | Copy |
|---|---|---|---|
| {{ row.guardrail }} | {{ row.reading }} | {{ row.action }} |
{{ tableExportAnnouncement }}
{{ chartExportAnnouncement }}
Introduction:
Telemetry becomes a storage problem long before it looks large one event at a time. A log record may be only a few hundred bytes and a span only a few kilobytes, yet a steady stream multiplied across every second and every retained day can grow into terabytes. Capacity planning starts with three questions: how many events arrive, how many bytes each event contributes, and how long those bytes remain.
The word event needs a stable meaning. It may be one log entry, trace span, metric sample, or normalized record, but the rate and average size must describe the same unit. Measuring the rate at an application boundary while measuring byte size after a backend has added labels can double-count some data and miss other data. A representative sample from the actual stream is more useful than a nominal payload size from documentation.
| Factor | What it represents | Common planning mistake |
|---|---|---|
| Event rate | Average records produced per unit of time | Using a quiet-hour rate for a bursty service |
| Event size | Measured bytes for one event before the stated compression saving | Mixing raw payload bytes with already-compressed stored bytes |
| Retention | Days kept before deletion or tiering | Ignoring replays, backfills, or delayed deletion |
| Stored copies | Primary data plus replicas | Treating a two-copy policy as one copy |
| Overhead and reserve | Indexes, metadata, allocation slack, and uncertainty allowance | Using reserve as a substitute for measuring real overhead |
Compression, replicas, indexing, and reserve affect different stages of the estimate. Compression reduces the retained primary data. The stored copy factor then duplicates that compressed amount, index overhead is added to the replicated data, and reserve is applied last. Changing that order changes the answer.
A storage estimate is a planning baseline, not a promise. Sampling policies, schema changes, traffic growth, unusually large error events, shard behavior, and vendor billing rules can all move real usage. The safest comparison uses observed rates and stored bytes over a representative interval, then keeps enough headroom for the peaks that the average hides.
How to Use This Tool:
Start with measurements from one clearly defined telemetry stream and keep the rate and byte-size basis consistent.
- Enter the Event rate and its time unit, then enter the measured Average event size in bytes, KiB, or MiB per event.
- Set the Retention period, Stored copy factor, and Compression savings. Use 0% compression savings when the event size already represents compressed stored bytes.
- Open Advanced when index overhead or uncertainty needs explicit allowance. Keep either percentage at 0% when it is already included in the measured event size or storage figure.
- Add a Storage quota only when there is a real capacity boundary to compare. A zero quota leaves the quota check unconfigured.
- Read Stored volume first, then compare Quota use and Quota headroom with an observed backend measurement before committing capacity.
Interpreting Results:
Stored volume is the full estimate after compression, copies, index overhead, and reserve. Stored per day is useful for retention runway because it shows how much capacity one additional retained day consumes under the same assumptions.
- Within means estimated storage is below 80% of the configured quota.
- Watch begins at quota use greater than or equal to 80% and continues through 100%.
- Over means estimated storage is greater than the quota; negative headroom is the shortfall.
- Not configured means the quota was left at zero, not that capacity is unlimited.
Technical Details:
The calculation normalizes event rate to events per second and event size to bytes. Binary units are used for size and quota conversion: one KiB is 1,024 bytes, one GiB is 1,024 cubed bytes, and each larger unit is another factor of 1,024.
Formula Core:
Required storage is the raw retained byte volume multiplied by the remaining fraction after compression, the stored copy factor, index overhead, and reserve.
| Symbol | Meaning | Unit |
|---|---|---|
| S | Required stored volume | bytes |
| r | Normalized event rate | events per second |
| b | Average event size | bytes per event |
| d | Retention period | days |
| c | Compression savings | percent |
| k | Stored copy factor | ratio |
| i | Index overhead | percent |
| v | Reserve allowance | percent |
For 60 events per minute at 1 KiB each, two retained days produce 176,947,200 raw bytes. With 50% compression savings, two stored copies, 25% index overhead, and 20% reserve, the result is 265,420,800 bytes, about 253.1 MiB. Against a 1 GiB quota, that is about 24.7% use.
Rule Core:
Quota status is evaluated only when quota is greater than zero. Stored volume greater than quota is Over; otherwise use at or above 80% is Watch; all lower configured values are Within. The comparison uses full-precision bytes, while displayed sizes are rounded for readability.
Compression savings may range from 0% through 100%. The 100% endpoint mathematically reduces retained payload bytes to zero, but it is a model boundary rather than a realistic guarantee. Event rate and event size must be greater than zero, retention is limited to 1 through 3,650 whole days, and the stored copy factor ranges from 1 through 20.
Worked Example:
Measured platform-log stream
A platform team measures 60 records per minute at 1 KiB per record and keeps two days. Its backend reports 50% compression savings, two stored copies, and about 25% index overhead; the team adds 20% reserve. The estimate is about 253.1 MiB, leaving roughly 771 MiB of a 1 GiB quota. The useful follow-up is to compare that 126.6 MiB daily growth with an observed stored-byte change over a representative day.