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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YTlmYzBjMTU4YzM4NmIxMGQxOTgxZTUyMmYxM2Q5ZjExZGQ1ZTI0ZQ==
5
- data.tar.gz: !binary |-
6
- NTE0Y2Y4MWFiNWMzZDA1NWJkMWI5NzQ0YzA4NDY4ZjlhOThhN2UzZA==
2
+ SHA1:
3
+ metadata.gz: 82db24c8c686e9d29c756c9bbcf60c6dd3efc8b6
4
+ data.tar.gz: 97fba3e31c762255a6d21c73674bf285e3cc5853
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NzFhZTgwNzhmNmRkZmFkMThiOTc0MWI3Mzc4ZmM5M2E3ZDk5MmNlNmMyZjMz
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
- 1 kannel status
6
- 2 kannel sms queue
7
- 3 smsc status
8
- 4 smsc queue
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
@@ -3,4 +3,4 @@
3
3
  require_relative '../lib/kannel_monitor/kannel_monitor'
4
4
 
5
5
  kannel_monitor = KannelMonitor::Monitor.new(ARGV[0])
6
- kannel_monitor.start_monitoring
6
+ kannel_monitor.start_monitoring
@@ -4,11 +4,11 @@ kannel_settings:
4
4
  username: admin
5
5
  password: xxxxxxx
6
6
  smsc_to_be_skipped:
7
- - VfirstTranscriticalESMS
8
- - RouteSmsTransaction
9
- kannel_name: 'FA-KANNEL'
7
+ - smsc1
8
+ - smsc3
9
+ kannel_name: 'TEST-KANNEL'
10
10
  email_settings:
11
- to: 'shaiju@mobme.in'
11
+ to: 'eshaiju@gmail.com'
12
12
  from: 'notification@kannle.in'
13
13
 
14
14
 
@@ -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 = ["shaiju"]
9
+ spec.authors = ["shaijunonu"]
10
10
  spec.email = ["shaiju@mobme.in"]
11
- spec.description = %q{Gem for monitor kannel}
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
- include Mailer
14
- def initialize(configuration_file = {})
15
- @settings = YAML.load_file(configuration_file).symbolize_keys!
16
- @host = @settings[:kannel_settings]['host']
17
- @port = @settings[:kannel_settings]['port']
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
- def start_monitoring
31
- @xml_doc = prepare_xml_doc
32
- if @xml_doc
33
- fetch_kannel_status
34
- fetch_smsc_status
35
- fetch_queued_count
36
- end
37
- end
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
- def prepare_xml_doc
40
- begin
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
- @logger.info("Fetching Kannel status from http://#{@host}:#{@port}/status.xml?username=#{@username}&password=#{@password}")
43
- rescue
44
- @logger.info(ERROR_COULD_NOT_CONNECT)
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
- end
47
- @xml_content_doc
48
- end
32
+ end
33
+ @xml_content_doc
34
+ end
49
35
 
50
- def fetch_kannel_status
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
- @logger.info(value)
55
- send_mail(value)
41
+ send_mail(value)
56
42
  break
57
43
  end
58
44
  end
59
- end
45
+ end
60
46
 
61
- def fetch_smsc_status
62
- @logger.info('SMSC Status')
63
- smscs = @xml_doc.css('smsc')
64
- smscs.each do |smsc|
65
- smsc_id = smsc.css('id').text
66
- smsc_queue = smsc.css('queued').text
67
- unless @smsc_to_be_skipped.include?(smsc_id)
68
- status = smsc.css('status').text.split(' ')
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
- if status[0] == key
71
- @logger.info(value + smsc_id )
72
- send_mail(value + smsc_id)
57
+ if status[0] == key
58
+ send_mail(value + smsc_id)
73
59
  break
74
- end
75
- end
76
- if smsc_queue.to_i > @queue_alert_limit.to_i
77
- @logger.info(ERROR_SMSC_QUEUE + smsc_id)
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
- end
80
- end
81
- end
82
- end
65
+ end
66
+ end
67
+ end
68
+ end
83
69
 
84
- def fetch_queued_count
85
- sent_status = @xml_doc.css('sent')
86
- sent_status.each do |status|
87
- queue_size = status.css('queued').text
88
- if queue_size.to_i > @queue_alert_limit.to_i
89
- text = "SMS are getting queued"
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
- end
92
- end
93
- end
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
- p "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}")
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
@@ -1,3 +1,3 @@
1
1
  module KannelMonitor
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  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.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
- - shaiju
7
+ - shaijunonu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-27 00:00:00.000000000 Z
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
- description: Gem for monitor kannel
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.1.4
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: