Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove MiddlewareManager Alerts #16729

Merged
merged 5 commits into from
Jan 16, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/models/container_node.rb
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ def cockpit_url
end

def evaluate_alert(_alert_id, _event)
# currently only EmsEvents from hawkular are tested for node alerts,
# and these should automaticaly be translated to alerts.
# This is a no-op on container node, and used to be implemented only for
# Hawkular-generated EmsEvents.
true
end

Expand Down
13 changes: 0 additions & 13 deletions app/models/ems_event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ def self.add(ems_id, event_hash)
process_availability_zone_in_event!(event_hash)
process_cluster_in_event!(event_hash)
process_container_entities_in_event!(event_hash)
process_middleware_entities_in_event!(event_hash)

# Write the event
new_event = create_event(event_hash)
Expand Down Expand Up @@ -143,17 +142,6 @@ def self.process_container_entities_in_event!(event, _options = {})
end
end

def self.process_middleware_entities_in_event!(event, _options = {})
middleware_type = event[:middleware_type]
if middleware_type
klass = middleware_type.safe_constantize
unless klass.nil?
process_object_in_event!(klass, event, :ems_ref_key => :middleware_ref)
end
end
event.except!(:middleware_ref, :middleware_type)
end

def self.process_availability_zone_in_event!(event, options = {})
process_object_in_event!(AvailabilityZone, event, options)
if event[:availability_zone_id].nil? && event[:vm_or_template_id]
Expand Down Expand Up @@ -221,7 +209,6 @@ def get_target(target_type)

target_type = "src_vm_or_template" if target_type == "src_vm"
target_type = "dest_vm_or_template" if target_type == "dest_vm"
target_type = "middleware_server" if event.event_type == "hawkular_alert"
target_type = "target" if event.event_type == "datawarehouse_alert"

event.send(target_type)
Expand Down
147 changes: 4 additions & 143 deletions app/models/miq_alert.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ class MiqAlert < ApplicationRecord
EmsCluster
ExtManagementSystem
MiqServer
MiddlewareServer
ContainerNode
)

