kannel_monitor 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|