How to monitor storage usage
Where to find aggregate and per-bucket storage usage, how often it refreshes, and what to do if usage isn't updating.
Last updated 20 days ago
How to monitor storage usage
When you'd do this
You want to see how much storage and bandwidth your customers are consuming, spot a runaway tenant, or sanity-check a billing dispute. ImpulseObjects collects usage on a recurring schedule and exposes it in a few places.
Where usage shows up
- Servers tab. Each server row shows aggregate used vs. allocated storage, current tenant count, and last-collected timestamp.
- Customers tab. Each service row shows that customer's storage used, bucket count, and bandwidth used this billing period.
- Service Module tab in WHMCS. Per-customer detail — per-bucket usage, request counts, and bandwidth split by ingress/egress.
- Customer client area. The service's client-area page shows the customer their own usage. They don't need to ask you for routine quota checks.
How often it refreshes
Usage is collected by a periodic task that rides on ImpulseCore's cron runner. It typically runs hourly and pushes a row per service into the usage table. The Servers tab and Customers tab read from that table directly, so they're never more than one cron tick stale.
Spot-checking via SQL
For a quick "biggest tenants by storage" query without opening the UI:
SELECT s.service_id, s.bucket_name, u.bytes_used, u.collected_atFROM mod_impulseobjects_services sJOIN mod_impulseobjects_usage u ON u.service_id = s.idWHERE u.collected_at = ( SELECT MAX(collected_at) FROM mod_impulseobjects_usage WHERE service_id = s.id)ORDER BY u.bytes_used DESCLIMIT 20;For bandwidth over the current billing period, the usage table typically also carries bytes_in and bytes_out columns aggregated daily.
If usage isn't refreshing
The usage refresh depends on ImpulseCore's cron runner. If the Servers tab shows a stale collected_at for every server (not just one), the cron isn't ticking, not the collection task.
Check ImpulseCore's Cron Health. Open Addons then ImpulseCore. The Cron Health table lists every registered task with its last-run timestamp and status. Look for the ImpulseObjects usage-sync task (typically
impulseobjects.usage_syncor similarly named).If the task shows
error, click in for the captured exception. The audit log filtered tomodule=impulseobjectswill have the full trace. Common causes: a storage host became unreachable mid-collection, or the admin proxy bearer token drifted.If the task is
pendingwith a stale timestamp, Core's cron itself isn't firing. Run it manually to test:/opt/plesk/php/8.3/bin/php /path/to/whmcs/modules/addons/impulsecore/cron.phpReplace
/opt/plesk/php/8.3/bin/phpwith your PHP CLI binary. On Plesk:/opt/plesk/php/8.3/bin/php. On cPanel:/opt/cpanel/ea-php83/root/usr/bin/php. On a vanilla LAMP install:/usr/bin/phpor whateverwhich phpreturns. If usage refreshes after a manual run, the system crontab line is missing or wrong. Add the standard Core cron line and future ticks fix themselves.For a single stuck server, check the unreachable server article. One unreachable host won't stop usage collection for the others — but it will leave that one server's row stale until reachability is restored.
Related
Was this helpful?
More in ImpulseMinio
Fix: a customer's bucket is stuck provisioningAdding a storage server to ImpulseObjectsFix: ImpulseObjects license validation failsFix: ImpulseObjects is not appearing in ImpulseCore's modules registered tableStill need help? Ask the team