Skip to main content

No project description provided

Project description

stillpoint

Lightweight local observability: a FastAPI collector with a live dashboard for requests, logs, spans, and quick correlation by trace/request IDs.

Install (PyPI)

python -m pip install -U stillpoint

Quick start

1) Run the collector

stillpoint

Open http://127.0.0.1:7000/.

2) Instrument a FastAPI app

from stillpoint.agent import install_observability

client = install_observability(
    app_instance,
    collector_url="http://127.0.0.1:7000/ingest",
    token="dev-secret",
    service_name="my-api:8000",
    emit_request_span=True,  # optional single span per request
)

3) Tail access logs instead (no code changes)

set OBS_LOG_FILES=serviceA=/path/to/access.log
set OBS_TAIL_FROM_START=1
stillpoint

Usage scenarios

Single service + live UI

Run the collector, instrument your API, then browse the dashboard to:

  • see live request volume, error rates, and p95 latency
  • view recent requests and open trace details
  • export a trace bundle as JSON

Multiple services

Point multiple services at the same collector URL with different service_name values. The dashboard will tag and filter by service.

Access-log only mode

When code changes are not possible, tail access logs via OBS_LOG_FILES. Note: spans and per-request logs are not available unless emitted by the app.

Configuration

Collector environment variables:

  • OBS_TOKEN: bearer token for /ingest (default dev-secret)
  • OBS_HOST, OBS_PORT: bind host/port (defaults 127.0.0.1:7000)
  • OBS_RELOAD: set to 1 for reload (dev only)
  • OBS_LOG_LEVEL: uvicorn log level (default info)
  • OBS_WINDOW_S: metrics window seconds (default 120)
  • OBS_MAX_EVENTS: SSE buffer size (default 30000)
  • OBS_LOG_FILES: tail access logs (comma-separated svc=/path.log)
  • OBS_TAIL_FROM_START: set 1 to read logs from start
  • OBS_SLOW_MS: slow request threshold (default 750)
  • OBS_SAMPLE_RATE: sample rate for normal traffic (default 0.05)
  • OBS_TRACE_STORE: max traces stored (default 2000)
  • OBS_TRACE_LOGS: max logs per trace (default 200)
  • OBS_TRACE_SPANS: max spans per trace (default 200)
  • OBS_RECENT_REQS: max recent requests kept (default 2000)

Agent config (per app):

  • collector_url, token, service_name in install_observability
  • emit_request_span=True to get a default request span

Data points collected

Events emitted and stored:

  • req_start / req_end: method, path/route, status, duration, client info, trace_id, span_id, request_id, plus headers subset
  • log: level, logger, message, optional trace
  • span: name, duration, optional metadata (type, db, http, cache)
  • gauge: used for inflight counts when emitted by the app

Derived metrics:

  • RPS, error rates, status buckets (2xx/3xx/4xx/5xx)
  • per-endpoint p50/p95/p99 and tail latency thresholds
  • recent requests list and slowest individual traces

Local development

Run from source (no install):

python -m uvicorn stillpoint.collector_app:app --app-dir src --host 127.0.0.1 --port 7000 --reload

Tests:

python -m pytest

Code structure:

  • src/stillpoint/collector_app.py: FastAPI collector + metrics + API
  • src/stillpoint/agent.py: app-side middleware + log handler
  • src/stillpoint/ui/: dashboard assets

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stillpoint-0.1.2.tar.gz (25.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stillpoint-0.1.2-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

File details

Details for the file stillpoint-0.1.2.tar.gz.

File metadata

  • Download URL: stillpoint-0.1.2.tar.gz
  • Upload date:
  • Size: 25.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for stillpoint-0.1.2.tar.gz
Algorithm Hash digest
SHA256 815c361f5f1a23020e6d22fa7da3dae87c5eb259933dd13cc32ccfe639f66af0
MD5 63e62be61ad10738acf2caa115830621
BLAKE2b-256 3331769764f41762b42f8a4837da010607350574359edc0fe0c70d303eef2850

See more details on using hashes here.

File details

Details for the file stillpoint-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: stillpoint-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 22.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for stillpoint-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d826ee27d9f47ce81f4fea7cd91df04a0fe7ee22601b41c747631f1b4c02cf72
MD5 1304f9c0fecf8c6ad66bcb16fd20cbba
BLAKE2b-256 1394b491b234c51d6d4cc9f19e58544bd7485fb32c75542f74b4acaac40f970c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page