Observability Plugin API Reference¶
Structum Observability (structum-observability)¶
Structum Observability provides unified tools for structured logging (JSON/Console), Prometheus metrics, and distributed tracing.
🚀 Installation¶
pip install structum-observability
📚 Full Documentation¶
Documentation, API Reference, and Guides: 👉 https://structum.pages.dev/reference/observability
✨ Key Features¶
Structured Logging: JSON logs ready for ELK/Loki via
structlog.Metrics: Native Prometheus metrics exposure.
Context Awareness: Automatic log enrichment with Context ID and Tracing ID.
Observability Plugin Package¶
Structum Observability Plugin.
Implementation of logging and metrics interfaces using Structlog and contextvars.
-
structum_lab.plugins.observability.configure_structlog(log_level: str =
'INFO', json_logs: bool =True)[source]¶ Configures the global structlog stack.
- class structum_lab.plugins.observability.StructuredLogger(name: str)[source]¶
Bases:
objectWrapper accessible for manual instantiation if needed.
However, the preferred way is using get_logger(). This class is merely a compatibility shim or provider access point.
- bind(**kwargs: Any) StructuredLogger[source]¶
Bind context variables to a new logger instance.
- class structum_lab.plugins.observability.MetricsCollector[source]¶
Bases:
objectRaccolta metriche in-memory (simil-Prometheus/StatsD).
-
get_counter(metric: str, labels: dict[str, str] | None =
None) int[source]¶ Get the current value of a counter (for introspection).
-
get_counter(metric: str, labels: dict[str, str] | None =
- structum_lab.plugins.observability.track_operation(operation_name: str)[source]¶
Decorator per tracciare durata e successo/errore di un’operazione.
-
structum_lab.plugins.observability.initialize(log_level: str =
'INFO', json_logs: bool =True)[source]¶ Manual initialization function.
Metrics¶
In-Memory Metrics Collection.
Provides a simple in-memory metrics collector for development and testing, along with a track_operation decorator for automatic timing.
- class structum_lab.plugins.observability.metrics.MetricsCollector[source]¶
Bases:
objectRaccolta metriche in-memory (simil-Prometheus/StatsD).
-
increment(metric: str, labels: dict[str, str] | None =
None) None[source]¶ Increment a counter metric.
-
increment(metric: str, labels: dict[str, str] | None =
- structum_lab.plugins.observability.metrics.track_operation(operation_name: str)[source]¶
Decorator per tracciare durata e successo/errore di un’operazione.
Observability Core¶
Structlog Integration for Structum.
This module configures the structlog library to provide enterprise-grade structured logging, compliant with the LoggerInterface protocol.
-
structum_lab.plugins.observability.observability.configure_structlog(log_level: str =
'INFO', json_logs: bool =True)[source]¶ Configures the global structlog stack.
- class structum_lab.plugins.observability.observability.StructuredLogger(name: str)[source]¶
Bases:
objectWrapper accessible for manual instantiation if needed.
However, the preferred way is using get_logger(). This class is merely a compatibility shim or provider access point.
- bind(**kwargs: Any) StructuredLogger[source]¶
Bind context variables to a new logger instance.
- structum_lab.plugins.observability.observability.get_structlog_logger(name: str) LoggerInterface[source]¶
Factory function to replace structum_lab.logging.get_logger.
Prometheus Backend¶
Prometheus Metrics Implementation.
Provides a concrete implementation of MetricsInterface using prometheus_client.
-
class structum_lab.plugins.observability.prometheus.PrometheusMetrics(namespace: str =
'structum')[source]¶ Bases:
MetricsInterfacePrometheus implementation of MetricsInterface.
-
__init__(namespace: str =
'structum')[source]¶ Initialize the Prometheus metrics exporter.
- Parameters:¶
- Raises:¶
ImportError – If prometheus_client is not installed.
-
increment(name: str, value: float =
1.0, tags: dict[str, str] | None =None) None[source]¶ Increment a counter.
-
gauge(name: str, value: float, tags: dict[str, str] | None =
None) None[source]¶ Set a gauge value.
-
__init__(namespace: str =