Skip to content
Obscenter

Docs Start

What is Obscenter

Obscenter is a self-hosted observability platform: real user monitoring, session replay, server monitoring, traces, logs and automatic problem detection.

Obscenter watches a web application from the visitor's browser down to the machine that answers it, and opens a ticket by itself when something stops being normal. You can run it on your own server, or use the hosted install at obscenter.site. It is the same software either way.

What it measures

There are four kinds of source, and each one reports to the same collector:

  • A browser tag. One script tag on your website. It measures page loads, Core Web Vitals, the resources each page pulled in, the API calls the page made, JavaScript errors, clicks, rage clicks and scrolling. It can also record sessions for replay. See Install the tag on a website.
  • A mobile agent. One file you add to a React Native or Expo app. It reports screens, cold starts, taps, failed requests and crashes. See React Native and Expo apps.
  • A server agent. One command on a Linux or Windows machine. It reports processor, memory, disks, network, processes, services, logs and installed packages. On Linux it can also trace Node.js services from inside the process: requests, database queries, outgoing calls and sampled CPU frames. See Install the server monitoring agent.
  • Devices. A microcontroller such as an ESP32 posts a small JSON object over HTTP. Nothing is installed on it. See Connect an IoT device.

Other tools can report too. OpenTelemetry traces arrive over OTLP/HTTP, from an SDK directly or through an OpenTelemetry Collector (OpenTelemetry), and a Sentry organisation can be pulled in (Sentry integration).

One story from the click to the query

The parts are linked by measured evidence, not by name matching. When a page calls your API, the browser tag sends a W3C traceparent header. The server agent picks up the same trace id on the other side. The page load, the request that served it and the query underneath therefore become one record. When the page itself is rendered on the server, the trace id comes back on the response, so that case is linked too.

The same rule holds across the product: an aggregate number leads to the sessions behind it, a slow request leads to its trace, and a trace leads to the process and the machine. The topology draws a line between two things only when a measurement connects them.

Problems, not alerts

Every two minutes a detection engine compares what is happening now with what is normal for that thing over the last three days. A ticket opens once, collects evidence while the fault lasts, and closes by itself when the measurement has been normal for 30 minutes. Each ticket names its likely cause from data that is already stored: the machine underneath, the services it waited on, where the time went, what it threw, and what else broke at the same moment. See How problem detection works.

A language model is optional. By default it never decides whether something is wrong. If you configure one, it can write a summary of a ticket on request, answer questions in the AI assistant, or run as a step in a workflow. The install's administrator can also switch on two AI modes for one organisation at a time. The model then reads each new ticket before it alerts, and may open critical tickets of its own. A critical ticket always alerts. See AI modes.

What else is in the box

How it is built

The server is a single Node.js program with zero npm dependencies. It stores everything in one SQLite database, using Node's built-in node:sqlite and node:http. It needs Node 22.5 or newer and has no build step. The two client libraries, Leaflet for the map and rrweb for session replay, are vendored and served by the install itself, never from a CDN. See Self-hosting Obscenter.

Machines installed before agent 0.96.0 move to the current names on their own at their next self-update: the service, the directory, the command and the drop-ins it wrote. They keep their key, their settings and their history, and nothing has to be re-run. Settings written under older names keep working.

Where to go next

Start with Getting started. It takes you from an empty account to the first visitor and the first machine reporting.