Duibonduil's picture
Upload 5 files
0d3a3a6 verified
from typing import Sequence
from pydantic import BaseModel, Field, root_validator
from typing import Optional
class MetricTemplate(BaseModel):
"""
MetricTemplate is a class for defining a metric template.
"""
type: str
name: str
description: Optional[str] = None
unit: Optional[str] = Field(default="1")
labels: Optional[list[str]] = None
buckets: Optional[Sequence[float]] = None
@root_validator(pre=True)
def set_default_description(cls, values):
"""
Set the default description if it is not set.
"""
if 'description' not in values or values['description'] is None:
values['description'] = values['name']
return values
class MetricTemplates:
REQUEST_COUNT = MetricTemplate(**{
"type": "counter",
"name": "request_count",
"description": "The number of requests received",
"unit": "1",
"labels": ["method", "status"]
})
REQUEST_LATENCY = MetricTemplate(**{
"type": "histogram",
"name": "request_latency",
"description": "The latency of requests",
"unit": "ms",
"labels": ["method", "status"],
# "buckets": [0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100, 500, 1000]
})