Skip to content

Commit 20b58ad

Browse files
Merge pull request #189 from MSDLLCpapers/feature/enhance-telemetry-config
fixes the default enabling of metrics and logging endpoints
2 parents fa405ca + 98d0a15 commit 20b58ad

2 files changed

Lines changed: 39 additions & 27 deletions

File tree

shared/ska_utils/src/ska_utils/telemetry.py

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -34,26 +34,26 @@
3434
TA_TELEMETRY_ENABLED = Config(
3535
env_name="TA_TELEMETRY_ENABLED", is_required=True, default_value="true"
3636
)
37-
TA_OTEL_ENDPOINT = Config(
38-
env_name="TA_OTEL_ENDPOINT", is_required=False, default_value=None
39-
)
37+
TA_OTEL_ENDPOINT = Config(env_name="TA_OTEL_ENDPOINT", is_required=False, default_value=None)
4038
TA_OTEL_LOGGING_ENDPOINT = Config(
4139
env_name="TA_OTEL_LOGGING_ENDPOINT", is_required=False, default_value=None
4240
)
4341
TA_OTEL_METRICS_ENDPOINT = Config(
4442
env_name="TA_OTEL_METRICS_ENDPOINT", is_required=False, default_value=None
4543
)
4644

47-
TA_LOG_LEVEL = Config(
48-
env_name="TA_LOG_LEVEL", is_required=False, default_value="info"
49-
)
45+
TA_LOG_LEVEL = Config(env_name="TA_LOG_LEVEL", is_required=False, default_value="info")
46+
47+
TA_METRICS_ENABLED = Config(env_name="TA_METRICS_ENABLED", is_required=True, default_value="false")
48+
49+
TA_LOGGING_ENABLED = Config(env_name="TA_LOGGING_ENABLED", is_required=True, default_value="false")
5050

5151
TELEMETRY_CONFIGS: list[Config] = [
5252
TA_TELEMETRY_ENABLED,
5353
TA_OTEL_ENDPOINT,
5454
TA_LOG_LEVEL,
5555
TA_OTEL_LOGGING_ENDPOINT,
56-
TA_OTEL_METRICS_ENDPOINT
56+
TA_OTEL_METRICS_ENDPOINT,
5757
]
5858

5959
AppConfig.add_configs(TELEMETRY_CONFIGS)
@@ -63,19 +63,13 @@ class Telemetry:
6363
def __init__(self, service_name: str, app_config: AppConfig):
6464
self.service_name = service_name
6565
self._handler: LoggingHandler | None = None
66-
self.resource = Resource.create(
67-
{ResourceAttributes.SERVICE_NAME: self.service_name}
68-
)
69-
self._telemetry_enabled = strtobool(
70-
str(app_config.get(TA_TELEMETRY_ENABLED.env_name))
71-
)
66+
self.resource = Resource.create({ResourceAttributes.SERVICE_NAME: self.service_name})
67+
self._telemetry_enabled = strtobool(str(app_config.get(TA_TELEMETRY_ENABLED.env_name)))
68+
self._metrics_enabled = strtobool(str(app_config.get(TA_METRICS_ENABLED.env_name)))
69+
self._logging_enabled = strtobool(str(app_config.get(TA_LOGGING_ENABLED.env_name)))
7270
self.endpoint = app_config.get(TA_OTEL_ENDPOINT.env_name)
73-
self.logging_endpoint = app_config.get(
74-
TA_OTEL_LOGGING_ENDPOINT.env_name
75-
)
76-
self.metrics_endpoint = app_config.get(
77-
TA_OTEL_METRICS_ENDPOINT.env_name
78-
)
71+
self.logging_endpoint = app_config.get(TA_OTEL_LOGGING_ENDPOINT.env_name)
72+
self.metrics_endpoint = app_config.get(TA_OTEL_METRICS_ENDPOINT.env_name)
7973
self._check_enable_telemetry()
8074
self.tracer: trace.Tracer | None = self._get_tracer()
8175

@@ -105,8 +99,12 @@ def _check_enable_telemetry(self) -> None:
10599
return
106100

107101
self._enable_tracing()
108-
self._enable_logging()
109-
self._enable_metrics()
102+
103+
if self._metrics_enabled:
104+
self._enable_metrics()
105+
106+
if self._logging_enabled:
107+
self._enable_logging()
110108

111109
def _enable_tracing(self) -> None:
112110
exporter: SpanExporter
@@ -146,9 +144,7 @@ def _enable_logging(self) -> None:
146144
exporter = ConsoleLogExporter()
147145

148146
logger_provider = LoggerProvider(resource=self.resource)
149-
logger_provider.add_log_record_processor(
150-
BatchLogRecordProcessor(exporter)
151-
)
147+
logger_provider.add_log_record_processor(BatchLogRecordProcessor(exporter))
152148
set_logger_provider(logger_provider)
153149

