Skip to content
GitHub

Quickstart

Terminal window
uv add lexigram-monitor

For production monitoring, install your backend extra:

Terminal window
# Prometheus metrics
uv add "lexigram-monitor[prometheus]"
# OpenTelemetry tracing (OTLP)
uv add "lexigram-monitor[otel]"
# System metrics (CPU, memory)
uv add "lexigram-monitor[system]"
# All extras
uv add "lexigram-monitor[all]"
import asyncio
from lexigram import Application, LexigramConfig
from lexigram.monitor import MonitorProvider
from lexigram.monitor.noop import NoOpMetricsBackend
async def main():
config = LexigramConfig.from_yaml("application.yaml")
app = Application(name="my-app", config=config)
app.add_provider(MonitorProvider(backend=NoOpMetricsBackend()))
async with app.boot():
# Create and increment a counter
provider = await app.container.resolve(MonitorProvider)
counter = provider.create_counter("requests_total", "Total requests")
counter.increment()
counter.increment(5)
print(f"Count: {counter.get_count()}")
# Record an HTTP request
provider.record_request("GET", "/api/users", 0.125, 200)
# Read health
health = await provider.health_check()
print(f"Status: {health.status}")
asyncio.run(main())

Add MonitorProvider to your Application. The provider auto-discovers MonitorConfig from the monitor: section of your YAML config:

from lexigram.monitor import MonitorProvider
from lexigram.monitor.config import MonitorConfig
# In-memory (development / testing)
app.add_provider(MonitorProvider(backend=NoOpMetricsBackend()))
# From config — reads LEX_MONITOR__* env vars
provider = MonitorProvider.from_config(MonitorConfig())
app.add_provider(provider)

Or use the declarative MonitorModule:

from lexigram.monitor import MonitorModule
from lexigram.monitor.backends.prometheus import PrometheusBackend
app.add_module(MonitorModule.configure(backend=PrometheusBackend()))
  • MonitorProvider registered singletons for MetricsCollectorProtocol, TracerProtocol, and HealthCheckRegistryProtocol
  • The @traced and @metered decorators now resolve real implementations from the container
  • health_check() returns component status with backend type and metric count
  • Guide — mental model, core concepts, best practices
  • Configuration — every config key with defaults and env vars
  • How-Tos — common recipes