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(defaultdev-secret)OBS_HOST,OBS_PORT: bind host/port (defaults127.0.0.1:7000)OBS_RELOAD: set to1for reload (dev only)OBS_LOG_LEVEL: uvicorn log level (defaultinfo)OBS_WINDOW_S: metrics window seconds (default120)OBS_MAX_EVENTS: SSE buffer size (default30000)OBS_LOG_FILES: tail access logs (comma-separatedsvc=/path.log)OBS_TAIL_FROM_START: set1to read logs from startOBS_SLOW_MS: slow request threshold (default750)OBS_SAMPLE_RATE: sample rate for normal traffic (default0.05)OBS_TRACE_STORE: max traces stored (default2000)OBS_TRACE_LOGS: max logs per trace (default200)OBS_TRACE_SPANS: max spans per trace (default200)OBS_RECENT_REQS: max recent requests kept (default2000)
Agent config (per app):
collector_url,token,service_nameininstall_observabilityemit_request_span=Trueto 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 subsetlog: level, logger, message, optional tracespan: 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 + APIsrc/stillpoint/agent.py: app-side middleware + log handlersrc/stillpoint/ui/: dashboard assets
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
815c361f5f1a23020e6d22fa7da3dae87c5eb259933dd13cc32ccfe639f66af0
|
|
| MD5 |
63e62be61ad10738acf2caa115830621
|
|
| BLAKE2b-256 |
3331769764f41762b42f8a4837da010607350574359edc0fe0c70d303eef2850
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d826ee27d9f47ce81f4fea7cd91df04a0fe7ee22601b41c747631f1b4c02cf72
|
|
| MD5 |
1304f9c0fecf8c6ad66bcb16fd20cbba
|
|
| BLAKE2b-256 |
1394b491b234c51d6d4cc9f19e58544bd7485fb32c75542f74b4acaac40f970c
|