Database Health Monitor
by TechnoVision · Odoo App
Database size, the largest table, failing scheduled actions, mail that is not going out, errors in the log, and whatever you nominate in your own models. Every probe runs in its own savepoint with a five-second timeout, so the thing that goes wrong is recorded rather than taking the monitoring down with it.
One-off licence per Odoo instance. The store bills in its own base currency, so checkout may differ by a few cents. That is the add-on price. Installation and support are optional and priced separately.
On the Odoo Apps Store for Odoo 18.0
Security Center
Live82
Score
1.2k
Events / 24h
3
Alerts
Export volume · 14 days
Unusual export detected
res.partner · 4,812 rows · outside business hours
Illustrative UI. Product screenshots to be dropped into this frame.
What it does
No source registered, no agent reporting, a probe that failed - all read unknown, and the status endpoint answers 503 for it. A dashboard that shows green because nothing is being watched is worse than no dashboard, because somebody will believe it.
Each runs in its own savepoint with a five-second statement timeout, and anything that goes wrong is stored as an unknown reading carrying the error text. The failure this avoids: a monitoring cron that raises gets deactivated by Odoo after a week, and the first symptom is silence - which is what a healthy system looks like too.
Giving an ERP process the ability to shell out is a larger problem than not knowing the disk is full. Free disk, backup age and filestore size arrive from a small agent through a token-protected endpoint, and there is no fallback guess.
No VACUUM, no reactivating a cron, no clearing a queue. A monitor that also acts is two systems whose failures compound, and one bad remediation costs you the fix and your trust in the monitoring at the same time.
Database size is 60 GB tells you nothing. The detail lists the largest tables with their indexes and TOAST, which tells you where it went. Capped at ten rows, because a monitoring detail that needs paging is a report.
GET /technovision/health/status returns 503 for critical or unknown and 200 otherwise. With details off it reveals one severity and one count - enough to monitor, not enough to tell an attacker which integration is failing. The token goes in an Authorization header, never a query string.
Pricing & Services
The add-on licence is the product. Installation and a support plan are separate, optional, and neither is added to anything unless you choose it. The licence is bought into your own account, so you own it outright whether or not you ever buy a service from us.
The module, bought from the Odoo Apps Store into your own account.
$39
one-off, per Odoo instance · paid to the Odoo Apps Store
Thresholds are set from your own readings, not from defaults, or every check is noise.
$249
one-off · paid to TechnoVision
Twelve months of updates and help with the module, on top of what every licence already includes.
$150
per 12 months · paid to TechnoVision
A support plan adds to what you already have. It never replaces it: defect fixes and help with the module stay free for every licence holder, plan or no plan.
Supported: Odoo 18, Community and Enterprise. Licensed per Odoo instance, with no user limit and no expiry. Prices exclude any tax that applies where you are, and we tell you before you pay if any is due.
Demo
Recorded from a running Odoo 18 with real records. No slides, no mock-ups, and nothing sped up.
Screenshots
7 captures of the shipped product: thirteen checks, live, unknown, stated rather than hidden, a detail you can act on, one check, explained, two weeks of readings, what an agent reported, your own models, watched.

Thirteen checks, live

Unknown, stated rather than hidden

A detail you can act on

One check, explained

Two weeks of readings

What an agent reported

Your own models, watched
How it works
Thirteen arrive configured. Look at the readings you actually get before setting thresholds - a 60 GB database is unremarkable on one server and an emergency on another.
Three checks watch models you nominate: failures, backlog and credential expiry. They read unknown until you tell them what to look at, which is the honest answer rather than a green tick.
One switch, one bearer token. 503 when something is critical or unknown.
A small script POSTs six named facts. Until then those checks read unknown rather than guessing.
FAQ
No, that is the intended state. Three checks watch models you nominate and two need a host agent. Unknown means nobody can answer the question yet - it is reported as its own state rather than as zero, because a green dashboard nobody is watching is the failure this module exists to avoid.
Because it never runs an operating-system command. That capability is the one an attacker who reaches Odoo wants most, and a monitoring module is a poor reason to hand it over. A small agent posts the figure to a token-protected endpoint instead.
No. Every probe runs in its own savepoint with a five-second statement timeout, and a failure is caught and stored as an unknown reading with its error text.
No. No VACUUM, no reactivating a cron, no clearing a queue. A monitor that also acts is two systems whose failures compound.
No. It reports what an agent says about their age and size. It does not take them and it cannot verify one restores - only a restore proves a restore.
Prometheus text cannot avoid naming every check you have. That is fine on a private network and not something to hand to the internet. The status route is the one designed to be exposed.
It clears the cooldown so the next alert can arrive, and deliberately does not change the severity. Seeing a problem is not fixing one, and a dashboard that goes green because somebody clicked acknowledge is a dashboard that lies.
The module itself, for one Odoo instance, with no user limit and no expiry; every 18.0 release of the module, including security fixes; the module documentation, in the module and on this site; and defect fixes and help with configuration, at no extra cost and with no support plan required. It is a one-off licence for one Odoo instance, with no user limit and no expiry. It does not include installation on your instance, and configuration against your data; changes to the module for your own requirements; migration of the module or your data to another Odoo series; and work on your Odoo, your server, your network, or on other vendors’ modules.
No, and it is not hidden in the price either. Installation and configuration is a separate, optional service at $249 one-off. It covers remote installation on your instance; configuration walked through with you, against your own data; and compatibility verification against your Odoo version and edition. If you or your partner install Odoo modules already, buy the licence on its own and skip it — most buyers of a module this size do.
Odoo 18, on Community and Enterprise. We do not claim a series until there is a branch for it, its tests pass on that series, and somebody has run it there — so the list on this page is what is actually supported rather than what is planned.
Twelve months of module updates, including security fixes; configuration support by email; priority handling: your ticket is looked at before unpaid enquiries; and help reproducing and reporting a defect, and a fix or a workaround. It runs for twelve months at $150 and is bounded by stated limits rather than by the word "reasonable": Up to 10 support requests in the twelve months; up to 4 hours of remote assistance in total; one Odoo minor-version upgrade of the module, within the same series; response within 2 business days, Sunday to Thursday, Cairo time; and covers the module. It does not cover your Odoo, your server, your network, or work on other modules.. The plan runs for 12 months from the day it starts and then stops. It renews only if you ask us to renew it — nothing renews automatically and no card is stored. It does not cover your Odoo, your server, your network, your backups, or other vendors’ modules; custom development or changes to how the module behaves; migration to another Odoo series — 18.0 to 19.0 is a project, not a ticket; on-site attendance, and work outside the hours below; and anything an external vendor charges for.
No, and this is the line worth being clear about. Defect fixes, at no charge, for the life of the 18.0 series; help when the module does not behave as its description says it does; answers to configuration questions about the module itself; and security fixes, released to everyone whether or not they hold a support plan — all of that comes with the licence, for every buyer, at no extra cost and whether or not a plan is ever bought. A paid plan adds updates, priority over unpaid enquiries and an allowance of assistance hours on top. It never takes anything away.
No, in any of the three options. A change to how a module behaves, a migration between Odoo series, and connecting a system we do not publish a connector for are each their own piece of work, quoted on their own. They are listed as exclusions on the cards rather than left to be discovered: they are the three things buyers most often assume are covered.
Use the buttons in the Pricing & Services section above. Both have a price, so the button takes you to a short form, shows you the total and what it covers before you commit, and creates a numbered order we reply to. No card details are taken on this site, and nothing is added to anything unless you choose it.
Install from Odoo Apps, or talk to us about a guided rollout across multiple companies.