kannel_monitor 0.0.2 → 0.0.3
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 +5 -13
- data/README.md +6 -23
- data/bin/kannel_monitor +1 -1
- data/config/kannel_monitor.yml +4 -4
- data/kannel_monitor.gemspec +6 -4
- data/lib/kannel_monitor/configuration.rb +24 -0
- data/lib/kannel_monitor/kannel_monitor.rb +57 -72
- data/lib/kannel_monitor/send_mail.rb +7 -7
- data/lib/kannel_monitor/version.rb +1 -1
- metadata +53 -11
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NTE0Y2Y4MWFiNWMzZDA1NWJkMWI5NzQ0YzA4NDY4ZjlhOThhN2UzZA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 82db24c8c686e9d29c756c9bbcf60c6dd3efc8b6
|
4
|
+
data.tar.gz: 97fba3e31c762255a6d21c73674bf285e3cc5853
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MGUzYjM3MDZjYzhhZWFhZDFlYTczNGIzMmVmNmRjZTQ5N2VkODg2NTRlMjZi
|
11
|
-
NGVkZWYxMWFhZTg1NTQ4ZDg1MGU4MWQxMTRiYjk1ZjIyYjMxZTM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MDg0ZDNlNmUxNDM5YTBhYmVkOWE2ZDNmZDc0MjNjNjJjNzRlOWRhZjc4ZmNm
|
14
|
-
YTJlYmY1ZDc4OTkxMzAwNDQwN2E1ZjNjZTA3MTBlNmExMWIwYjllZTM0MTlj
|
15
|
-
NWZiNTE2YWFjMGVlYmM0ZTBjMjhjOTg3N2U2Yzg0ZTUyMGVlODY=
|
6
|
+
metadata.gz: bc8481e173bec7d7b713e01af7604de5873bdf3f8efd79c69b6099ff9a45f30b0f3704ccdbfd674c2f39b943b5d525b8c5ba72add353fe64a7073d1a66739739
|
7
|
+
data.tar.gz: 9c1bd8f079057d4479ca99dcd1290f412c37c91f245a4b72245efd36406263fd6a93e8fc192dc0823b5351576d19cfa09a99521c4d3b98cf775a1ce81a8b5ecb
|
data/README.md
CHANGED
@@ -2,11 +2,10 @@
|
|
2
2
|
|
3
3
|
This is ruby gem for monitoring kannle smsc status. This gem will check
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
- kannel status
|
6
|
+
- kannel sms queue
|
7
|
+
- smsc status
|
8
|
+
- smsc queue
|
10
9
|
|
11
10
|
|
12
11
|
## Installation
|
@@ -27,26 +26,10 @@ Or install it yourself as:
|
|
27
26
|
|
28
27
|
To run this
|
29
28
|
|
29
|
+
$ kannel_monitor 'path to kannel_monitor.yml'
|
30
30
|
|
31
|
-
$ kannel_monitor ' path to kannel /kannel_monitor.yml'
|
32
|
-
|
33
|
-
|
34
|
-
Format of kannel_monitor.yml
|
35
|
-
|
36
|
-
|
37
|
-
kannel_settings:
|
38
|
-
host: xxxxxxxxxx
|
39
|
-
port: xxxxxxx
|
40
|
-
username: admin
|
41
|
-
password: xxxxxxx
|
42
|
-
smsc_to_be_skipped:
|
43
|
-
- smsc1
|
44
|
-
- smsc2
|
45
|
-
kannel_name: 'TEST-KANNEL'
|
46
|
-
email_settings:
|
47
|
-
to: 'example@gmail.com'
|
48
|
-
from: 'notification@kannle.in'
|
49
31
|
|
32
|
+
Format of kannel_monitor.yml is given [here] (https://github.com/shaijunonu/kannel-monitor/blob/master/config/kannel_monitor.yml).
|
50
33
|
|
51
34
|
|
52
35
|
## Contributing
|
data/bin/kannel_monitor
CHANGED
data/config/kannel_monitor.yml
CHANGED
@@ -4,11 +4,11 @@ kannel_settings:
|
|
4
4
|
username: admin
|
5
5
|
password: xxxxxxx
|
6
6
|
smsc_to_be_skipped:
|
7
|
-
-
|
8
|
-
-
|
9
|
-
kannel_name: '
|
7
|
+
- smsc1
|
8
|
+
- smsc3
|
9
|
+
kannel_name: 'TEST-KANNEL'
|
10
10
|
email_settings:
|
11
|
-
to: '
|
11
|
+
to: 'eshaiju@gmail.com'
|
12
12
|
from: 'notification@kannle.in'
|
13
13
|
|
14
14
|
|
data/kannel_monitor.gemspec
CHANGED
@@ -6,9 +6,9 @@ require 'kannel_monitor/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "kannel_monitor"
|
8
8
|
spec.version = KannelMonitor::VERSION
|
9
|
-
spec.authors = ["
|
9
|
+
spec.authors = ["shaijunonu"]
|
10
10
|
spec.email = ["shaiju@mobme.in"]
|
11
|
-
spec.description = %q{Gem for
|
11
|
+
spec.description = %q{Gem for monitoring kannel status and also smsc status}
|
12
12
|
spec.summary = %q{Gem for monitoring kannel }
|
13
13
|
spec.homepage = "https://github.com/shaijunonu/kannel-monitor"
|
14
14
|
spec.license = "MIT"
|
@@ -23,6 +23,8 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "rake"
|
24
24
|
spec.add_development_dependency "sendmail", "~> 0.0.1"
|
25
25
|
spec.add_development_dependency "pony", "~> 1.5.1"
|
26
|
-
|
27
|
-
|
26
|
+
spec.add_development_dependency "nokogiri", "~> 1.6.0"
|
27
|
+
spec.add_development_dependency "active_support", "~> 3.0.0"
|
28
|
+
spec.add_development_dependency "i18n"
|
28
29
|
end
|
30
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "logger"
|
2
|
+
require 'yaml'
|
3
|
+
require 'open-uri'
|
4
|
+
require 'active_support/core_ext'
|
5
|
+
|
6
|
+
module KannelMonitor
|
7
|
+
module Configuration
|
8
|
+
def load_settings(configuration_file)
|
9
|
+
@settings = YAML.load_file(configuration_file).symbolize_keys!
|
10
|
+
@host = @settings[:kannel_settings]['host']
|
11
|
+
@port = @settings[:kannel_settings]['port']
|
12
|
+
@username = @settings[:kannel_settings]['username']
|
13
|
+
@password = @settings[:kannel_settings]['password']
|
14
|
+
@smsc_to_be_skipped = @settings[:kannel_settings]['smsc_to_be_skipped'] || []
|
15
|
+
@queue_alert_limit = @settings[:kannel_settings]['queue_alert_limit'] || 200
|
16
|
+
@kannel_name = @settings[:kannel_settings]['kannel_name'] || ""
|
17
|
+
@to_mails = @settings[:email_settings]['to']
|
18
|
+
@from_mail = @settings[:email_settings]['to'] || 'notification@kannel.org'
|
19
|
+
@logger = Logger.new(STDOUT)
|
20
|
+
@kannel_error_status = {'suspended' =>'kannel is in suspended state','isolated' => 'kannel is in isolated state' ,'full' => 'Kannel maximum-queue-length is achieved' ,'shutdown' =>'Kannel is shutdown state'}
|
21
|
+
@smsc_error_status = {'re-connecting' => 'SMSC is re-connecting :: ' , 'dead' => 'SMSC is dead ::' }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,99 +1,84 @@
|
|
1
|
-
require "logger"
|
2
|
-
require 'yaml'
|
3
1
|
require 'nokogiri'
|
4
|
-
require 'open-uri'
|
5
|
-
require 'active_support/core_ext'
|
6
2
|
require_relative './send_mail'
|
3
|
+
require_relative './configuration'
|
7
4
|
|
8
5
|
module KannelMonitor
|
9
6
|
ERROR_COULD_NOT_CONNECT = "Could not connect to Kannel status URL"
|
10
7
|
ERROR_XML_PARSING = 'Could not parse Kannel status XML.'
|
11
8
|
ERROR_SMSC_QUEUE = 'SMS are getting queued on SMSC :: '
|
12
9
|
class Monitor
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
@username = @settings[:kannel_settings]['username']
|
19
|
-
@password = @settings[:kannel_settings]['password']
|
20
|
-
@smsc_to_be_skipped = @settings[:kannel_settings]['smsc_to_be_skipped'] || []
|
21
|
-
@queue_alert_limit = @settings[:kannel_settings]['queue_alert_limit'] || 200
|
22
|
-
@kannel_name = @settings[:kannel_settings]['kannel_name'] || ""
|
23
|
-
@to_mails = @settings[:email_settings]['to']
|
24
|
-
@from_mail = @settings[:email_settings]['to'] || 'notification@kannel.org'
|
25
|
-
@logger = Logger.new(STDOUT)
|
26
|
-
@kannel_error_status = {'suspended' =>'kannel is in suspended state','isolated' => 'kannel is in isolated state' ,'full' => 'Kannel maximum-queue-length is achieved' ,'shutdown' =>'Kannel is shutdown state'}
|
27
|
-
@smsc_error_status = {'re-connecting' => 'SMSC is re-connecting :: ' , 'dead' => 'SMSC is dead ::' }
|
28
|
-
end
|
10
|
+
include Mailer
|
11
|
+
include Configuration
|
12
|
+
def initialize(configuration_file = {})
|
13
|
+
load_settings(configuration_file)
|
14
|
+
end
|
29
15
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
16
|
+
def start_monitoring
|
17
|
+
@xml_doc = prepare_xml_doc
|
18
|
+
if @xml_doc
|
19
|
+
fetch_kannel_status
|
20
|
+
fetch_smsc_status
|
21
|
+
fetch_queued_count
|
22
|
+
end
|
23
|
+
end
|
38
24
|
|
39
|
-
|
40
|
-
|
25
|
+
def prepare_xml_doc
|
26
|
+
begin
|
41
27
|
@xml_content_doc = Nokogiri::XML(open("http://#{@host}:#{@port}/status.xml?username=#{@username}&password=#{@password}"))
|
42
|
-
|
43
|
-
|
44
|
-
|
28
|
+
@logger.info("Fetching Kannel status from http://#{@host}:#{@port}/status.xml?username=#{@username}&password=#{@password}")
|
29
|
+
rescue
|
30
|
+
@logger.info(ERROR_COULD_NOT_CONNECT)
|
45
31
|
send_mail(ERROR_COULD_NOT_CONNECT)
|
46
|
-
|
47
|
-
|
48
|
-
|
32
|
+
end
|
33
|
+
@xml_content_doc
|
34
|
+
end
|
49
35
|
|
50
|
-
|
36
|
+
def fetch_kannel_status
|
51
37
|
kannel_status = @xml_doc.css('status').text.split(",").first
|
38
|
+
@logger.info('Kannel status :: '+kannel_status)
|
52
39
|
@kannel_error_status.each do | key,value|
|
53
40
|
if kannel_status == key
|
54
|
-
|
55
|
-
send_mail(value)
|
41
|
+
send_mail(value)
|
56
42
|
break
|
57
43
|
end
|
58
44
|
end
|
59
|
-
|
45
|
+
end
|
60
46
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
47
|
+
def fetch_smsc_status
|
48
|
+
@logger.info('SMSC Status')
|
49
|
+
smscs = @xml_doc.css('smsc')
|
50
|
+
smscs.each do |smsc|
|
51
|
+
smsc_id = smsc.css('id').text
|
52
|
+
smsc_queue = smsc.css('queued').text
|
53
|
+
unless @smsc_to_be_skipped.include?(smsc_id)
|
54
|
+
status = smsc.css('status').text.split(' ')
|
55
|
+
@logger.info(status[0] +' :: '+ smsc_id )
|
69
56
|
@smsc_error_status.each do | key,value|
|
70
|
-
|
71
|
-
|
72
|
-
send_mail(value + smsc_id)
|
57
|
+
if status[0] == key
|
58
|
+
send_mail(value + smsc_id)
|
73
59
|
break
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
60
|
+
end
|
61
|
+
end
|
62
|
+
if smsc_queue.to_i > @queue_alert_limit.to_i
|
63
|
+
@logger.info(ERROR_SMSC_QUEUE + smsc_id)
|
78
64
|
send_mail(ERROR_SMSC_QUEUE + smsc_id)
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
83
69
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
70
|
+
def fetch_queued_count
|
71
|
+
sent_status = @xml_doc.css('sent')
|
72
|
+
sent_status.each do |status|
|
73
|
+
queue_size = status.css('queued').text
|
74
|
+
if queue_size.to_i > @queue_alert_limit.to_i
|
75
|
+
text = "SMS are getting queued"
|
90
76
|
send_mail(text)
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
96
81
|
end
|
97
82
|
|
98
|
-
#kannel_monitor = KannelMonitor::Monitor.new('/home/shaiju/kannel/kannel_monitor.yml')
|
99
|
-
#kannel_monitor.start_monitoring
|
83
|
+
# kannel_monitor = KannelMonitor::Monitor.new('/home/shaiju/kannel/kannel_monitor.yml')
|
84
|
+
# kannel_monitor.start_monitoring
|
@@ -5,13 +5,13 @@ require 'pony'
|
|
5
5
|
module KannelMonitor
|
6
6
|
module Mailer
|
7
7
|
def send_mail(text)
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
@logger.info("sending mail.........")
|
9
|
+
Pony.mail(
|
10
|
+
:from => 'notification@kannel.org',
|
11
|
+
:to => @to_mails,
|
12
|
+
:via => :sendmail,
|
13
|
+
:subject => "[CRITICAL]::#{@kannel_name}::#{text}".upcase,
|
14
|
+
:body => "Kannel Name : #{@kannel_name} \nHost : #{@host} \nPort : #{@port} \n#{text} as on #{Time.now}")
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kannel_monitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- shaijunonu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,14 +28,14 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -66,7 +66,49 @@ dependencies:
|
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 1.5.1
|
69
|
-
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: nokogiri
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.6.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.6.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: active_support
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.0.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.0.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: i18n
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Gem for monitoring kannel status and also smsc status
|
70
112
|
email:
|
71
113
|
- shaiju@mobme.in
|
72
114
|
executables:
|
@@ -78,13 +120,14 @@ files:
|
|
78
120
|
- LICENSE.txt
|
79
121
|
- README.md
|
80
122
|
- Rakefile
|
123
|
+
- bin/kannel_monitor
|
81
124
|
- config/kannel_monitor.yml
|
82
125
|
- kannel_monitor.gemspec
|
83
126
|
- lib/kannel_monitor.rb
|
127
|
+
- lib/kannel_monitor/configuration.rb
|
84
128
|
- lib/kannel_monitor/kannel_monitor.rb
|
85
129
|
- lib/kannel_monitor/send_mail.rb
|
86
130
|
- lib/kannel_monitor/version.rb
|
87
|
-
- bin/kannel_monitor
|
88
131
|
homepage: https://github.com/shaijunonu/kannel-monitor
|
89
132
|
licenses:
|
90
133
|
- MIT
|
@@ -95,19 +138,18 @@ require_paths:
|
|
95
138
|
- lib
|
96
139
|
required_ruby_version: !ruby/object:Gem::Requirement
|
97
140
|
requirements:
|
98
|
-
- -
|
141
|
+
- - '>='
|
99
142
|
- !ruby/object:Gem::Version
|
100
143
|
version: '0'
|
101
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
145
|
requirements:
|
103
|
-
- -
|
146
|
+
- - '>='
|
104
147
|
- !ruby/object:Gem::Version
|
105
148
|
version: '0'
|
106
149
|
requirements: []
|
107
150
|
rubyforge_project:
|
108
|
-
rubygems_version: 2.
|
151
|
+
rubygems_version: 2.0.3
|
109
152
|
signing_key:
|
110
153
|
specification_version: 4
|
111
154
|
summary: Gem for monitoring kannel
|
112
155
|
test_files: []
|
113
|
-
has_rdoc:
|