5
5
import aiomqtt
6
6
import boto3
7
7
import mongoengine
8
- import redis
9
8
import uvicorn
10
9
from fastapi import FastAPI
11
10
from uvicorn .middleware .proxy_headers import ProxyHeadersMiddleware
12
11
13
12
import aggrec .aggregates
14
13
import aggrec .extras
14
+ from dnstapir .key_cache import key_cache_from_settings
15
+ from dnstapir .key_resolver import key_resolver_from_client_database
16
+ from dnstapir .logging import configure_json_logging
17
+ from dnstapir .opentelemetry import configure_opentelemetry
15
18
16
19
from . import OPENAPI_METADATA , __verbose_version__
17
- from .key_cache import CombinedKeyCache , KeyCache , MemoryKeyCache , RedisKeyCache
18
- from .logging import JsonFormatter # noqa
19
20
from .settings import Settings
20
- from .telemetry import configure_opentelemetry
21
21
22
22
logger = logging .getLogger (__name__ )
23
23
24
- LOGGING_RECORD_CUSTOM_FORMAT = {
25
- "time" : "asctime" ,
26
- # "Created": "created",
27
- # "RelativeCreated": "relativeCreated",
28
- "name" : "name" ,
29
- # "Levelno": "levelno",
30
- "levelname" : "levelname" ,
31
- "process" : "process" ,
32
- "thread" : "thread" ,
33
- # "threadName": "threadName",
34
- # "Pathname": "pathname",
35
- # "Filename": "filename",
36
- # "Module": "module",
37
- # "Lineno": "lineno",
38
- # "FuncName": "funcName",
39
- "message" : "message" ,
40
- }
41
-
42
- LOGGING_CONFIG_JSON = {
43
- "version" : 1 ,
44
- "disable_existing_loggers" : False ,
45
- "formatters" : {
46
- "json" : {
47
- "class" : "aggrec.logging.JsonFormatter" ,
48
- "format" : LOGGING_RECORD_CUSTOM_FORMAT ,
49
- },
50
- },
51
- "handlers" : {
52
- "json" : {"class" : "logging.StreamHandler" , "formatter" : "json" },
53
- },
54
- "root" : {"handlers" : ["json" ], "level" : "DEBUG" },
55
- }
56
-
57
24
58
25
class AggrecServer (FastAPI ):
59
26
def __init__ (self , settings : Settings ):
@@ -63,26 +30,18 @@ def __init__(self, settings: Settings):
63
30
self .add_middleware (ProxyHeadersMiddleware )
64
31
self .include_router (aggrec .aggregates .router )
65
32
self .include_router (aggrec .extras .router )
66
- configure_opentelemetry (
67
- self ,
68
- service_name = "aggrec" ,
69
- spans_endpoint = str (settings .otlp .spans_endpoint ),
70
- metrics_endpoint = str (settings .otlp .metrics_endpoint ),
71
- insecure = settings .otlp .insecure ,
33
+ if self .settings .otlp :
34
+ configure_opentelemetry (
35
+ service_name = "aggrec" ,
36
+ settings = self .settings .otlp ,
37
+ fastapi_app = self ,
38
+ )
39
+ else :
40
+ self .logger .info ("Configured without OpenTelemetry" )
41
+ key_cache = key_cache_from_settings (self .settings .key_cache ) if self .settings .key_cache else None
42
+ self .key_resolver = key_resolver_from_client_database (
43
+ client_database = str (self .settings .clients_database ), key_cache = key_cache
72
44
)
73
- self .key_cache : KeyCache | None = None
74
- if self .settings .key_cache :
75
- memory_key_cache = MemoryKeyCache (size = self .settings .key_cache .size , ttl = self .settings .key_cache .ttl )
76
- if redis_settings := self .settings .key_cache .redis :
77
- redis_client = redis .StrictRedis (host = redis_settings .host , port = redis_settings .port )
78
- self .logger .debug ("Using REDIS at %s:%d" , redis_settings .host , redis_settings .port )
79
- redis_key_cache = RedisKeyCache (redis_client = redis_client , ttl = self .settings .key_cache .ttl )
80
- if self .settings .key_cache .size :
81
- self .key_cache = CombinedKeyCache ([memory_key_cache , redis_key_cache ])
82
- else :
83
- self .key_cache = redis_key_cache
84
- elif self .settings .key_cache .size :
85
- self .key_cache = memory_key_cache
86
45
87
46
@staticmethod
88
47
def connect_mongodb (settings : Settings ):
@@ -143,8 +102,7 @@ def main() -> None:
143
102
print (f"Aggregate Receiver version { __verbose_version__ } " )
144
103
return
145
104
146
- logging_config = LOGGING_CONFIG_JSON
147
- logging .config .dictConfig (logging_config )
105
+ logging_config = configure_json_logging ()
148
106
149
107
if args .debug :
150
108
logging .basicConfig (level = logging .DEBUG )
0 commit comments