diff options
Diffstat (limited to 'app/services/prometheus')
-rw-r--r-- | app/services/prometheus/create_default_alerts_service.rb | 11 | ||||
-rw-r--r-- | app/services/prometheus/proxy_service.rb | 4 | ||||
-rw-r--r-- | app/services/prometheus/proxy_variable_substitution_service.rb | 24 |
3 files changed, 34 insertions, 5 deletions
diff --git a/app/services/prometheus/create_default_alerts_service.rb b/app/services/prometheus/create_default_alerts_service.rb index c87cbbbe3cf..53baf6a650e 100644 --- a/app/services/prometheus/create_default_alerts_service.rb +++ b/app/services/prometheus/create_default_alerts_service.rb @@ -33,6 +33,7 @@ module Prometheus return ServiceResponse.error(message: 'Invalid environment') unless environment create_alerts + schedule_prometheus_update ServiceResponse.success end @@ -51,6 +52,16 @@ module Prometheus end end + def schedule_prometheus_update + return unless prometheus_application + + ::Clusters::Applications::ScheduleUpdateService.new(prometheus_application, project).execute + end + + def prometheus_application + environment.cluster_prometheus_adapter + end + def metrics_by_identifier strong_memoize(:metrics_by_identifier) do metric_identifiers = DEFAULT_ALERTS.map { |alert| alert[:identifier] } diff --git a/app/services/prometheus/proxy_service.rb b/app/services/prometheus/proxy_service.rb index 085cfc76196..e0bc5518d30 100644 --- a/app/services/prometheus/proxy_service.rb +++ b/app/services/prometheus/proxy_service.rb @@ -30,6 +30,10 @@ module Prometheus 'query_range' => { method: ['GET'], params: %w(query start end step timeout) + }, + 'series' => { + method: %w(GET), + params: %w(match start end) } }.freeze diff --git a/app/services/prometheus/proxy_variable_substitution_service.rb b/app/services/prometheus/proxy_variable_substitution_service.rb index 7b98cfc592a..10fb3a8c1b5 100644 --- a/app/services/prometheus/proxy_variable_substitution_service.rb +++ b/app/services/prometheus/proxy_variable_substitution_service.rb @@ -58,7 +58,7 @@ module Prometheus def substitute_variables(result) return success(result) unless query(result) - result[:params][:query] = gsub(query(result), full_context) + result[:params][:query] = gsub(query(result), full_context(result)) success(result) end @@ -75,12 +75,16 @@ module Prometheus end end - def predefined_context - Gitlab::Prometheus::QueryVariables.call(@environment).stringify_keys + def predefined_context(result) + Gitlab::Prometheus::QueryVariables.call( + @environment, + start_time: start_timestamp(result), + end_time: end_timestamp(result) + ).stringify_keys end - def full_context - @full_context ||= predefined_context.reverse_merge(variables_hash) + def full_context(result) + @full_context ||= predefined_context(result).reverse_merge(variables_hash) end def variables @@ -91,6 +95,16 @@ module Prometheus variables.to_h end + def start_timestamp(result) + Time.rfc3339(result[:params][:start]) + rescue ArgumentError + end + + def end_timestamp(result) + Time.rfc3339(result[:params][:end]) + rescue ArgumentError + end + def query(result) result[:params][:query] end |