From a01a4da9b5bd2d87d209c6c22395212b69a9c520 Mon Sep 17 00:00:00 2001 From: Lukasz Raczylo Date: Tue, 11 Jun 2024 00:03:05 +0100 Subject: [PATCH] Add metrics for cached queries + cache hit/miss --- monitoring/defaults.go | 3 +++ monitoring/structs.go | 4 ++++ server.go | 3 +++ 3 files changed, 10 insertions(+) diff --git a/monitoring/defaults.go b/monitoring/defaults.go index cb17744..f0e7ee7 100644 --- a/monitoring/defaults.go +++ b/monitoring/defaults.go @@ -5,6 +5,9 @@ func (ms *MetricsSetup) RegisterDefaultMetrics() { ms.RegisterMetricsCounter(MetricsFailed, nil) ms.RegisterMetricsCounter(MetricsSkipped, nil) ms.RegisterMetricsHistogram(MetricsDuration, nil) + ms.RegisterMetricsCounter(MetricsCacheHit, nil) + ms.RegisterMetricsCounter(MetricsCacheMiss, nil) + ms.RegisterMetricsCounter(MetricsQueriesCached, nil) } func (ms *MetricsSetup) RegisterGoMetrics() { diff --git a/monitoring/structs.go b/monitoring/structs.go index fe1cd5e..1f99194 100644 --- a/monitoring/structs.go +++ b/monitoring/structs.go @@ -7,4 +7,8 @@ const ( MetricsSkipped = "requests_skipped" MetricsExecutedQuery = "executed_query" MetricsTimedQuery = "timed_query" + + MetricsCacheHit = "cache_hit" + MetricsCacheMiss = "cache_miss" + MetricsQueriesCached = "cached_queries" ) diff --git a/server.go b/server.go index 5763711..516f2dc 100644 --- a/server.go +++ b/server.go @@ -152,11 +152,13 @@ func processGraphQLRequest(c *fiber.Ctx) error { queryCacheHash = calculateHash(c) if cachedResponse := cacheLookup(queryCacheHash); cachedResponse != nil { + cfg.Monitoring.Increment(libpack_monitoring.MetricsCacheHit, nil) cfg.Logger.Debug("Cache hit", map[string]interface{}{"hash": queryCacheHash, "user_id": extractedUserID, "request_uuid": c.Locals("request_uuid")}) c.Request().Header.Add("X-Cache-Hit", "true") c.Send(cachedResponse) wasCached = true } else { + cfg.Monitoring.Increment(libpack_monitoring.MetricsCacheMiss, nil) cfg.Logger.Debug("Cache miss", map[string]interface{}{"hash": queryCacheHash, "user_id": extractedUserID, "request_uuid": c.Locals("request_uuid")}) proxyAndCacheTheRequest(c, queryCacheHash, parsedResult.cacheTime, parsedResult.activeEndpoint) } @@ -182,6 +184,7 @@ func proxyAndCacheTheRequest(c *fiber.Ctx, queryCacheHash string, cacheTime int, return } cfg.Cache.CacheClient.Set(queryCacheHash, c.Response().Body(), time.Duration(cacheTime)*time.Second) + cfg.Monitoring.Increment(libpack_monitoring.MetricsQueriesCached, nil) c.Send(c.Response().Body()) }