Expand Down Expand Up @@ -479,136 +478,6 @@ def self.automate_expressions
}},
{:name => :operator, :description => _("Operator"), :values => ["Changed"]}
]},
{:name => "mw_heap_used", :description => _("JVM Heap Used"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :value_mw_greater_than, :description => _("> Heap Max (%)"), :numeric => true},
{:name => :value_mw_less_than, :description => _("< Heap Max (%)"), :numeric => true}
]},
{:name => "mw_non_heap_used", :description => _("JVM Non Heap Used"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :value_mw_greater_than, :description => _("> Non Heap Committed (%)"), :numeric => true},
{:name => :value_mw_less_than, :description => _("< Non Heap Committed (%)"), :numeric => true}
]},
{:name => "mw_accumulated_gc_duration", :description => _("JVM Accumulated GC Duration"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<=", "="]},
{:name => :value_mw_garbage_collector, :description => _("Duration Per Minute (ms)"), :numeric => true}
]},
{:name => "mw_ds_available_count", :description => _("DataSource - Connections Available"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of available Datasource connections"), :numeric => true}
]},
{:name => "mw_ds_in_use_count", :description => _("DataSource - Connections In Use"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Datasource connections in use"), :numeric => true}
]},
{:name => "mw_ds_timed_out", :description => _("DataSource - Connections Time Out"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Time Out Datasource connections"), :numeric => true}
]},
{:name => "mw_ds_average_get_time", :description => _("DataSource - Connection Get Time"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Average Get Time in Datasource connection (ms)"), :numeric => true}
]},
{:name => "mw_ds_average_creation_time", :description => _("DataSource - Connection Creation Time"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Average Creation Time in Datasource connection (ms)"), :numeric => true}
]},
{:name => "mw_ds_max_wait_time", :description => _("DataSource - Connection Wait Time"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Max Wait Time in Datasource connection (ms)"), :numeric => true}
]},
{:name => "mw_ms_topic_delivering_count", :description => _("Messaging - Delivering Message Count"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Delivering Message Count"), :numeric => true}
]},
{:name => "mw_ms_topic_durable_message_count", :description => _("Messaging - Durable Message Count"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Durable Message Count"), :numeric => true}
]},
{:name => "mw_ms_topic_non_durable_message_count", :description => _("Messaging - Non-durable Message Count"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Non-durable Message Count"), :numeric => true}
]},
{:name => "mw_ms_topic_message_count", :description => _("Messaging - Messages Count"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Messages Count"), :numeric => true}
]},
{:name => "mw_ms_topic_message_added", :description => _("Messaging - Messages Added"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Messages Added"), :numeric => true}
]},
{:name => "mw_ms_topic_durable_subscription_count", :description => _("Messaging - Durable Subscribers"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Durable Subscribers"), :numeric => true}
]},
{:name => "mw_ms_topic_non_durable_subscription_count", :description => _("Messaging - Non-durable Subscribers"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Non-durable Subscribers"), :numeric => true}
]},
{:name => "mw_ms_topic_subscription_count", :description => _("Messaging - Subscriptions"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Subscriptions"), :numeric => true}
]},
{:name => "mw_tx_committed", :description => _("EAP Transactions - Committed"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Comitted Transactions"), :numeric => true, :required => true}
]},
{:name => "mw_tx_timeout", :description => _("EAP Transactions - Timed Out"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Timed Out Transactions"), :numeric => true, :required => true}
]},
{:name => "mw_tx_heuristics", :description => _("EAP Transactions - Heuristic"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Heuristics"), :numeric => true, :required => true}
]},
{:name => "mw_tx_application_rollbacks", :description => _("EAP Transactions - Application Rollbacks"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Application Rollbacks"), :numeric => true, :required => true}
]},
{:name => "mw_tx_resource_rollbacks", :description => _("EAP Transactions - Resource Rollbacks"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Resource Rollbacks"), :numeric => true, :required => true}
]},
{:name => "mw_tx_aborted", :description => _("EAP Transactions - Aborted"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of Aborted Transactions"), :numeric => true, :required => true}
]},
{:name => "mw_aggregated_active_web_sessions", :description => _("Web sessions - Active"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of active Web sessions"), :numeric => true, :required => true}
]},
{:name => "mw_aggregated_expired_web_sessions", :description => _("Web sessions - Expired"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of expired Web sessions"), :numeric => true, :required => true}
]},
{:name => "mw_aggregated_rejected_web_sessions", :description => _("Web sessions - Rejected"), :db => ["MiddlewareServer"], :responds_to_events => "hawkular_alert",
:options => [
{:name => :mw_operator, :description => _("Operator"), :values => [">", ">=", "<", "<="]},
{:name => :value_mw_threshold, :description => _("Number of rejected Web sessions"), :numeric => true, :required => true}
]},
{:name => "dwh_generic", :description => _("External Prometheus Alerts"), :db => ["ContainerNode", "ExtManagementSystem"], :responds_to_events => "datawarehouse_alert",
:options => [], :always_evaluate => true}
]
Expand Down Expand Up @@ -672,7 +541,7 @@ def self.expression_by_name(name)

def self.raw_events
@raw_events ||= expression_by_name("event_threshold")[:options].find { |h| h[:name] == :event_types }[:values] +
%w(hawkular_alert datawarehouse_alert)
%w(datawarehouse_alert)
end

def self.event_alertable?(event)
Expand Down Expand Up @@ -718,13 +587,9 @@ def evaluate_in_automate(target, inputs = {})
end

def evaluate_internal(target, _inputs = {})
if target.kind_of?(::MiddlewareServer)
method = "evaluate_middleware"
options = _inputs[:ems_event]
else
method = "evaluate_method_#{hash_expression[:eval_method]}"
options = hash_expression[:options] || {}
end
method = "evaluate_method_#{hash_expression[:eval_method]}"
options = hash_expression[:options] || {}

