Commit 5d802ade authored by Vitali Tatarintev's avatar Vitali Tatarintev

Move PrometheusMetric out of EE

PrometheusMetric is one of the dependencies of
the generic alerts endpoint feature, which is about to be moved to CE
parent c2811c1c
......@@ -2,6 +2,7 @@
class PrometheusMetric < ApplicationRecord
belongs_to :project, validate: true, inverse_of: :prometheus_metrics
has_many :prometheus_alerts, inverse_of: :prometheus_metric
enum group: PrometheusMetricEnums.groups
......@@ -73,5 +74,3 @@ class PrometheusMetric < ApplicationRecord
PrometheusMetricEnums.group_details.fetch(group.to_sym)
end
end
PrometheusMetric.prepend_if_ee('EE::PrometheusMetric')
......@@ -9,7 +9,8 @@ module PrometheusMetricEnums
aws_elb: -3,
nginx: -4,
kubernetes: -5,
nginx_ingress: -6
nginx_ingress: -6,
cluster_health: -100
}.merge(custom_groups).freeze
end
......@@ -54,6 +55,11 @@ module PrometheusMetricEnums
group_title: _('System metrics (Kubernetes)'),
required_metrics: %w(container_memory_usage_bytes container_cpu_usage_seconds_total),
priority: 5
}.freeze,
cluster_health: {
group_title: _('Cluster Health'),
required_metrics: %w(container_memory_usage_bytes container_cpu_usage_seconds_total),
priority: 10
}.freeze
}.merge(custom_group_details).freeze
end
......@@ -76,5 +82,3 @@ module PrometheusMetricEnums
}.freeze
end
end
PrometheusMetricEnums.prepend_if_ee('EE::PrometheusMetricEnums')
# frozen_string_literal: true
module EE
module PrometheusMetric
extend ActiveSupport::Concern
extend ::Gitlab::Utils::Override
prepended do
has_many :prometheus_alerts, inverse_of: :prometheus_metric
end
end
end
# frozen_string_literal: true
module EE
module PrometheusMetricEnums
extend ActiveSupport::Concern
class_methods do
extend ::Gitlab::Utils::Override
override :groups
def groups
super.merge(
# Start at -100 to avoid collisions with CE values
# built-in groups
cluster_health: -100
)
end
override :group_details
def group_details
super.merge(
# keys can collide with CE values! please ensure you are not redefining a key that already exists in app/models/prometheus_metric_enums.rb#group_details
# built-in groups
cluster_health: {
group_title: _('Cluster Health'),
required_metrics: %w(container_memory_usage_bytes container_cpu_usage_seconds_total),
priority: 10
}
)
end
end
end
end
# frozen_string_literal: true
module EE
module Gitlab
module DatabaseImporters
module CommonMetrics
module PrometheusMetricEnums
extend ActiveSupport::Concern
class_methods do
extend ::Gitlab::Utils::Override
override :groups
def groups
super.merge(
# Start at 100 to avoid collisions with CE values
cluster_health: -100
)
end
override :group_titles
def group_titles
super.merge(
# keys can collide with CE values! please ensure you are not redefining a key that already exists
cluster_health: _('Cluster Health')
)
end
end
end
end
end
end
end
# frozen_string_literal: true
require 'spec_helper'
describe PrometheusMetric do
subject { build(:prometheus_metric) }
describe '#group_title' do
shared_examples 'group_title' do |group, title|
subject { build(:prometheus_metric, group: group).group_title }
it "returns text #{title} for group #{group}" do
expect(subject).to eq(title)
end
end
it_behaves_like 'group_title', :cluster_health, 'Cluster Health'
end
describe '#priority' do
using RSpec::Parameterized::TableSyntax
where(:group, :priority) do
:cluster_health | 10
end
with_them do
before do
subject.group = group
end
it { expect(subject.priority).to eq(priority) }
end
end
describe '#required_metrics' do
using RSpec::Parameterized::TableSyntax
where(:group, :required_metrics) do
:cluster_health | %w(container_memory_usage_bytes container_cpu_usage_seconds_total)
end
with_them do
before do
subject.group = group
end
it { expect(subject.required_metrics).to eq(required_metrics) }
end
end
end
......@@ -6,5 +6,3 @@ module Gitlab
end
end
end
Gitlab::DatabaseImporters::CommonMetrics.prepend_if_ee('EE::Gitlab::DatabaseImporters::CommonMetrics')
......@@ -17,7 +17,9 @@ module Gitlab
# custom groups
business: 0,
response: 1,
system: 2
system: 2,
cluster_health: -100
}
end
......@@ -31,12 +33,11 @@ module Gitlab
ha_proxy: _('Response metrics (HA Proxy)'),
aws_elb: _('Response metrics (AWS ELB)'),
nginx: _('Response metrics (NGINX)'),
kubernetes: _('System metrics (Kubernetes)')
kubernetes: _('System metrics (Kubernetes)'),
cluster_health: _('Cluster Health')
}
end
end
end
end
end
::Gitlab::DatabaseImporters::CommonMetrics::PrometheusMetricEnums.prepend_if_ee('EE::Gitlab::DatabaseImporters::CommonMetrics::PrometheusMetricEnums')
......@@ -67,6 +67,7 @@ describe PrometheusMetric do
it_behaves_like 'group_title', :business, 'Business metrics (Custom)'
it_behaves_like 'group_title', :response, 'Response metrics (Custom)'
it_behaves_like 'group_title', :system, 'System metrics (Custom)'
it_behaves_like 'group_title', :cluster_health, 'Cluster Health'
end
describe '#priority' do
......@@ -82,6 +83,7 @@ describe PrometheusMetric do
:business | 0
:response | -5
:system | -10
:cluster_health | 10
end
with_them do
......@@ -106,6 +108,7 @@ describe PrometheusMetric do
:business | %w()
:response | %w()
:system | %w()
:cluster_health | %w(container_memory_usage_bytes container_cpu_usage_seconds_total)
end
with_them do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment