Fixed issue #1439 - Icinga/Nagios Integration: No longer accepts regex in "Sender".
This commit is contained in:
parent
6573c93337
commit
18edd73c75
3 changed files with 505 additions and 80 deletions
|
@ -18,7 +18,8 @@ class Channel::Filter::MonitoringBase
|
||||||
sender = Setting.get("#{integration}_sender")
|
sender = Setting.get("#{integration}_sender")
|
||||||
auto_close = Setting.get("#{integration}_auto_close")
|
auto_close = Setting.get("#{integration}_auto_close")
|
||||||
auto_close_state_id = Setting.get("#{integration}_auto_close_state_id")
|
auto_close_state_id = Setting.get("#{integration}_auto_close_state_id")
|
||||||
state_recovery_match = '(OK|UP)'
|
state_ignore_match = Setting.get("#{integration}_ignore_match") || ''
|
||||||
|
state_recovery_match = Setting.get("#{integration}_recovery_match") || '(OK|UP)'
|
||||||
|
|
||||||
return if mail[:from].blank?
|
return if mail[:from].blank?
|
||||||
return if mail[:body].blank?
|
return if mail[:body].blank?
|
||||||
|
@ -26,7 +27,7 @@ class Channel::Filter::MonitoringBase
|
||||||
return if !session_user_id
|
return if !session_user_id
|
||||||
|
|
||||||
# check if sender is monitoring
|
# check if sender is monitoring
|
||||||
return if !mail[:from].match(/#{Regexp.quote(sender)}/i)
|
return if !Channel::Filter::Database.match(mail[:from], sender, true, true)
|
||||||
|
|
||||||
# get mail attibutes like host and state
|
# get mail attibutes like host and state
|
||||||
result = {}
|
result = {}
|
||||||
|
@ -91,5 +92,18 @@ class Channel::Filter::MonitoringBase
|
||||||
mail[ 'x-zammad-ticket-preferences'.to_sym ][key] = value
|
mail[ 'x-zammad-ticket-preferences'.to_sym ][key] = value
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# ignorte states
|
||||||
|
if state_ignore_match.present? && result['state'].present? && result['state'].match(/#{state_ignore_match}/i)
|
||||||
|
mail[ 'x-zammad-ignore'.to_sym ] = true
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
# if now problem exists, just ignore the email
|
||||||
|
if result['state'].present? && result['state'].match(/#{state_recovery_match}/i)
|
||||||
|
mail[ 'x-zammad-ignore'.to_sym ] = true
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,40 +8,12 @@ class IntegrationIcingaTest < ActiveSupport::TestCase
|
||||||
# http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#host-states
|
# http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#host-states
|
||||||
# http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#service-states
|
# http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#service-states
|
||||||
|
|
||||||
test 'base tests' do
|
setup do
|
||||||
|
|
||||||
Setting.set('icinga_integration', true)
|
Setting.set('icinga_integration', true)
|
||||||
|
Setting.set('icinga_sender', 'icinga2@monitoring.example.com')
|
||||||
|
end
|
||||||
|
|
||||||
# not matching sender
|
test 'base tests' do
|
||||||
email_raw_string = "To: support@example.com
|
|
||||||
Subject: PROBLEM - host.internal.loc - CPU Load is WARNING
|
|
||||||
User-Agent: Heirloom mailx 12.5 7/5/10
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=us-ascii
|
|
||||||
Content-Transfer-Encoding: quoted-printable
|
|
||||||
Message-Id: <20160131094621.29ECD400F29C-icinga-1-0@monitoring.znuny.com>
|
|
||||||
From: icinga_not_matching@monitoring.example.com (icinga)
|
|
||||||
|
|
||||||
***** Icinga *****
|
|
||||||
|
|
||||||
Notification Type: PROBLEM
|
|
||||||
|
|
||||||
Service: CPU Load
|
|
||||||
Host: host.internal.loc
|
|
||||||
Address:=20
|
|
||||||
State: WARNING
|
|
||||||
|
|
||||||
Date/Time: 2016-01-31 10:46:20 +0100
|
|
||||||
|
|
||||||
Additional Info: WARNING - load average: 3.44, 0.99, 0.35
|
|
||||||
|
|
||||||
Comment: [] =
|
|
||||||
"
|
|
||||||
|
|
||||||
ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
||||||
assert_equal('new', ticket_p.state.name)
|
|
||||||
assert(ticket_p.preferences)
|
|
||||||
assert_not(ticket_p.preferences['icinga'])
|
|
||||||
|
|
||||||
# RBL check
|
# RBL check
|
||||||
email_raw_string = "To: support@example.com
|
email_raw_string = "To: support@example.com
|
||||||
|
@ -51,7 +23,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-icinga-1-1@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-icinga-1-1@monitoring.znuny.com>
|
||||||
From: icinga@monitoring.example.com (icinga)
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
***** Icinga 2 Service Monitoring on apn4711.dc.example.com *****
|
***** Icinga 2 Service Monitoring on apn4711.dc.example.com *****
|
||||||
|
|
||||||
|
@ -82,7 +54,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-icinga-1-2@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-icinga-1-2@monitoring.znuny.com>
|
||||||
From: icinga@monitoring.example.com (icinga)
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
***** Icinga 2 Service Monitoring on apn4711.dc.example.com *****
|
***** Icinga 2 Service Monitoring on apn4711.dc.example.com *****
|
||||||
|
|
||||||
|
@ -113,7 +85,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-icinga-1-2@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-icinga-1-2@monitoring.znuny.com>
|
||||||
From: icinga@monitoring.example.com (icinga)
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
***** Icinga 2 Service Monitoring on apn4711.dc.example.com *****
|
***** Icinga 2 Service Monitoring on apn4711.dc.example.com *****
|
||||||
|
|
||||||
|
@ -145,7 +117,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-icinga-2@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-icinga-2@monitoring.znuny.com>
|
||||||
From: icinga@monitoring.example.com (icinga)
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
***** Icinga *****
|
***** Icinga *****
|
||||||
|
|
||||||
|
@ -179,7 +151,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-icinga-3@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-icinga-3@monitoring.znuny.com>
|
||||||
From: icinga@monitoring.example.com (icinga)
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
***** Icinga *****
|
***** Icinga *****
|
||||||
|
|
||||||
|
@ -214,7 +186,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-icinga-4@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-icinga-4@monitoring.znuny.com>
|
||||||
From: icinga@monitoring.example.com (icinga)
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
***** Icinga *****
|
***** Icinga *****
|
||||||
|
|
||||||
|
@ -249,7 +221,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-icinga-5@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-icinga-5@monitoring.znuny.com>
|
||||||
From: icinga@monitoring.example.com (icinga)
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
***** Icinga *****
|
***** Icinga *****
|
||||||
|
|
||||||
|
@ -284,7 +256,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-icinga-5@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-icinga-5@monitoring.znuny.com>
|
||||||
From: icinga@monitoring.example.com (icinga)
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
***** Icinga *****
|
***** Icinga *****
|
||||||
|
|
||||||
|
@ -317,7 +289,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-icinga-5@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-icinga-5@monitoring.znuny.com>
|
||||||
From: icinga@monitoring.example.com (icinga)
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
***** Icinga *****
|
***** Icinga *****
|
||||||
|
|
||||||
|
@ -341,9 +313,246 @@ Comment: [] =
|
||||||
assert_equal('apn4711.dc.example.com', ticket_3.preferences['icinga']['host'])
|
assert_equal('apn4711.dc.example.com', ticket_3.preferences['icinga']['host'])
|
||||||
assert_nil(ticket_3_1.preferences['icinga']['service'])
|
assert_nil(ticket_3_1.preferences['icinga']['service'])
|
||||||
assert_equal('DOWN', ticket_3_1.preferences['icinga']['state'])
|
assert_equal('DOWN', ticket_3_1.preferences['icinga']['state'])
|
||||||
|
end
|
||||||
|
|
||||||
#Setting.set('icinga_integration', false)
|
test 'not matching sender tests' do
|
||||||
|
|
||||||
|
# not matching sender
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: PROBLEM - host.internal.loc - CPU Load is WARNING
|
||||||
|
User-Agent: Heirloom mailx 12.5 7/5/10
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-icinga-1-0@monitoring.znuny.com>
|
||||||
|
From: icinga_not_matching@monitoring.example.com (icinga)
|
||||||
|
|
||||||
|
***** Icinga *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host.internal.loc
|
||||||
|
Address:=20
|
||||||
|
State: WARNING
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info: WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
|
||||||
|
Comment: [] =
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_p.state.name)
|
||||||
|
assert(ticket_p.preferences)
|
||||||
|
assert_not(ticket_p.preferences['icinga'])
|
||||||
|
|
||||||
|
Setting.set('icinga_sender', 'regex:icinga2@monitoring.example.com')
|
||||||
|
|
||||||
|
# not matching sender
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: PROBLEM - host.internal.loc - CPU Load is WARNING
|
||||||
|
User-Agent: Heirloom mailx 12.5 7/5/10
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-icinga-1-0@monitoring.znuny.com>
|
||||||
|
From: icinga_not_matching@monitoring.example.com (icinga)
|
||||||
|
|
||||||
|
***** Icinga *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host.internal.loc
|
||||||
|
Address:=20
|
||||||
|
State: WARNING
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info: WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
|
||||||
|
Comment: [] =
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_p.state.name)
|
||||||
|
assert(ticket_p.preferences)
|
||||||
|
assert_not(ticket_p.preferences['icinga'])
|
||||||
|
|
||||||
|
# not matching sender
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: PROBLEM - host.internal.loc - CPU Load is WARNING
|
||||||
|
User-Agent: Heirloom mailx 12.5 7/5/10
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-icinga-1-0@monitoring.znuny.com>
|
||||||
|
Return-Path: bob@example.com
|
||||||
|
|
||||||
|
***** Icinga *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host.internal.loc
|
||||||
|
Address:=20
|
||||||
|
State: WARNING
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info: WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
|
||||||
|
Comment: [] =
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_p.state.name)
|
||||||
|
assert(ticket_p.preferences)
|
||||||
|
assert_not(ticket_p.preferences['icinga'])
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'matching sender tests' do
|
||||||
|
|
||||||
|
# matching sender - follow up - CPU Load/host.internal.loc
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: PROBLEM - host.internal.loc - CPU Load is WARNING
|
||||||
|
User-Agent: Heirloom mailx 12.5 7/5/10
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-icinga-4@monitoring.znuny.com>
|
||||||
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
|
***** Icinga *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host.internal.loc
|
||||||
|
Address:=20
|
||||||
|
State: WARNING
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info: WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
|
||||||
|
Comment: [] =
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_1_1, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_1_1.state.name)
|
||||||
|
assert(ticket_1_1.preferences)
|
||||||
|
assert(ticket_1_1.preferences['icinga'])
|
||||||
|
assert_equal('host.internal.loc', ticket_1_1.preferences['icinga']['host'])
|
||||||
|
assert_equal('CPU Load', ticket_1_1.preferences['icinga']['service'])
|
||||||
|
assert_equal('WARNING', ticket_1_1.preferences['icinga']['state'])
|
||||||
|
|
||||||
|
Setting.set('icinga_sender', 'regex:icinga2@monitoring.example.com')
|
||||||
|
|
||||||
|
# matching sender I
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: PROBLEM - host1.internal.loc - CPU Load is WARNING
|
||||||
|
User-Agent: Heirloom mailx 12.5 7/5/10
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-icinga-4@monitoring.znuny.com>
|
||||||
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
|
***** Icinga *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host1.internal.loc
|
||||||
|
Address:=20
|
||||||
|
State: WARNING
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info: WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
|
||||||
|
Comment: [] =
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_1_1, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_1_1.state.name)
|
||||||
|
assert(ticket_1_1.preferences)
|
||||||
|
assert(ticket_1_1.preferences['icinga'])
|
||||||
|
assert_equal('host1.internal.loc', ticket_1_1.preferences['icinga']['host'])
|
||||||
|
assert_equal('CPU Load', ticket_1_1.preferences['icinga']['service'])
|
||||||
|
assert_equal('WARNING', ticket_1_1.preferences['icinga']['state'])
|
||||||
|
|
||||||
|
# matching sender I
|
||||||
|
Setting.set('icinga_sender', 'regex:(icinga2|abc123)@monitoring.example.com')
|
||||||
|
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: PROBLEM - host2.internal.loc - CPU Load is WARNING
|
||||||
|
User-Agent: Heirloom mailx 12.5 7/5/10
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-icinga-4@monitoring.znuny.com>
|
||||||
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
|
***** Icinga *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host2.internal.loc
|
||||||
|
Address:=20
|
||||||
|
State: WARNING
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info: WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
|
||||||
|
Comment: [] =
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_1_1, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_1_1.state.name)
|
||||||
|
assert(ticket_1_1.preferences)
|
||||||
|
assert(ticket_1_1.preferences['icinga'])
|
||||||
|
assert_equal('host2.internal.loc', ticket_1_1.preferences['icinga']['host'])
|
||||||
|
assert_equal('CPU Load', ticket_1_1.preferences['icinga']['service'])
|
||||||
|
assert_equal('WARNING', ticket_1_1.preferences['icinga']['state'])
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test 'recover without problem tests' do
|
||||||
|
|
||||||
|
# host up without problem
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: RECOVERY - apn4711.dc.example.com is UP
|
||||||
|
User-Agent: Heirloom mailx 12.5 7/5/10
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-icinga-5@monitoring.znuny.com>
|
||||||
|
From: icinga2@monitoring.example.com (icinga)
|
||||||
|
|
||||||
|
***** Icinga *****
|
||||||
|
|
||||||
|
Notification Type: RECOVERY
|
||||||
|
|
||||||
|
Host: apn4711.dc.example.com
|
||||||
|
Address: 127.0.0.1
|
||||||
|
State: UP
|
||||||
|
|
||||||
|
Date/Time: 2017-01-14 12:07:11 +0100
|
||||||
|
|
||||||
|
Additional Info: PING OK - Packet loss = 0%, RTA = 21.37 ms
|
||||||
|
|
||||||
|
Comment: [] =
|
||||||
|
"
|
||||||
|
ticket_1, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
ticket_count = Ticket.count
|
||||||
|
assert_not(ticket_1)
|
||||||
|
assert_equal(ticket_count, Ticket.count)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,38 +6,12 @@ class IntegrationNagiosTest < ActiveSupport::TestCase
|
||||||
# according
|
# according
|
||||||
# https://github.com/NagiosEnterprises/nagioscore/blob/754218e67653929a58938b99ef6b6039b6474fe4/sample-config/template-object/commands.cfg.in#L35
|
# https://github.com/NagiosEnterprises/nagioscore/blob/754218e67653929a58938b99ef6b6039b6474fe4/sample-config/template-object/commands.cfg.in#L35
|
||||||
|
|
||||||
test 'base tests' do
|
setup do
|
||||||
|
|
||||||
Setting.set('nagios_integration', true)
|
Setting.set('nagios_integration', true)
|
||||||
|
Setting.set('nagios_sender', 'nagios2@monitoring.example.com')
|
||||||
|
end
|
||||||
|
|
||||||
# not matching sender
|
test 'base tests' do
|
||||||
email_raw_string = "To: support@example.com
|
|
||||||
Subject: ** PROBLEM Service Alert: host.internal.loc/CPU Load is WARNING **
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=us-ascii
|
|
||||||
Content-Transfer-Encoding: quoted-printable
|
|
||||||
Message-Id: <20160131094621.29ECD400F29C-nagios-1@monitoring.znuny.com>
|
|
||||||
From: nagios_not_matching@monitoring.example.com (nagios)
|
|
||||||
|
|
||||||
***** Nagios *****
|
|
||||||
|
|
||||||
Notification Type: PROBLEM
|
|
||||||
|
|
||||||
Service: CPU Load
|
|
||||||
Host: host.internal.loc
|
|
||||||
Address: 1.1.1.1
|
|
||||||
State: PROBLEM
|
|
||||||
|
|
||||||
Date/Time: 2016-01-31 10:46:20 +0100
|
|
||||||
|
|
||||||
Additional Info:
|
|
||||||
WARNING - load average: 3.44, 0.99, 0.35
|
|
||||||
"
|
|
||||||
|
|
||||||
ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
||||||
assert_equal('new', ticket_p.state.name)
|
|
||||||
assert(ticket_p.preferences)
|
|
||||||
assert_not(ticket_p.preferences['nagios'])
|
|
||||||
|
|
||||||
# matching sender - CPU Load/host.internal.loc
|
# matching sender - CPU Load/host.internal.loc
|
||||||
email_raw_string = "To: support@example.com
|
email_raw_string = "To: support@example.com
|
||||||
|
@ -46,7 +20,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-nagios-2@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-nagios-2@monitoring.znuny.com>
|
||||||
From: nagios@monitoring.example.com (nagios)
|
From: nagios2@monitoring.example.com (nagios)
|
||||||
|
|
||||||
***** Nagios *****
|
***** Nagios *****
|
||||||
|
|
||||||
|
@ -78,7 +52,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-nagios-3@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-nagios-3@monitoring.znuny.com>
|
||||||
From: nagios@monitoring.example.com (nagios)
|
From: nagios2@monitoring.example.com (nagios)
|
||||||
|
|
||||||
***** Nagios *****
|
***** Nagios *****
|
||||||
|
|
||||||
|
@ -111,7 +85,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-nagios-4@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-nagios-4@monitoring.znuny.com>
|
||||||
From: nagios@monitoring.example.com (nagios)
|
From: nagios2@monitoring.example.com (nagios)
|
||||||
|
|
||||||
***** Nagios *****
|
***** Nagios *****
|
||||||
|
|
||||||
|
@ -144,7 +118,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-nagios-5@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-nagios-5@monitoring.znuny.com>
|
||||||
From: nagios@monitoring.example.com (nagios)
|
From: nagios2@monitoring.example.com (nagios)
|
||||||
|
|
||||||
***** Nagios *****
|
***** Nagios *****
|
||||||
|
|
||||||
|
@ -176,7 +150,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-nagios-5@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-nagios-5@monitoring.znuny.com>
|
||||||
From: nagios@monitoring.example.com (nagios)
|
From: nagios2@monitoring.example.com (nagios)
|
||||||
|
|
||||||
***** Nagios *****
|
***** Nagios *****
|
||||||
|
|
||||||
|
@ -209,7 +183,7 @@ MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=us-ascii
|
Content-Type: text/plain; charset=us-ascii
|
||||||
Content-Transfer-Encoding: quoted-printable
|
Content-Transfer-Encoding: quoted-printable
|
||||||
Message-Id: <20160131094621.29ECD400F29C-nagios-5@monitoring.znuny.com>
|
Message-Id: <20160131094621.29ECD400F29C-nagios-5@monitoring.znuny.com>
|
||||||
From: nagios@monitoring.example.com (nagios)
|
From: nagios2@monitoring.example.com (nagios)
|
||||||
|
|
||||||
***** Nagios *****
|
***** Nagios *****
|
||||||
|
|
||||||
|
@ -238,4 +212,232 @@ Comment: [] =
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test 'not matching sender tests' do
|
||||||
|
|
||||||
|
# not matching sender
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: ** PROBLEM Service Alert: host.internal.loc/CPU Load is WARNING **
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-nagios-1@monitoring.znuny.com>
|
||||||
|
From: nagios_not_matching@monitoring.example.com (nagios)
|
||||||
|
|
||||||
|
***** Nagios *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host.internal.loc
|
||||||
|
Address: 1.1.1.1
|
||||||
|
State: PROBLEM
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info:
|
||||||
|
WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_p.state.name)
|
||||||
|
assert(ticket_p.preferences)
|
||||||
|
assert_not(ticket_p.preferences['nagios'])
|
||||||
|
|
||||||
|
Setting.set('nagios_sender', 'regex:icinga2@monitoring.example.com')
|
||||||
|
|
||||||
|
# not matching sender
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: ** PROBLEM Service Alert: host.internal.loc/CPU Load is WARNING **
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-nagios-1@monitoring.znuny.com>
|
||||||
|
From: nagios_not_matching@monitoring.example.com (nagios)
|
||||||
|
|
||||||
|
***** Nagios *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host.internal.loc
|
||||||
|
Address: 1.1.1.1
|
||||||
|
State: PROBLEM
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info:
|
||||||
|
WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_p.state.name)
|
||||||
|
assert(ticket_p.preferences)
|
||||||
|
assert_not(ticket_p.preferences['nagios'])
|
||||||
|
|
||||||
|
# not matching sender
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: ** PROBLEM Service Alert: host.internal.loc/CPU Load is WARNING **
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-nagios-1@monitoring.znuny.com>
|
||||||
|
Return-Path: bob@example.com
|
||||||
|
|
||||||
|
***** Nagios *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host.internal.loc
|
||||||
|
Address: 1.1.1.1
|
||||||
|
State: PROBLEM
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info:
|
||||||
|
WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_p.state.name)
|
||||||
|
assert(ticket_p.preferences)
|
||||||
|
assert_not(ticket_p.preferences['nagios'])
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'matching sender tests' do
|
||||||
|
|
||||||
|
# matching sender - follow up - CPU Load/host.internal.loc
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: ** PROBLEM Service Alert: host.internal.loc/CPU Load is WARNING **
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-nagios-2@monitoring.znuny.com>
|
||||||
|
From: nagios2@monitoring.example.com (nagios)
|
||||||
|
|
||||||
|
***** Nagios *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host.internal.loc
|
||||||
|
Address: 1.1.1.1
|
||||||
|
State: WARNING
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info:
|
||||||
|
WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_1, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_1.state.name)
|
||||||
|
assert(ticket_1.preferences)
|
||||||
|
assert(ticket_1.preferences['nagios'])
|
||||||
|
assert_equal('host.internal.loc', ticket_1.preferences['nagios']['host'])
|
||||||
|
assert_equal('CPU Load', ticket_1.preferences['nagios']['service'])
|
||||||
|
assert_equal('WARNING', ticket_1.preferences['nagios']['state'])
|
||||||
|
|
||||||
|
Setting.set('icinga_sender', 'regex:icinga2@monitoring.example.com')
|
||||||
|
|
||||||
|
# matching sender I
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: ** PROBLEM Service Alert: host.internal.loc/CPU Load is WARNING **
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-nagios-2@monitoring.znuny.com>
|
||||||
|
From: nagios2@monitoring.example.com (nagios)
|
||||||
|
|
||||||
|
***** Nagios *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host1.internal.loc
|
||||||
|
Address: 1.1.1.1
|
||||||
|
State: WARNING
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info:
|
||||||
|
WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_1, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_1.state.name)
|
||||||
|
assert(ticket_1.preferences)
|
||||||
|
assert(ticket_1.preferences['nagios'])
|
||||||
|
assert_equal('host1.internal.loc', ticket_1.preferences['nagios']['host'])
|
||||||
|
assert_equal('CPU Load', ticket_1.preferences['nagios']['service'])
|
||||||
|
assert_equal('WARNING', ticket_1.preferences['nagios']['state'])
|
||||||
|
|
||||||
|
# matching sender I
|
||||||
|
Setting.set('icinga_sender', 'regex:(icinga2|abc123)@monitoring.example.com')
|
||||||
|
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: ** PROBLEM Service Alert: host.internal.loc/CPU Load is WARNING **
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-nagios-2@monitoring.znuny.com>
|
||||||
|
From: nagios2@monitoring.example.com (nagios)
|
||||||
|
|
||||||
|
***** Nagios *****
|
||||||
|
|
||||||
|
Notification Type: PROBLEM
|
||||||
|
|
||||||
|
Service: CPU Load
|
||||||
|
Host: host2.internal.loc
|
||||||
|
Address: 1.1.1.1
|
||||||
|
State: WARNING
|
||||||
|
|
||||||
|
Date/Time: 2016-01-31 10:46:20 +0100
|
||||||
|
|
||||||
|
Additional Info:
|
||||||
|
WARNING - load average: 3.44, 0.99, 0.35
|
||||||
|
"
|
||||||
|
|
||||||
|
ticket_1, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
assert_equal('new', ticket_1.state.name)
|
||||||
|
assert(ticket_1.preferences)
|
||||||
|
assert(ticket_1.preferences['nagios'])
|
||||||
|
assert_equal('host2.internal.loc', ticket_1.preferences['nagios']['host'])
|
||||||
|
assert_equal('CPU Load', ticket_1.preferences['nagios']['service'])
|
||||||
|
assert_equal('WARNING', ticket_1.preferences['nagios']['state'])
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'recover without problem tests' do
|
||||||
|
|
||||||
|
# host up without problem
|
||||||
|
email_raw_string = "To: support@example.com
|
||||||
|
Subject: ** RECOVERY Host Alert: apn4711.dc.example.com is UP **
|
||||||
|
User-Agent: Heirloom mailx 12.5 7/5/10
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Message-Id: <20160131094621.29ECD400F29C-nagios-5@monitoring.znuny.com>
|
||||||
|
From: nagios2@monitoring.example.com (nagios)
|
||||||
|
|
||||||
|
***** Nagios *****
|
||||||
|
|
||||||
|
Notification Type: RECOVERY
|
||||||
|
|
||||||
|
Host: apn4711.dc.example.com
|
||||||
|
Address: 127.0.0.1
|
||||||
|
State: UP
|
||||||
|
|
||||||
|
Date/Time: 2017-01-14 12:07:11 +0100
|
||||||
|
|
||||||
|
Additional Info: PING OK - Packet loss = 0%, RTA = 21.37 ms
|
||||||
|
|
||||||
|
Comment: [] =
|
||||||
|
"
|
||||||
|
ticket_1, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
ticket_count = Ticket.count
|
||||||
|
assert_not(ticket_1)
|
||||||
|
assert_equal(ticket_count, Ticket.count)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue