Skip to content

Commit d62487f

Browse files
add and set alert_end_time metric (#806)
- Add alert_end_time as a prometheus metric. It will be a unix timestamp. The default value should be 0. - Set alert_end_time when session is created (if one exists and is further in the future than the current alert_end_time) - Update alert_end_time when session end time is updated
1 parent 408efc8 commit d62487f

3 files changed

Lines changed: 18 additions & 1 deletion

File tree

src/murfey/server/api/instrument.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,13 @@ async def update_visit_end_time(
246246
db.add(session_entry)
247247
db.commit()
248248

249+
# Update the alert endtime on prometheus
250+
alert_end_time = prom.alert_end_time._value.get()
251+
if end_time:
252+
visit_end_timestamp = end_time.timestamp()
253+
if alert_end_time < visit_end_timestamp:
254+
prom.alert_end_time.set(visit_end_timestamp)
255+
249256
# Update the multigrid controller
250257
data = {}
251258
machine_config = get_machine_config(instrument_name=instrument_name)[

src/murfey/server/api/session_info.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from sqlmodel import select
1111

1212
import murfey.server.api.websocket as ws
13+
import murfey.server.prometheus as prom
1314
from murfey.server import _transport_object
1415
from murfey.server.api import templates
1516
from murfey.server.api.auth import (
@@ -186,6 +187,13 @@ def create_session(
186187
db.add(s)
187188
db.commit()
188189
sid = s.id
190+
191+
alert_end_time = prom.alert_end_time._value.get() # timestamp
192+
if visit_end_time.end_time:
193+
visit_end_timestamp = visit_end_time.end_time.timestamp()
194+
if alert_end_time < visit_end_timestamp:
195+
prom.alert_end_time.set(visit_end_timestamp)
196+
189197
return sid
190198

191199

@@ -300,7 +308,7 @@ def get_silences(instrument_name: MurfeyInstrumentName):
300308
response = requests.get(f"{alertmanager_url}/api/v2/silences?{query_params}")
301309
if response.status_code != 200:
302310
logger.warning(
303-
f"Tried to get silences for {sanitise(instrument_name)}, but received status {response.status_code} from alertmanager API"
311+
f"Get silences for {sanitise(instrument_name)} received status {response.status_code} from alertmanager API"
304312
)
305313
active_silences = []
306314
for silence in response.json():

src/murfey/server/prometheus.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,5 @@
4343
"Whether the corresponding visit should be monitored or not",
4444
["visit"],
4545
)
46+
47+
alert_end_time = Gauge("alert_end_time", "End time for alerts", [])

0 commit comments

Comments
 (0)