154150
logger = logging.getLogger()
@@ -163,9 +159,7 @@ def _enable_metrics(self) -> None:
163159
exporter = ConsoleMetricExporter()
164160

165161
meter_provider = MeterProvider(
166-
metric_readers=[PeriodicExportingMetricReader(
167-
exporter, export_interval_millis=5000)
168-
],
162+
metric_readers=[PeriodicExportingMetricReader(exporter, export_interval_millis=5000)],
169163
resource=self.resource,
170164
views=[
171165
# Dropping all instrument names except

shared/ska_utils/tests/test_telemetry.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ def app_config():
1212
config = MagicMock(spec=AppConfig)
1313
config.get.side_effect = {
1414
"TA_TELEMETRY_ENABLED": "true",
15+
"TA_METRICS_ENABLED": "true",
16+
"TA_LOGGING_ENABLED": "true",
1517
"TA_OTEL_ENDPOINT": "http://localhost:4317",
1618
"TA_OTEL_METRICS_ENDPOINT": "http://localhost:4317",
1719
"TA_LOG_LEVEL": "info",
@@ -30,6 +32,8 @@ def test_telemetry_initialization_info(app_config):
3032
def test_telemetry_initialization_debug(app_config):
3133
app_config.get.side_effect = {
3234
"TA_TELEMETRY_ENABLED": "false",
35+
"TA_METRICS_ENABLED": "false",
36+
"TA_LOGGING_ENABLED": "false",
3337
"TA_OTEL_ENDPOINT": None,
3438
"TA_LOG_LEVEL": "debug",
3539
}.get
@@ -40,6 +44,8 @@ def test_telemetry_initialization_debug(app_config):
4044
def test_telemetry_initialization_warning(app_config):
4145
app_config.get.side_effect = {
4246
"TA_TELEMETRY_ENABLED": "false",
47+
"TA_METRICS_ENABLED": "false",
48+
"TA_LOGGING_ENABLED": "false",
4349
"TA_OTEL_ENDPOINT": None,
4450
"TA_LOG_LEVEL": "warning",
4551
}.get
@@ -50,6 +56,8 @@ def test_telemetry_initialization_warning(app_config):
5056
def test_telemetry_initialization_error(app_config):
5157
app_config.get.side_effect = {
5258
"TA_TELEMETRY_ENABLED": "false",
59+
"TA_METRICS_ENABLED": "false",
60+
"TA_LOGGING_ENABLED": "false",
5361
"TA_OTEL_ENDPOINT": None,
5462
"TA_LOG_LEVEL": "error",
5563
}.get
@@ -60,6 +68,8 @@ def test_telemetry_initialization_error(app_config):
6068
def test_telemetry_initialization_critical(app_config):
6169
app_config.get.side_effect = {
6270
"TA_TELEMETRY_ENABLED": "false",
71+
"TA_METRICS_ENABLED": "false",
72+
"TA_LOGGING_ENABLED": "false",
6373
"TA_OTEL_ENDPOINT": None,
6474
"TA_LOG_LEVEL": "critical",
6575
}.get
@@ -70,6 +80,8 @@ def test_telemetry_initialization_critical(app_config):
7080
def test_telemetry_disabled(app_config):
7181
app_config.get.side_effect = {
7282
"TA_TELEMETRY_ENABLED": "false",
83+
"TA_METRICS_ENABLED": "false",
84+
"TA_LOGGING_ENABLED": "false",
7385
"TA_OTEL_ENDPOINT": None,
7486
"TA_LOG_LEVEL": "info",
7587
}.get
@@ -88,6 +100,8 @@ def test_get_tracer_enabled(app_config):
88100
def test_get_tracer_disabled(app_config):
89101
app_config.get.side_effect = {
90102
"TA_TELEMETRY_ENABLED": "false",
103+
"TA_METRICS_ENABLED": "false",
104+
"TA_LOGGING_ENABLED": "false",
91105
"TA_OTEL_ENDPOINT": None,
92106
"TA_LOG_LEVEL": "info",
93107
}.get
@@ -114,6 +128,8 @@ def test_enable_tracing(app_config):
114128
def test_enable_tracing_without_endpoint(app_config):
115129
app_config.get.side_effect = {
116130
"TA_TELEMETRY_ENABLED": "true",
131+
"TA_METRICS_ENABLED": "true",
132+
"TA_LOGGING_ENABLED": "true",
117133
"TA_OTEL_ENDPOINT": None,
118134
"TA_LOG_LEVEL": "info",
119135
}.get
@@ -140,6 +156,8 @@ def test_get_logger(app_config):
140156
def test_get_logger_telemetry_disabled(app_config):
141157
app_config.get.side_effect = {
142158
"TA_TELEMETRY_ENABLED": "false",
159+
"TA_METRICS_ENABLED": "false",
160+
"TA_LOGGING_ENABLED": "false",
143161
"TA_OTEL_ENDPOINT": None,
144162
"TA_LOG_LEVEL": "info",
145163
}.get

0 commit comments

Comments
 (0)