Skip to content

Commit

Permalink
[pre-commit.ci] auto fixes from pre-commit.com hooks
Browse files Browse the repository at this point in the history
for more information, see https://pre-commit.ci
  • Loading branch information
pre-commit-ci[bot] committed Jun 1, 2024
1 parent bf5019d commit f2dc07f
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 47 deletions.
2 changes: 1 addition & 1 deletion proxy/core/event/names.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
('RESPONSE_HEADERS_COMPLETE', int),
('RESPONSE_CHUNK_RECEIVED', int),
('RESPONSE_COMPLETE', int),
('METRIC', int)
('METRIC', int),
],
)
eventNames = EventNames(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
34 changes: 19 additions & 15 deletions proxy/http/metric_emisor.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@
:license: BSD, see LICENSE for more details.
"""
import logging
from typing import Union, Optional, Set
from proxy.core.event import eventNames
from typing import Set, Union, Optional

from proxy import metrics
from proxy.core.event import eventNames


logger = logging.getLogger(__name__)

Expand All @@ -23,7 +25,7 @@ def _can_emit_metrics(self):
if self.flags.enable_events and self.flags.enable_metrics:
assert self.event_queue
return True
logging.info("Metrics disabled")
logging.info('Metrics disabled')
return False


Expand All @@ -36,20 +38,22 @@ def emit_metric(self, metric: metrics.Metric) -> None:
publisher_id=self.__class__.__qualname__,
)

def emit_metric_counter(self,
name: str,
increment: int | float=1,
description: Optional[str]=None,
tags: Optional[set[str]]=None
) -> None:
def emit_metric_counter(
self,
name: str,
increment: int | float=1,
description: Optional[str]=None,
tags: Optional[set[str]]=None,
) -> None:
if self._can_emit_metrics():
self.emit_metric(metrics.Counter(name, increment, description, tags))

def emit_metric_gauge(self,
name: str,
value: Union[int, float],
description: Optional[str]=None,
tags: Optional[Set[str]]=None
) -> None:
def emit_metric_gauge(
self,
name: str,
value: Union[int, float],
description: Optional[str]=None,
tags: Optional[Set[str]]=None,
) -> None:
if self._can_emit_metrics():
self.emit_metric(metrics.Gauge(name, value, description, tags))
4 changes: 2 additions & 2 deletions proxy/http/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
import socket
import argparse
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING, List, Union, Optional, Set
from typing import TYPE_CHECKING, Set, List, Union, Optional

from .parser import HttpParser
from .connection import HttpClientConnection
from ..core.event import EventQueue
from .descriptors import DescriptorsHandlerMixin
from .metric_emisor import MetricEmisorMixin
from ..common.utils import tls_interception_enabled
from .metric_emisor import MetricEmisorMixin


if TYPE_CHECKING: # pragma: no cover
Expand Down
2 changes: 1 addition & 1 deletion proxy/http/server/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
from ..connection import HttpClientConnection
from ...core.event import EventQueue
from ..descriptors import DescriptorsHandlerMixin
from ..metric_emisor import MetricEmisorMixin
from ...common.types import RePattern
from ...common.utils import bytes_
from ..metric_emisor import MetricEmisorMixin
from ...http.server.protocols import httpProtocolTypes


Expand Down
33 changes: 18 additions & 15 deletions proxy/metrics/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,16 @@
:copyright: (c) 2013-present by Abhinav Singh and contributors.
:license: BSD, see LICENSE for more details.
"""
from typing import Optional, Union, Set
from typing import Set, Union, Optional
from datetime import datetime


class Metric:
def __init__(self,
name: str,
description: Optional[str]=None,
tags:Set[str] = None,
def __init__(
self,
name: str,
description: Optional[str]=None,
tags:Set[str] = None,
):
self.timestamp = datetime.utcnow().timestamp()
self.name = name
Expand All @@ -25,22 +26,24 @@ def __init__(self,


class Counter(Metric):
def __init__(self,
name:str,
increment: Union[int, float]=1,
description: Optional[str]=None,
tags:Set[str] = None,
def __init__(
self,
name:str,
increment: Union[int, float]=1,
description: Optional[str]=None,
tags:Set[str] = None,
):
super().__init__(name, description)
self.increment = increment


class Gauge(Metric):
def __init__(self,
name:str,
value: Union[int, float]=1,
description: Optional[str]=None,
tags:Set[str] = None,
def __init__(
self,
name:str,
value: Union[int, float]=1,
description: Optional[str]=None,
tags:Set[str] = None,
):
super().__init__(name, description)
self.value = value
24 changes: 11 additions & 13 deletions proxy/plugin/prometheus.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@
onmessage
"""
import logging
from typing import List, Tuple, Dict, Any
from typing import Any, Dict, List, Tuple

from prometheus_client import Counter
from prometheus_client.registry import REGISTRY
from prometheus_client.exposition import generate_latest

from proxy import metrics
from proxy.core.event import EventSubscriber
from proxy.http.parser import HttpParser
from proxy.http.server import HttpWebServerBasePlugin, httpProtocolTypes
from proxy.http.responses import okResponse
from proxy.core.event import EventSubscriber
from proxy import metrics

from prometheus_client.exposition import generate_latest
from prometheus_client.registry import REGISTRY
from prometheus_client import Counter


logger = logging.getLogger(__name__)
Expand All @@ -39,7 +39,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None:
super().__init__(*args, **kwargs)
self.subscriber = EventSubscriber(
self.event_queue,
callback=self.process_metric_event
callback=self.process_metric_event,
)
self.subscriber.setup()
self.metrics: Dict[str, Any] = {}
Expand All @@ -51,12 +51,12 @@ def routes(self) -> List[Tuple[int, str]]:
]

def handle_request(self, request: HttpParser) -> None:
self.emit_metric_counter("prometheus_requests")
self.emit_metric_counter('prometheus_requests')
if request.path == b'/metrics':
self.client.queue(okResponse(generate_latest()))

def process_metric_event(self, event: Dict[str, Any]) -> None:
payload = event["event_payload"]
payload = event['event_payload']
if not isinstance(payload, metrics.Metric):
return
try:
Expand All @@ -70,6 +70,4 @@ def process_metric_event(self, event: Dict[str, Any]) -> None:
counter.inc(payload.increment)

except:
logger.exception("Problems")


logger.exception('Problems')

0 comments on commit f2dc07f

Please sign in to comment.