From 98e02f8c404653b189712cfce1fe94ec36ed44e2 Mon Sep 17 00:00:00 2001 From: Chase Tucker Date: Wed, 11 Jun 2025 09:45:26 -0700 Subject: [PATCH] Added count metric endpoint --- LSL2/STPROC/MONA_SERVICES.txt | 67 ++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/LSL2/STPROC/MONA_SERVICES.txt b/LSL2/STPROC/MONA_SERVICES.txt index c2caa5a..ceaef07 100644 --- a/LSL2/STPROC/MONA_SERVICES.txt +++ b/LSL2/STPROC/MONA_SERVICES.txt @@ -62,6 +62,14 @@ Service PostAverageMetric(MonitorName, MetricName, Number) Service_Services('PostProcedure', 'MONA_SERVICES', 'SendBufferedAverageMetric':@VM:MonitorName:@VM:MetricName:@VM:Number) end service +Service SendCountMetric(MonitorName=MONITORS, MetricName, Number) + Mona_Services("PostCountMetric", MonitorName, MetricName, Number) +end Service + +Service PostCountMetric(MonitorName, MetricName, Number) + Service_Services('PostProcedure', 'MONA_SERVICES', 'SendBufferedCountMetric':@VM:MonitorName:@VM:MetricName:@VM:Number) +end service + Service SendBufferedStatus(MonaResource, StatusName, StatusValue) If MonaResource EQ '' then @@ -178,10 +186,66 @@ Service SendBufferedAverageMetric(MonaResource, MetricName, MetricValue) end service +Service SendBufferedCountMetric(MonaResource, MetricName, MetricValue) + + If MonaResource EQ '' then + MonaResource = Environment_Services("GetMonaResource") + end + + DateTime = SRP_DateTime('Now') + Year = SRP_Datetime("Year", DateTime) + Month = SRP_Datetime("Month", DateTime) + If Len(Month) EQ 1 then + Month = '0':Month + end + Day = SRP_Datetime("Day", DateTime) + If Len(Day) EQ 1 then + Day = '0':Day + end + Hour = SRP_Datetime("Hour", DateTime) + If Len(Hour) EQ 1 then + Hour = '0':Hour + end + Minute = SRP_Datetime("Minute", DateTime) + If Len(Minute) EQ 1 then + Minute = '0':Minute + end + Second = SRP_Datetime("Second", DateTime) + If Len(Second) EQ 1 then + Second = '0':Second + end + + RequestBodyJson = '{ "resource": "':MonaResource:'"' + RequestBodyJson = RequestBodyJson:', "dateTime": "':Year:'-':Month:'-':Day:'T':Hour:':':Minute:':':Second:'Z"' + RequestBodyJson = RequestBodyJson:', "metricName": "':MetricName:'"' + RequestBodyJson = RequestBodyJson:', "metricValue": "':MetricValue:'" }' + + ApiUrl = Environment_Services("GetMonInBufferedWorkerApiUrl"):'/count' + + retries = 3 + backoffSeconds = 1 + isSuccessful = False$ + + Loop + while (isSuccessful EQ False$ and retries GT 0) + waitSeconds = (3 - retries) * backoffSeconds + Delay(waitSeconds) + + retries = retries - 1 + + response = Httpclient_Services('SendHTTPRequest', 'POST', ApiUrl, 'Content-Type':@VM:'application/json':@FM:'Accept':@VM:'*/*', RequestBodyJson, '', '', False$, False$, '') + + If response EQ '"Request queued for processing"' then + isSuccessful = True$ + end + Repeat + +end service + Service QueueLatencyAndCountMetrics(MonaResource, MetricName, StartTick, EndTick) Diff = EndTick - StartTick Mona_Services('SendMetric', MonaResource, MetricName:'_LATENCY', Diff) - Mona_Services('SendMetric', MonaResource, MetricName:'_COUNT', 1) + Mona_Services('SendCountMetric', MonaResource, MetricName:'_COUNT', 1) end service SwapResourceNames: @@ -206,3 +270,4 @@ SwapResourceNames: return +