mirror of
https://github.com/lukaszraczylo/graphql-monitoring-proxy.git
synced 2026-10-20 06:28:13 +00:00
improvements mid may 2025 (#24)
* General improvements and bug fixes. * Improve tests coverage. * fixup! Improve tests coverage. * Update README.md with latest changes. * Fix the uint32 * Resolve issue with race condition for logging. * fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * Fix the test of the rate limiter * Add default ratelimit.json file * Update dependencies. * Significant refactor. * fixup! Significant refactor. * fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025
This commit is contained in:
@@ -39,6 +39,6 @@ func BenchmarkValidateMetricsName(b *testing.B) {
|
||||
input := "valid metric name with special chars @#! and underscores__"
|
||||
|
||||
for n := 0; n < b.N; n++ {
|
||||
validate_metrics_name(input)
|
||||
_ = validate_metrics_name(input)
|
||||
}
|
||||
}
|
||||
|
||||
+26
-21
@@ -57,7 +57,7 @@ func (ms *MetricsSetup) startPrometheusEndpoint() {
|
||||
app.Get("/metrics", ms.metricsEndpoint)
|
||||
if err := app.Listen(fmt.Sprintf(":%d", envutil.GetInt("MONITORING_PORT", 9393))); err != nil {
|
||||
log.Critical(&libpack_logger.LogMessage{
|
||||
Message: "Can't start the service",
|
||||
Message: "Can't start the MONITORING service",
|
||||
Pairs: map[string]interface{}{"error": err},
|
||||
})
|
||||
}
|
||||
@@ -83,11 +83,12 @@ func (ms *MetricsSetup) ListActiveMetrics() []string {
|
||||
|
||||
func (ms *MetricsSetup) RegisterMetricsGauge(metric_name string, labels map[string]string, val float64) *metrics.Gauge {
|
||||
if err := validate_metrics_name(metric_name); err != nil {
|
||||
log.Critical(&libpack_logger.LogMessage{
|
||||
Message: "RegisterMetricsGauge() error",
|
||||
Pairs: map[string]interface{}{"_error": "Invalid metric name", "_metric_name": metric_name},
|
||||
log.Error(&libpack_logger.LogMessage{
|
||||
Message: "RegisterMetricsGauge() error - invalid metric name",
|
||||
Pairs: map[string]interface{}{"error": err.Error(), "metric_name": metric_name},
|
||||
})
|
||||
return nil
|
||||
// Return a dummy gauge instead of nil to prevent panics
|
||||
return &metrics.Gauge{}
|
||||
}
|
||||
return ms.metrics_set_custom.GetOrCreateGauge(ms.get_metrics_name(metric_name, labels), func() float64 {
|
||||
return val
|
||||
@@ -96,11 +97,12 @@ func (ms *MetricsSetup) RegisterMetricsGauge(metric_name string, labels map[stri
|
||||
|
||||
func (ms *MetricsSetup) RegisterMetricsCounter(metric_name string, labels map[string]string) *metrics.Counter {
|
||||
if err := validate_metrics_name(metric_name); err != nil {
|
||||
log.Critical(&libpack_logger.LogMessage{
|
||||
Message: "RegisterMetricsCounter() error",
|
||||
Pairs: map[string]interface{}{"_error": "Invalid metric name", "_metric_name": metric_name},
|
||||
log.Error(&libpack_logger.LogMessage{
|
||||
Message: "RegisterMetricsCounter() error - invalid metric name",
|
||||
Pairs: map[string]interface{}{"error": err.Error(), "metric_name": metric_name},
|
||||
})
|
||||
return nil
|
||||
// Return a dummy counter instead of nil to prevent panics
|
||||
return &metrics.Counter{}
|
||||
}
|
||||
if metric_name == MetricsSucceeded || metric_name == MetricsFailed || metric_name == MetricsSkipped {
|
||||
return ms.metrics_set.GetOrCreateCounter(ms.get_metrics_name(metric_name, labels))
|
||||
@@ -110,33 +112,36 @@ func (ms *MetricsSetup) RegisterMetricsCounter(metric_name string, labels map[st
|
||||
|
||||
func (ms *MetricsSetup) RegisterFloatCounter(metric_name string, labels map[string]string) *metrics.FloatCounter {
|
||||
if err := validate_metrics_name(metric_name); err != nil {
|
||||
log.Critical(&libpack_logger.LogMessage{
|
||||
Message: "RegisterFloatCounter() error",
|
||||
Pairs: map[string]interface{}{"_error": "Invalid metric name", "_metric_name": metric_name},
|
||||
log.Error(&libpack_logger.LogMessage{
|
||||
Message: "RegisterFloatCounter() error - invalid metric name",
|
||||
Pairs: map[string]interface{}{"error": err.Error(), "metric_name": metric_name},
|
||||
})
|
||||
return nil
|
||||
// Return a dummy float counter instead of nil to prevent panics
|
||||
return &metrics.FloatCounter{}
|
||||
}
|
||||
return ms.metrics_set_custom.GetOrCreateFloatCounter(ms.get_metrics_name(metric_name, labels))
|
||||
}
|
||||
|
||||
func (ms *MetricsSetup) RegisterMetricsSummary(metric_name string, labels map[string]string) *metrics.Summary {
|
||||
if err := validate_metrics_name(metric_name); err != nil {
|
||||
log.Critical(&libpack_logger.LogMessage{
|
||||
Message: "RegisterMetricsSummary() error",
|
||||
Pairs: map[string]interface{}{"_error": "Invalid metric name", "_metric_name": metric_name},
|
||||
log.Error(&libpack_logger.LogMessage{
|
||||
Message: "RegisterMetricsSummary() error - invalid metric name",
|
||||
Pairs: map[string]interface{}{"error": err.Error(), "metric_name": metric_name},
|
||||
})
|
||||
return nil
|
||||
// Return a dummy summary instead of nil to prevent panics
|
||||
return &metrics.Summary{}
|
||||
}
|
||||
return ms.metrics_set_custom.GetOrCreateSummary(ms.get_metrics_name(metric_name, labels))
|
||||
}
|
||||
|
||||
func (ms *MetricsSetup) RegisterMetricsHistogram(metric_name string, labels map[string]string) *metrics.Histogram {
|
||||
if err := validate_metrics_name(metric_name); err != nil {
|
||||
log.Critical(&libpack_logger.LogMessage{
|
||||
Message: "RegisterMetricsHistogram() error",
|
||||
Pairs: map[string]interface{}{"_error": "Invalid metric name", "_metric_name": metric_name},
|
||||
log.Error(&libpack_logger.LogMessage{
|
||||
Message: "RegisterMetricsHistogram() error - invalid metric name",
|
||||
Pairs: map[string]interface{}{"error": err.Error(), "metric_name": metric_name},
|
||||
})
|
||||
return nil
|
||||
// Return a dummy histogram instead of nil to prevent panics
|
||||
return &metrics.Histogram{}
|
||||
}
|
||||
return ms.metrics_set_custom.GetOrCreateHistogram(ms.get_metrics_name(metric_name, labels))
|
||||
}
|
||||
|
||||
@@ -11,4 +11,32 @@ const (
|
||||
MetricsCacheHit = "cache_hit"
|
||||
MetricsCacheMiss = "cache_miss"
|
||||
MetricsQueriesCached = "cached_queries"
|
||||
|
||||
// Memory cache metrics
|
||||
MetricsCacheMemoryUsage = "cache_memory_usage_bytes"
|
||||
MetricsCacheMemoryLimit = "cache_memory_limit_bytes"
|
||||
MetricsCacheMemoryPercent = "cache_memory_percent_used"
|
||||
|
||||
// GraphQL parsing metrics
|
||||
MetricsGraphQLParsingTime = "graphql_parsing_time_ms"
|
||||
MetricsGraphQLParsingErrors = "graphql_parsing_errors"
|
||||
MetricsGraphQLCacheHit = "graphql_parse_cache_hit"
|
||||
MetricsGraphQLCacheMiss = "graphql_parse_cache_miss"
|
||||
MetricsGraphQLParsingAllocs = "graphql_parsing_allocations"
|
||||
|
||||
// Circuit breaker metrics
|
||||
MetricsCircuitState = "circuit_state" // 0 = closed, 1 = half-open, 2 = open
|
||||
MetricsCircuitConsecutiveFailures = "circuit_consecutive_failures"
|
||||
MetricsCircuitSuccessful = "circuit_successful_calls"
|
||||
MetricsCircuitFailed = "circuit_failed_calls"
|
||||
MetricsCircuitRejected = "circuit_rejected_calls"
|
||||
MetricsCircuitFallbackSuccess = "circuit_fallback_success"
|
||||
MetricsCircuitFallbackFailed = "circuit_fallback_failed"
|
||||
)
|
||||
|
||||
// Circuit states
|
||||
const (
|
||||
CircuitClosed = 0
|
||||
CircuitHalfOpen = 1
|
||||
CircuitOpen = 2
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user