Alerts
Alerts surface operational conditions in Tagnet that need attention: an integration endpoint that has stopped responding, a delivery queue backing up, deliveries piling up as dead letters. An alert is not a log line for something that already happened. It is the current status of a problem, and it stays open for as long as the problem does.
An alert is a condition, not an event
The distinction matters because of how Tagnet handles repeats. If a connection fails once, that is one alert. If it fails a thousand times in a row before anyone notices, that is still one alert, with an occurrence count of a thousand, not a thousand separate rows. Tagnet keeps exactly one open alert per distinct condition (its alert type together with the specific thing it is about, such as one connection profile) and folds every new occurrence into it: the occurrence count goes up, and the "last occurred" timestamp moves forward.
Some alert types are raised by a periodic check rather than by a failure: Queue backing up, Consumer stalled, Dead letters aging, the System Health types other than Audit write failed and Database was unreachable, and the Device types. Their check re-raises the alert on every pass while the condition holds, so a count would only say how many times it was checked, not how many things are affected. For these, notifications read "Ongoing since" with the time Tagnet first detected the condition, the alert's detail page leaves out the occurrence count, and the Alerts list shows a dash in its place. How many things are affected, when it matters, is in the alert's own detail text.
This also means an open alert's details reflect the condition as it stands right now, not as it stood when the alert first opened. If a condition escalates while its alert is open (occasional failures turning into constant ones, say), the title and detail text update to the latest occurrence's wording, and severity moves in one direction: it rises immediately when the condition worsens, and an escalation past what you were already notified about re-notifies the routed audience right away, even on an acknowledged alert. Severity never moves back down while the alert stays open, so the audience a Critical escalation brought in keeps hearing about it until it actually resolves.
Once an alert resolves, the slate is clean: if the same condition happens again later, it opens as a fresh alert with its own occurrence count starting at 1, not a reopening of the old one.
Where alerts come from today
Three areas of Tagnet raise alerts in this release: the Integration Outbox, the system health monitor, and the device monitor that watches your readers.
Integration Outbox
The Integration Outbox is Tagnet's durable delivery system for outbound HTTP calls to your ERP, WMS, or other external systems. Six conditions can raise an alert there:
| Alert type | Severity | What it means |
|---|---|---|
| Endpoint unavailable | Warning | Repeated delivery failures to one connection. Resolves itself on the next successful delivery. |
| Authentication failure | Critical | Token acquisition or authorization is failing for a connection and will not self-heal. |
| Deliveries dead-lettered | Warning | Deliveries exhausted their retries and need requeuing or abandoning. Resolves itself once the connection has no dead letters left. |
| Queue backing up | Warning | The oldest waiting delivery is older than the configured age. |
| Consumer stalled | Critical | Deliveries are queued but nothing is sending them. |
| Dead letters aging | Critical | Dead-lettered deliveries have sat unhandled for days; retention will eventually purge them. Requeue or abandon them to resolve it. |
System Health
Tagnet watches the installation itself and raises these conditions:
| Alert type | Severity | What it means |
|---|---|---|
| Storage running low | Warning, escalating to Critical | Free disk space fell below the threshold: the database volume on SQLite installs, the application server's volume on SQL Server. |
| Memory pressure | Warning, escalating to Critical | The process is close to the memory available to it. |
| CPU sustained high | Warning | The Tagnet process held the CPU near its limit across several samples. |
| Request processing backed up | Warning | Work is queuing inside the app faster than it can be processed. |
| Database near its size limit | Warning, escalating to Critical | The database is approaching its size quota; writes fail when it is reached. |
| Background job failed | Warning | A background job's most recent run failed; retention failing silently means unbounded growth. |
| Email delivery failing | Warning | Outbound emails exhausted their retries and sit dead-lettered. |
| Audit write failed | Warning | A change succeeded but its operational audit entry could not be saved. |
| Database was unreachable | Warning, or Critical from five minutes | Tagnet could not reach its database for a while and has recovered. Resolves itself once sent. |
Devices
Tagnet watches every active reader and raises these conditions, so a reader that goes quiet is reported instead of discovered days later when inventory stops moving:
| Alert type | Severity | What it means |
|---|---|---|
| Reader offline | Critical | An active reader has not checked in for longer than the offline threshold (10 minutes by default). |
| Antenna disconnected | Warning | An antenna port that was connected has reported disconnected for longer than the antenna threshold (5 minutes by default). |
Reader offline is Critical, so the seeded catch-all rule sends it to administrators with no setup. Antenna disconnected is a Warning: it shows in the Alerts inbox but notifies nobody until a routing rule covers it. To be told about antenna problems, add the Devices category to a rule in Alert Routing, or edit the catch-all to include it.
More areas of Tagnet will raise alerts through this same system as the product grows, so what you see in the inbox and in Alert Routing's type picker will expand over time without changing how alerts, routing, or the inbox work.