raise "Evaluation method '#{hash_expression[:eval_method]}' does not exist" unless self.respond_to?(method)

send(method, target, options)
Expand All @@ -739,10 +604,6 @@ def evaluate_method_dwh_generic(target, options)
target.evaluate_alert(id, options)
end

def evaluate_middleware(target, options)
target.evaluate_alert(id, options)
end

# Evaluation methods
#
def evaluate_method_changed_vm_value(target, options)
Expand Down
9 changes: 5 additions & 4 deletions app/models/miq_event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ class MiqEvent < EventStream
}
}

SUPPORTED_POLICY_AND_ALERT_CLASSES = [Host, VmOrTemplate, Storage, EmsCluster, ResourcePool,
MiqServer, ExtManagementSystem,
ContainerReplicator, ContainerGroup, ContainerNode, ContainerImage,
MiddlewareServer, PhysicalServer].freeze
SUPPORTED_POLICY_AND_ALERT_CLASSES = [Host, VmOrTemplate, Storage,
EmsCluster, ResourcePool, MiqServer,
ExtManagementSystem,
ContainerReplicator, ContainerGroup,
ContainerNode, ContainerImage, PhysicalServer].freeze

def self.raise_evm_event(target, raw_event, inputs = {}, options = {})
# Target may have been deleted if it's a worker
Expand Down
37 changes: 1 addition & 36 deletions spec/models/ems_event_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
describe EmsEvent do
context "model" do
let(:ems1) { FactoryGirl.create(:ems_kubernetes) }
let(:ems2) { FactoryGirl.create(:ems_hawkular_datawarehouse) }
let(:ems2) { FactoryGirl.create(:ems_kubernetes) }

it "Find ems events and generated events for ext management systems" do
generated_event = FactoryGirl.create(:ems_event, :ext_management_system => ems1, :generating_ems => ems2)
Expand Down Expand Up @@ -94,41 +94,6 @@
end
end

context ".process_middleware_entities_in_event!" do
let(:middleware_ref) { "hawkular-test-path" }
let(:ems) { FactoryGirl.create(:ems_hawkular) }
let(:middleware_server) do
FactoryGirl.create(:middleware_server,
:ems_ref => middleware_ref,
:name => 'test-server',
:ext_management_system => ems)
end

let(:event_hash) { {:middleware_type => MiddlewareServer.name, :ems_id => ems.id} }

before :each do
middleware_server
end

context "process server_in events" do
it "should link server id to event" do
event_hash[:middleware_ref] = middleware_ref
EmsEvent.process_middleware_entities_in_event!(event_hash)
expect(event_hash[:middleware_server_id]).to eq middleware_server.id
expect(event_hash[:middleware_server_name]).to eq middleware_server.name
end
end

context "process unknown_server_in events" do
it "should not link server id to event" do
event_hash[:middleware_ref] = 'unknown_id'
EmsEvent.process_middleware_entities_in_event!(event_hash)
expect(event_hash[:middleware_server_id]).to be_nil
expect(event_hash[:middleware_server_name]).to be_nil
end
end
end

context "with availability zones" do
before :each do
@zone = FactoryGirl.create(:small_environment)
Expand Down
10 changes: 0 additions & 10 deletions spec/models/miq_alert_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -559,15 +559,5 @@
'Validation failed: Notifications Datawarehouse alerts must have a 0 notification frequency'
)
end

it 'Does allow creation of hawkular_alert miq_alerts with delay_next_evaluation > 0 ' do
expect do
FactoryGirl.create(
:miq_alert,
:options => {:notifications => {:delay_next_evaluation => 600, :evm_event => {}}},
:expression => {:eval_method => "mw_heap_used"}
)
end.to_not raise_error
end
end
end