Skip to content

Commit 8428ac8

Browse files
committed
Change the configuration prefix from Common to Base, add the example to the readme and update the version
1 parent 35e14d7 commit 8428ac8

File tree

10 files changed

+31
-20
lines changed

10 files changed

+31
-20
lines changed

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,17 @@ In this example, all logs will be presented in JSON format and the following met
8080
5. `fastapi_requests_in_progress` - Gauge of requests by method and path currently being processed (Gauge)
8181
6. `fastapi_requests_exceptions_total` - Total count of exceptions raised by path and exception type (Counter)
8282

83+
You can also set up a global `REGISTRY` in `MetricsConfig` to support your **global** metrics,
84+
but it is better to use your own non-global registry or leave the default registry
85+
86+
```python
87+
from prometheus_client import REGISTRY
88+
from asgi_monitor.integrations.fastapi import MetricsConfig
89+
90+
metrics_config = MetricsConfig(app_name="fastapi", registry=REGISTRY)
91+
```
92+
93+
8394
And these metrics are available by endpoint `/metrics`,
8495
but you can import `get_latest_metrics` from `asgi_monitor.metrics` to create a custom endpoint.
8596

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
uvicorn
22
fastapi
3-
asgi-monitor @ git+https://github.com/draincoder/asgi-monitor@develop
3+
asgi-monitor
44
opentelemetry-exporter-otlp

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "asgi-monitor"
3-
version = "0.2.0"
3+
version = "0.3.0"
44
description = "Quick and easy monitoring setup for ASGI application"
55
requires-python = ">=3.10"
66
readme = "README.md"

src/asgi_monitor/integrations/fastapi.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
_get_default_span_details,
1313
get_metrics,
1414
)
15-
from asgi_monitor.metrics.config import CommonMetricsConfig
15+
from asgi_monitor.metrics.config import BaseMetricsConfig
1616
from asgi_monitor.metrics.container import MetricsContainer
17-
from asgi_monitor.tracing import CommonTracingConfig
17+
from asgi_monitor.tracing import BaseTracingConfig
1818

1919
__all__ = (
2020
"TracingConfig",
@@ -27,15 +27,15 @@
2727

2828

2929
@dataclass
30-
class MetricsConfig(CommonMetricsConfig):
30+
class MetricsConfig(BaseMetricsConfig):
3131
"""Configuration class for the Metrics middleware."""
3232

3333
metrics_prefix: str = "fastapi"
3434
"""The prefix to use for the metrics."""
3535

3636

3737
@dataclass
38-
class TracingConfig(CommonTracingConfig):
38+
class TracingConfig(BaseTracingConfig):
3939
"""
4040
Configuration class for the OpenTelemetry middleware.
4141
Consult the OpenTelemetry ASGI documentation for more info about the configuration options.

src/asgi_monitor/integrations/starlette.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
from starlette.types import ASGIApp, Receive, Scope, Send
1818

1919
from asgi_monitor.metrics import get_latest_metrics
20-
from asgi_monitor.metrics.config import CommonMetricsConfig
20+
from asgi_monitor.metrics.config import BaseMetricsConfig
2121
from asgi_monitor.metrics.container import MetricsContainer
2222
from asgi_monitor.metrics.manager import MetricsManager
23-
from asgi_monitor.tracing.config import CommonTracingConfig
23+
from asgi_monitor.tracing.config import BaseTracingConfig
2424
from asgi_monitor.tracing.middleware import build_open_telemetry_middleware
2525

2626
__all__ = (
@@ -69,7 +69,7 @@ def _get_path(request: Request) -> tuple[str, bool]:
6969

7070

7171
@dataclass
72-
class TracingConfig(CommonTracingConfig):
72+
class TracingConfig(BaseTracingConfig):
7373
"""
7474
Configuration class for the OpenTelemetry middleware.
7575
Consult the OpenTelemetry ASGI documentation for more info about the configuration options.
@@ -90,7 +90,7 @@ class TracingConfig(CommonTracingConfig):
9090

9191

9292
@dataclass
93-
class MetricsConfig(CommonMetricsConfig):
93+
class MetricsConfig(BaseMetricsConfig):
9494
"""Configuration class for the Metrics middleware."""
9595

9696
metrics_prefix: str = "starlette"

src/asgi_monitor/metrics/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
from prometheus_client import CollectorRegistry
44

5-
__all__ = ("CommonMetricsConfig",)
5+
__all__ = ("BaseMetricsConfig",)
66

77

88
def _build_default_registry() -> CollectorRegistry:
99
return CollectorRegistry(auto_describe=True)
1010

1111

1212
@dataclass
13-
class CommonMetricsConfig:
13+
class BaseMetricsConfig:
1414
"""Configuration class for the Metrics middleware."""
1515

1616
app_name: str
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from .config import CommonTracingConfig
1+
from .config import BaseTracingConfig
22

3-
__all__ = ("CommonTracingConfig",)
3+
__all__ = ("BaseTracingConfig",)

src/asgi_monitor/tracing/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from dataclasses import dataclass, field
44
from typing import Any, Callable
55

6-
__all__ = ("CommonTracingConfig",)
6+
__all__ = ("BaseTracingConfig",)
77

88

99
from opentelemetry.metrics import Meter, MeterProvider
@@ -13,7 +13,7 @@
1313

1414

1515
@dataclass
16-
class CommonTracingConfig:
16+
class BaseTracingConfig:
1717
"""
1818
Configuration class for the OpenTelemetry middleware.
1919
Consult the OpenTelemetry ASGI documentation for more info about the configuration options.

src/asgi_monitor/tracing/middleware.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
from opentelemetry.instrumentation.asgi import OpenTelemetryMiddleware
66
from opentelemetry.util.http import get_excluded_urls
77

8-
from asgi_monitor.tracing.config import CommonTracingConfig
8+
from asgi_monitor.tracing.config import BaseTracingConfig
99

1010

11-
def build_open_telemetry_middleware(app: Any, config: CommonTracingConfig) -> OpenTelemetryMiddleware:
11+
def build_open_telemetry_middleware(app: Any, config: BaseTracingConfig) -> OpenTelemetryMiddleware:
1212
return OpenTelemetryMiddleware(
1313
app=app,
1414
client_request_hook=config.client_request_hook_handler,

tests/unit/tracing/test_middleware.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from opentelemetry.instrumentation.asgi import OpenTelemetryMiddleware
55
from opentelemetry.sdk.trace import TracerProvider
66

7-
from asgi_monitor.tracing import CommonTracingConfig
7+
from asgi_monitor.tracing import BaseTracingConfig
88
from asgi_monitor.tracing.middleware import build_open_telemetry_middleware
99

1010

@@ -17,7 +17,7 @@ def default_extractor(scope: Any) -> tuple[str, dict[str, Any]]:
1717
return "test", {"test": "test"}
1818

1919
# Act
20-
config = CommonTracingConfig(
20+
config = BaseTracingConfig(
2121
exclude_urls_env_key="FASTAPI",
2222
scope_span_details_extractor=default_extractor,
2323
tracer_provider=tracer,

0 commit comments

Comments
 (0)