Skip to content

Commit 0338403

Browse files
committed
testing out stuff
1 parent c152ba1 commit 0338403

File tree

1 file changed

+16
-18
lines changed
  • manage_breast_screening/notifications/services

1 file changed

+16
-18
lines changed

manage_breast_screening/notifications/services/queue.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import logging
22
import os
33

4-
from azure.core.exceptions import ResourceExistsError
5-
from azure.identity import ManagedIdentityCredential
6-
from azure.storage.queue import QueueClient, QueueMessage
7-
from opentelemetry.metrics import get_meter_provider
4+
from azure.monitor.opentelemetry.exporter import AzureMonitorMetricExporter
5+
from opentelemetry import metrics
6+
from opentelemetry.sdk.metrics import MeterProvider
7+
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
88

99
logger = logging.getLogger(__name__)
1010

11-
1211
class Queue:
1312
def __init__(self, queue_name):
1413
logger.exception("init Queue")
@@ -33,13 +32,21 @@ def __init__(self, queue_name):
3332
except ResourceExistsError:
3433
pass
3534

35+
exporter = AzureMonitorMetricExporter(connection_string=os.environ["APPLICATIONINSIGHTS_CONNECTION_STRING"])
36+
reader = PeriodicExportingMetricReader(exporter)
37+
metrics.set_meter_provider(MeterProvider(metric_readers=[reader]))
38+
self.meter = metrics.get_meter(__name__)
39+
self.gauge = self.meter.create_gauge(self.queue_name, unit="messages", description="Queue length")
40+
3641
self.metrics()
3742

3843
def add(self, message: str):
3944
self.client.send_message(message)
45+
self.metrics()
4046

4147
def delete(self, message: str | QueueMessage):
4248
self.client.delete_message(message)
49+
self.metrics()
4350

4451
def items(self, limit=50):
4552
return self.client.receive_messages(max_messages=limit)
@@ -51,27 +58,18 @@ def item(self):
5158
return self.client.receive_message()
5259

5360
def metrics(self):
54-
logger.exception("going into metrics")
61+
logger.exception("record the metrics")
5562
try:
5663
properties = self.client.get_queue_properties()
5764
self.message_count = properties.approximate_message_count
5865
except Exception as e:
5966
logger.exception(e)
6067
self.message_count = None
61-
return None
68+
return
6269

6370
try:
64-
logger.exception("going into metrics")
65-
meter = get_meter_provider().get_meter("queue_metrics")
66-
67-
gauge = meter.create_gauge(
68-
name=self.queue_name,
69-
description="Approximate number of messages in the queue",
70-
unit="messages",
71-
)
72-
73-
if self.message_count is not None:
74-
gauge.record(self.message_count)
71+
print(f"Reporting queue size: {self.message_count}")
72+
self.gauge.set(self.message_count, {"queue_name": self.queue_name})
7573

7674
except Exception as e:
7775
logger.exception(e)

0 commit comments

Comments
 (0)