{
  "id": 17194062,
  "title": "Selfhosted version of Nestjs Observe",
  "url": "https://urgent.news/2026/10/30/selfhosted-version-of-nestjs-observe",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-30T07:34:34.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/montejojorge/selfhosted-version-of-nestjs-observe-2j9f"
  },
  "original_language": "en",
  "account": "The need for a self-hosted alternative to @nestjs/observe became apparent when users of this NestJS monitoring package desired control over their telemetry data. The self-hosted-nestjs-observe project was created to provide a collector and dashboard that can function independently of external services.\n\nImplementing the solution is straightforward. Users simply need to modify the agent's endpoint within their existing codebase. After deploying the collector, which can be done in a matter of minutes, the dashboard is accessible at http://localhost:3000. The process involves creating a new project and application, after which an API key is generated. This key must be copied immediately, as it will only be displayed once.\n\nTo connect the NestJS application to the self-hosted collector, users must export the ObserveModule and ObserveInstrument in their module and configure the endpoint, appKey, appSecret, serviceId, and forwardLogs options. When this is completed, the application will begin sending telemetry data directly to the self-hosted collector, offering the same monitoring capabilities without relying on an external service. For more information, visit the project's GitHub repository.",
  "summary": "The problem If you use @nestjs/observe to monitor your NestJS apps, your telemetry (requests, errors, logs, traces) lives in an external service with plan limits. I wanted the same experience, but running on my own infrastructure. So I built selfhosted-nestjs-observe : a self-hosted collector and dashboard that works with the @nestjs/observe agent. What's inside Drop-in collector : you only…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}