Coverage for /usr/local/lib/python3.10/site-packages/opal_common-0.0.0-py3.10.egg/opal_common/monitoring/metrics.py: 68%
25 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 11:54 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 11:54 +0000
1import os
2from typing import Optional
4import datadog
5from loguru import logger
8def configure_metrics(
9 enable_metrics: bool, statsd_host: str, statsd_port: int, namespace: str = ""
10):
11 if not enable_metrics: 11 ↛ 15line 11 didn't jump to line 15 because the condition on line 11 was always true
12 logger.info("DogStatsD metrics disabled")
13 return
14 else:
15 logger.info(
16 "DogStatsD metrics enabled; statsd: {host}:{port}",
17 host=statsd_host,
18 port=statsd_port,
19 )
21 if not namespace:
22 namespace = os.environ.get("DD_SERVICE", "")
24 namespace = namespace.lower().replace("-", "_")
25 datadog.initialize(
26 statsd_host=statsd_host,
27 statsd_port=statsd_port,
28 statsd_namespace=f"permit.{namespace}",
29 )
32def _format_tags(tags: Optional[dict[str, str]]) -> Optional[list[str]]:
33 if not tags:
34 return None
36 return [f"{k}:{v}" for k, v in tags.items()]
39def increment(metric: str, tags: Optional[dict[str, str]] = None):
40 datadog.statsd.increment(metric, tags=_format_tags(tags))
43def decrement(metric: str, tags: Optional[dict[str, str]] = None):
44 datadog.statsd.decrement(metric, tags=_format_tags(tags))
47def gauge(metric: str, value: float, tags: Optional[dict[str, str]] = None):
48 datadog.statsd.gauge(metric, value, tags=_format_tags(tags))
51def event(title: str, message: str, tags: Optional[dict[str, str]] = None):
52 datadog.statsd.event(title=title, message=message, tags=_format_tags(tags))