LensHub
Get startedlenshub.ai
Self-hosting

Monitoring

What to watch, and what the signals mean.

Health endpoints

PathAnswers
/healthzIs the process alive
/readyzCan it reach the database

Use /healthz to decide whether to restart, /readyz to decide whether to send traffic.

Worth alerting on

/readyz failing — the database is unreachable. Everything is broken.

A connector stuck in error — visible per connector. Usually an expired credential, and it fails quietly from a user's point of view: search simply stops returning anything new from that source.

Disk. The database grows with your content. Running out is the most common self-inflicted outage.

Job backlog growing without draining — indexing is not keeping up. Raise WORKER_CONCURRENCY, or find out what is failing repeatedly.

Logs

docker compose logs -f api worker

Structured JSON on the API. The worker logs each job it runs, which is where to look when a sync misbehaves.

In the interface

Analytics shows content counts by source, indexing progress and recent activity. It is the fastest way to answer "did that sync actually work".

Normal load

Steady state is light: connectors sync on their schedule, and searches are cheap. Two moments spike:

  • A first sync of a large source
  • Re-indexing after a model change

Both are one-off, and both end.

On this page