sumo-check-sumo 0.0.22 → 0.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8daa0ae342c22e737918fd5fa0129e92075f6df7
4
- data.tar.gz: ec1beba596680aca570790ad0e5f3cb3ca606c68
3
+ metadata.gz: 9a0f870e07ebe0ce302e00a2326d711f2cf31c8e
4
+ data.tar.gz: 932ff67a0ba0fa312fff471c8e7964cb30d92257
5
5
  SHA512:
6
- metadata.gz: 9efa2b000504a82eacd9eb6698d0109d9f10c5dd91f0bd0fa8dccbe5a40840803520bc70b3ec748735070e39807a08fd057b13786eeb34743258614012d78005
7
- data.tar.gz: 6f498aa3cf8e04515160d5acb93c85d8f8fe7a5c00eafad32aee3105997c5e6ee63ac328be2be446819bcb9e0508cb526f356382f6c9aa8ba5490cc9fab4dd88
6
+ metadata.gz: f4e8ac285e10db628a6339f6e33f6ad17c94a1898862acd858feecb8e7c2f91c9646bc344a964d454c8b89a8bc2c838696e526a7817b20651de13efec0f8c8c3
7
+ data.tar.gz: e16d1ae8b8ee33668b461a30cf4cfeb6596f59ea61bd2b74fbc91b3aca557a7042a20258c197292a76e1dc171eac5a5afe01354a4363d54db8335710b9ddc568
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env ruby
2
+
3
+
4
+ require 'sensu-plugin/metric/cli'
5
+ require 'mysql2'
6
+ require 'inifile'
7
+
8
+ class SumoMessageCenterMetrics < Sensu::Plugin::Metric::CLI::Graphite
9
+
10
+ def run
11
+ ini = IniFile.load('/root/.my.cnf')
12
+ check_prefix_name="SumoMailMetrics"
13
+ section = ini['client']
14
+ db = Mysql2::Client.new(:host => "127.0.0.1", :username => section['user'], :database => "sumome", :password => section['password'])
15
+ metrics = ['errorsending','timedout','optedout','excluded','pending','inprogress','delivered']
16
+
17
+ list_types = db.query("select DISTINCT email_list_type from SumoMailEmail;",:as => :array).to_a.flatten
18
+ list_types.each do |type|
19
+ metrics.each do |m|
20
+ result = db.query("SELECT count(id) FROM SumoMailEmail where state='#{m}' and email_list_type='#{type}';")
21
+ if result.count > 0
22
+ output "#{check_prefix_name}.#{type}.#{m}.count".tr(' ', '_'),result.first["count(id)"].to_i,Time.now.to_i
23
+ end
24
+ end
25
+ end
26
+
27
+ ok
28
+ rescue Mysql2::Error => e
29
+ errstr = "Error code: #{e.errno} Error message: #{e.error}"
30
+ critical "#{errstr} SQLSTATE: #{e.sqlstate}" if e.respond_to?('sqlstate')
31
+ rescue => e
32
+ critical e
33
+ ensure
34
+ db.close if db
35
+ end
36
+ end
37
+
38
+
39
+ # mysql> select DISTINCT email_list_type from SumoMailEmail;
40
+ # +-------------------------+
41
+ # | email_list_type |
42
+ # +-------------------------+
43
+ # | auto-response-email |
44
+ # | automation-email |
45
+ # | customer-outreach-email |
46
+ # | customer-outreach-test |
47
+ # | customer-outreach-type |
48
+ # | sumo-chat-email |
49
+ # +-------------------------+
50
+ # 6 rows in set (0.00 sec)
51
+
52
+
53
+ # mysql> show columns from SumoMailEmail;
54
+ # +--------------------------------+------------------------------------------------------------------------------------------+------+-----+---------+-------+
55
+ # | Field | Type | Null | Key | Default | Extra |
56
+ # +--------------------------------+------------------------------------------------------------------------------------------+------+-----+---------+-------+
57
+ # | id | varchar(36) | NO | PRI | NULL | |
58
+ # | email | varchar(255) | YES | MUL | NULL | |
59
+ # | site_id | varchar(64) | YES | MUL | NULL | |
60
+ # | sender | varchar(255) | YES | | NULL | |
61
+ # | app_id | varchar(36) | YES | MUL | NULL | |
62
+ # | rule_id | varchar(36) | YES | MUL | NULL | |
63
+ # | email_id | varchar(36) | YES | MUL | NULL | |
64
+ # | sendgrid_id | text | YES | | NULL | |
65
+ # | campaign_rule_id | varchar(36) | YES | MUL | NULL | |
66
+ # | template | text | NO | | NULL | |
67
+ # | header | text | YES | | NULL | |
68
+ # | subheader | text | YES | | NULL | |
69
+ # | html_body | text | YES | | NULL | |
70
+ # | markdown_body | text | YES | | NULL | |
71
+ # | label | varchar(255) | NO | MUL | NULL | |
72
+ # | state | enum('errorsending','timedout','optedout','excluded','pending','inprogress','delivered') | NO | MUL | pending | |
73
+ # | dont_send_if_has_same_label | tinyint(1) | NO | | 0 | |
74
+ # | same_label_timeout | int(11) unsigned | YES | | NULL | |
75
+ # | dont_send_if_has_same_email_id | tinyint(1) | NO | | 0 | |
76
+ # | same_email_id_timeout | int(11) unsigned | YES | | NULL | |
77
+ # | context | text | YES | | NULL | |
78
+ # | scheduled_for | datetime | NO | MUL | NULL | |
79
+ # | email_task_id | varchar(36) | YES | MUL | NULL | |
80
+ # | email_task_at | datetime | YES | | NULL | |
81
+ # | email_sent_at | datetime | YES | MUL | NULL | |
82
+ # | email_open_at | datetime | YES | MUL | NULL | |
83
+ # | email_unsubbed_at | datetime | YES | MUL | NULL | |
84
+ # | email_bounced_at | datetime | YES | | NULL | |
85
+ # | email_complained_at | datetime | YES | | NULL | |
86
+ # | email_clicked_at | datetime | YES | MUL | NULL | |
87
+ # | email_list_type | varchar(100) | YES | MUL | NULL | |
88
+ # | created_at | datetime | NO | MUL | NULL | |
89
+ # | updated_at | datetime | NO | MUL | NULL | |
90
+ # | reply_to | varchar(255) | YES | | NULL | |
91
+ # | is_test | tinyint(1) | YES | MUL | NULL | |
92
+ # | json_body | text | YES | | NULL | |
93
+ # | tokens | text | YES | | NULL | |
94
+ # +--------------------------------+------------------------------------------------------------------------------------------+------+-----+---------+-------+
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+ require 'sensu-plugin/check/cli'
3
+ require 'mysql2'
4
+ require 'inifile'
5
+
6
+ class SumoSumoMailEmailCheck < Sensu::Plugin::Check::CLI
7
+
8
+ option :warn_value,
9
+ short: '-W VALUE',
10
+ long: '--warn_value VALUE',
11
+ description: 'Warning for Pending Messages',
12
+ required: false,
13
+ default: 1000
14
+
15
+ option :critical_value,
16
+ short: '-c VALUE',
17
+ long: '--critical_value VALUE',
18
+ description: 'critical for Pending Messages',
19
+ required: false,
20
+ default: 1500
21
+
22
+ option :interval_value,
23
+ short: '-i VALUE',
24
+ long: '--interval VALUE',
25
+ description: 'interval window in minutes',
26
+ required: false,
27
+ default: 10
28
+
29
+ def run
30
+ ini = IniFile.load('/root/.my.cnf')
31
+ section = ini['client']
32
+ db = Mysql2::Client.new(:host => "127.0.0.1", :username => section['user'], :database => "sumome", :password => section['password'])
33
+ # pending_count = db.query("SELECT count(id) FROM SumoMailEmail where state='pending' and scheduled_for <= NOW() - INTERVAL #{config[:interval_value].to_i} MINUTE;").first["count(id)"].to_i
34
+ pending_count = db.query("SELECT count(id) FROM SumoMailEmail where state='pending').first["count(id)"].to_i
35
+
36
+ case
37
+ when pending_count == 0
38
+ ok "SumoMailEmail Pending Count is: #{pending_count} "
39
+ when pending_count >config[:critical_value].to_i
40
+ critical "SumoMailEmail Pending Count is: #{pending_count} "
41
+ when pending_count >config[:warn_value].to_i
42
+ warning "SumoMailEmailPending Count is: #{pending_count} "
43
+ else
44
+ warning "ODD: we did not match any cases for alerts, this should not happen, SumoMailEmail Pending Count is: #{pending_count} "
45
+ end
46
+
47
+ end
48
+
49
+ end
@@ -30,7 +30,8 @@ class SumoMessageCenterCheck < Sensu::Plugin::Check::CLI
30
30
  ini = IniFile.load('/root/.my.cnf')
31
31
  section = ini['client']
32
32
  db = Mysql2::Client.new(:host => "127.0.0.1", :username => section['user'], :database => "sumome", :password => section['password'])
33
- pending_count = db.query("SELECT count(id) FROM SumoMailEmail where state='pending' and scheduled_for <= NOW() - INTERVAL #{config[:interval_value].to_i} MINUTE;").first["count(id)"].to_i
33
+ # pending_count = db.query("SELECT count(id) FROM MessageCenterEmail where state='pending' and scheduled_for <= NOW() - INTERVAL #{config[:interval_value].to_i} MINUTE;").first["count(id)"].to_i
34
+ pending_count = db.query("SELECT count(id) FROM MessageCenterEmail where state='pending').first["count(id)"].to_i
34
35
 
35
36
  case
36
37
  when pending_count == 0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sumo-check-sumo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dr. Ogg
@@ -108,9 +108,13 @@ executables:
108
108
  - sumo-platform-audit.rb
109
109
  - sumo-message-center-metrics.rb
110
110
  - sumo-check-message-center.rb
111
+ - sumo-check-SumoMailEmail.rb
112
+ - sumo-SumoMailEmail-metrics.rb
111
113
  extensions: []
112
114
  extra_rdoc_files: []
113
115
  files:
116
+ - bin/sumo-SumoMailEmail-metrics.rb
117
+ - bin/sumo-check-SumoMailEmail.rb
114
118
  - bin/sumo-check-docker.rb
115
119
  - bin/sumo-check-message-center.rb
116
120
  - bin/sumo-check-new-relic-apdex.rb