mirror of
https://github.com/lukaszraczylo/graphql-monitoring-proxy.git
synced 2026-10-21 06:37:21 +00:00
Add metrics for cached queries + cache hit/miss
This commit is contained in:
@@ -5,6 +5,9 @@ func (ms *MetricsSetup) RegisterDefaultMetrics() {
|
|||||||
ms.RegisterMetricsCounter(MetricsFailed, nil)
|
ms.RegisterMetricsCounter(MetricsFailed, nil)
|
||||||
ms.RegisterMetricsCounter(MetricsSkipped, nil)
|
ms.RegisterMetricsCounter(MetricsSkipped, nil)
|
||||||
ms.RegisterMetricsHistogram(MetricsDuration, nil)
|
ms.RegisterMetricsHistogram(MetricsDuration, nil)
|
||||||
|
ms.RegisterMetricsCounter(MetricsCacheHit, nil)
|
||||||
|
ms.RegisterMetricsCounter(MetricsCacheMiss, nil)
|
||||||
|
ms.RegisterMetricsCounter(MetricsQueriesCached, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *MetricsSetup) RegisterGoMetrics() {
|
func (ms *MetricsSetup) RegisterGoMetrics() {
|
||||||
|
|||||||
@@ -7,4 +7,8 @@ const (
|
|||||||
MetricsSkipped = "requests_skipped"
|
MetricsSkipped = "requests_skipped"
|
||||||
MetricsExecutedQuery = "executed_query"
|
MetricsExecutedQuery = "executed_query"
|
||||||
MetricsTimedQuery = "timed_query"
|
MetricsTimedQuery = "timed_query"
|
||||||
|
|
||||||
|
MetricsCacheHit = "cache_hit"
|
||||||
|
MetricsCacheMiss = "cache_miss"
|
||||||
|
MetricsQueriesCached = "cached_queries"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -152,11 +152,13 @@ func processGraphQLRequest(c *fiber.Ctx) error {
|
|||||||
queryCacheHash = calculateHash(c)
|
queryCacheHash = calculateHash(c)
|
||||||
|
|
||||||
if cachedResponse := cacheLookup(queryCacheHash); cachedResponse != nil {
|
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")})
|
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.Request().Header.Add("X-Cache-Hit", "true")
|
||||||
c.Send(cachedResponse)
|
c.Send(cachedResponse)
|
||||||
wasCached = true
|
wasCached = true
|
||||||
} else {
|
} 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")})
|
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)
|
proxyAndCacheTheRequest(c, queryCacheHash, parsedResult.cacheTime, parsedResult.activeEndpoint)
|
||||||
}
|
}
|
||||||
@@ -182,6 +184,7 @@ func proxyAndCacheTheRequest(c *fiber.Ctx, queryCacheHash string, cacheTime int,
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
cfg.Cache.CacheClient.Set(queryCacheHash, c.Response().Body(), time.Duration(cacheTime)*time.Second)
|
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())
|
c.Send(c.Response().Body())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user