check-taskr 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -18,6 +18,7 @@ begin
18
18
  gem.add_dependency "json"
19
19
  gem.add_dependency "haml"
20
20
  gem.add_dependency "log4r"
21
+ gem.add_dependency "xmpp4r"
21
22
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
22
23
  end
23
24
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
1
+ 1.1.3
data/bin/check-taskr CHANGED
@@ -10,7 +10,7 @@ require 'sinatra'
10
10
 
11
11
  require 'log4r'
12
12
  require "log4r/outputter/datefileoutputter"
13
- include Log4r
13
+
14
14
  require "check-taskr"
15
15
 
16
16
  filename = "jobs"
@@ -20,6 +20,12 @@ if ARGV.size > 0
20
20
  logdir = File.dirname(File.realdirpath(filename)) + "/logs"
21
21
  end
22
22
 
23
+ log = Log4r::Logger.new('default')
24
+ log.outputters = Log4r::DateFileOutputter.new('check_log', :dirname => logdir)
25
+ log.level = Log4r::DEBUG
26
+
27
+ log.debug("load #{filename} file, log on #{logdir} ...")
28
+
23
29
  CheckTaskr::Cli.execute(filename, :logdir => logdir)
24
30
  config = CheckTaskr::JobsConfiguration.instance
25
31
 
data/jobs.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  JobsConfiguration.init(:port => 4899) do |check|
3
- check.log_level WARN
3
+ check.log_level DEBUG
4
4
 
5
5
  check.setup_tcp_port :error_code => 10231
6
6
 
@@ -9,9 +9,15 @@ JobsConfiguration.init(:port => 4899) do |check|
9
9
  check.tcp_port "NotExistsDB", :hosts => "10.251.251.38", :port => 18299, :error_msg => "这一服务没有打开"
10
10
 
11
11
  check.http_returncode "HudsonWeb", :hosts => ["10.241.12.38", "10.241.12.40"],
12
- :port => 8099, :error_code => 909915
12
+ :port => 8099, :error_code => 909915
13
13
 
14
14
  check.http_json "Sujie", :hosts => ["10.241.38.75", "10.241.38.22", "10.241.12.38", "10.241.14.35"],
15
- :port => 8080, :path => "/admin/msg_admin_check_status", :error_code => 324234
15
+ :port => 8080, :path => "/admin/msg_admin_check_status", :error_code => 324234
16
16
 
17
+ # xmpp0004@mim.snda=f18f13ea13af3127ad06f194ebabe602
18
+ # xmpp0003@mim.snda=778108e5e15a96b6e4becc9b59571414
19
+ check.xmpp_chat "XMPP", :hosts => "test.mim.iccs.sdo.com", :port => 5222,
20
+ :jid1 => "xmpp0004@mim.snda", :password1 => 'f18f13ea13af3127ad06f194ebabe602',
21
+ :jid2 => "xmpp0003@mim.snda", :password2 => "778108e5e15a96b6e4becc9b59571414",
22
+ :error_code => "32420001", :error_msg => "failed!"
17
23
  end
@@ -17,6 +17,7 @@ module CheckTaskr
17
17
  class JobsConfiguration
18
18
 
19
19
  include Singleton
20
+ include Log4r
20
21
 
21
22
  attr_accessor :sleep_time, :results, :listen_port, :locked
22
23
  attr_reader :load_paths, :actions
@@ -54,13 +55,13 @@ module CheckTaskr
54
55
  end
55
56
 
56
57
  def execute_all
58
+ log = Log4r::Logger['default']
57
59
  return if @locked
58
- log = Logger['default']
59
-
60
60
  results = Hash.new
61
61
  had_error = false
62
62
 
63
63
  fail_actions = run_actions(@actions, results)
64
+
64
65
  # 如果有失败,过0.1秒后重试失败的
65
66
  if fail_actions.size > 0
66
67
  sleep(0.1)
@@ -77,7 +78,7 @@ module CheckTaskr
77
78
 
78
79
  def run_actions(actions, results)
79
80
  fail_actions = []
80
- log = Logger['default']
81
+ log = Log4r::Logger['default']
81
82
  actions.each do |action|
82
83
  hash = action.execute
83
84
  unless hash.nil?
@@ -109,13 +110,13 @@ module CheckTaskr
109
110
 
110
111
  # set log level
111
112
  def log_level(level)
112
- log = Logger['default']
113
+ log = Log4r::Logger['default']
113
114
  log.level = level
114
115
  end
115
116
 
116
117
  # process hosts from options
117
118
  def process_hosts(options)
118
- log = Logger['default']
119
+ log = Log4r::Logger['default']
119
120
  hosts = options.delete(:hosts)
120
121
  if block_given?
121
122
  if hosts.nil?
@@ -2,20 +2,16 @@
2
2
  require "fastthread"
3
3
  require "check-taskr/base"
4
4
 
5
-
6
5
  Dir[File.join(File.dirname(__FILE__), 'task/*.rb')].sort.each { |lib| require lib }
7
6
 
8
7
  module CheckTaskr
8
+ include Log4r
9
+
9
10
  class Cli
10
11
 
11
12
  def self.execute(filename, options = {})
12
13
  logdir = options.delete(:logdir)
13
14
  # create a logger named 'mylog' that logs to stdout
14
- log = Logger.new 'default'
15
- log.outputters = Log4r::DateFileOutputter.new('check_log', :dirname => logdir)
16
- log.level = WARN
17
-
18
- log.debug("load #{filename} file, log on #{logdir} ...")
19
15
 
20
16
  config = CheckTaskr::JobsConfiguration.instance
21
17
  config.load_from_file(filename)
@@ -35,7 +35,7 @@ module CheckTaskr
35
35
  end
36
36
 
37
37
  def execute
38
- log = Logger['default']
38
+ log = Log4r::Logger['default']
39
39
  log.debug "http action: ip=#{@ip}, port=#{@port}, name=#{@name}"
40
40
  hash = {:stat => 0, :ip => @ip, :msg => "OK", :error_id => @error_code }
41
41
  begin
@@ -35,7 +35,7 @@ module CheckTaskr
35
35
  end
36
36
 
37
37
  def execute
38
- log = Logger['default']
38
+ log = Log4r::Logger['default']
39
39
  hash = {:stat => 0, :ip => @ip, :msg => "OK", :error_id => @error_code }
40
40
  begin
41
41
  Net::HTTP.start(@ip, @port) do |http|
@@ -29,13 +29,13 @@ module CheckTaskr
29
29
  @path = options[:path] || "/"
30
30
  @method = options[:method] || :get
31
31
  @post_data = options[:post_data]
32
- @expect_result = options[:expect_result] || "200" #默认期望返回200
32
+ @expect_result = options[:expect_result] || "ok" #默认期望返回200
33
33
  @error_code = options[:error_code] || @@default_error_code
34
34
  @error_msg = options[:error_msg] || @@default_error_msg
35
35
  end
36
36
 
37
37
  def execute
38
- log = Logger['default']
38
+ log = Log4r::Logger['default']
39
39
  log.debug "http action: ip=#{@ip}, port=#{@port}, name=#{@name}"
40
40
  hash = {:stat => 0, :ip => @ip, :msg => "OK", :error_id => @error_code }
41
41
  begin
@@ -52,9 +52,9 @@ module CheckTaskr
52
52
  end
53
53
  result = response.body
54
54
  hash[:timestamp] = Time.now.to_i
55
- unless @expect_result.eql?(result)
55
+ unless result.include?(@expect_result)
56
56
  hash[:stat] = 1
57
- hash[:msg] = "HTTP #{@method.to_s} #{@path}期望返回\"#{@expect_result}\",但返回\"#{result}\""
57
+ hash[:msg] = "HTTP #{@method.to_s} #{@path}期望返回值包含\"#{@expect_result}\",但返回\"#{result}\""
58
58
  log.warn hash.to_json
59
59
  end
60
60
  end
@@ -35,7 +35,7 @@ module CheckTaskr
35
35
  end
36
36
 
37
37
  def execute
38
- log = Logger['default']
38
+ log = Log4r::Logger['default']
39
39
  log.debug "action: ip=#{@ip}, port=#{@port}, name=#{@name}"
40
40
  hash = { :stat => 0, :ip => @ip, :msg => "OK", :timestamp => Time.now.to_i, :error_id => @error_code }
41
41
  begin
@@ -0,0 +1,104 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'net/http'
3
+ require 'uuid'
4
+ require 'xmpp4r'
5
+
6
+ module CheckTaskr
7
+
8
+ class JobsConfiguration
9
+
10
+ def setup_xmpp_chat(options)
11
+ HttpReturnCodeAction.setup(options)
12
+ end
13
+
14
+ def xmpp_chat(name, options = {})
15
+ process_hosts(options) do |host|
16
+ action = XmppChatAction.new({:name => "#{name}-#{host}", :ip => host}.merge(options))
17
+ @actions << action
18
+ end
19
+ end
20
+ end
21
+
22
+ class XmppChatAction < JobsAction
23
+ attr_accessor :ip, :port, :sjid1, :jid1, :password1, :sjid2, :jid2, :password2, :error_code, :error_msg, :client1, :client2, :is_failed
24
+
25
+ include Socket::Constants
26
+
27
+ def initialize(options)
28
+ @name ||= options[:name]
29
+ @ip = options[:ip]
30
+ @port = options[:port] || 5222
31
+ @sjid1 = options[:jid1]
32
+ @password1 = options[:password1]
33
+ @sjid2 = options[:jid2]
34
+ @password2 = options[:password2]
35
+ @error_code = options[:error_code] || @@default_error_code
36
+ @error_msg = options[:error_msg] || @@default_error_msg
37
+
38
+ login1
39
+ login2
40
+ end
41
+
42
+ def login1
43
+ @jid1 = Jabber::JID.new("#{@sjid1}/check-taskr")
44
+ if !@client1.nil? && @client1.is_connected?
45
+ @client1.close
46
+ end
47
+ @client1 = Jabber::Client.new(@jid1)
48
+ @client1.connect(@ip, @port)
49
+ @client1.auth(@password1)
50
+ @client1.send(Jabber::Presence.new.set_show(:chat).set_status('check-taskr!'))
51
+ end
52
+
53
+ def login2
54
+ @jid2 = Jabber::JID.new("#{@sjid2}/check-taskr")
55
+ if !@client2.nil? && @client2.is_connected?
56
+ @client2.close
57
+ end
58
+ @client2 = Jabber::Client.new(@jid2)
59
+ @client2.add_message_callback do |m|
60
+ if m.type != :error
61
+ @message_body = m.body
62
+ end
63
+ end
64
+ @client2.connect(@ip, @port)
65
+ @client2.auth(@password2)
66
+ @client2.send(Jabber::Presence.new.set_show(:chat).set_status('check-taskr!'))
67
+ end
68
+
69
+ def execute
70
+ log = Log4r::Logger['default']
71
+ log.debug "xmpp action: ip=#{@ip}, port=#{@port}, name=#{@name}"
72
+ hash = {:stat => 0, :ip => @ip, :msg => "OK", :error_id => @error_code }
73
+ begin
74
+ unless @client1.is_connected?
75
+ login1
76
+ end
77
+
78
+ unless @client2.is_connected?
79
+ login2
80
+ end
81
+
82
+ body = UUID.generate
83
+ message = Jabber::Message::new(@jid2, body).set_type(:normal).set_id('1')
84
+ @client1.send(message)
85
+
86
+ sleep(0.2)
87
+
88
+ hash[:timestamp] = Time.now.to_i
89
+ unless body.eql?(@message_body)
90
+ hash[:stat] = 3
91
+ hash[:msg] = "在0.2秒内没有收到回应"
92
+ end
93
+
94
+ rescue Exception => e
95
+ hash[:stat] = 2
96
+ hash[:timestamp] = Time.now.to_i
97
+ hash[:msg] = "XMPP异常:#{e}"
98
+ log.error hash.to_json
99
+ end
100
+ hash
101
+ end
102
+ end
103
+
104
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 1
8
- - 2
9
- version: 1.1.2
8
+ - 3
9
+ version: 1.1.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - crazycode
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-07 00:00:00 +08:00
17
+ date: 2011-01-17 00:00:00 +08:00
18
18
  default_executable: check-taskr
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -82,6 +82,19 @@ dependencies:
82
82
  version: "0"
83
83
  type: :runtime
84
84
  version_requirements: *id005
85
+ - !ruby/object:Gem::Dependency
86
+ name: xmpp4r
87
+ prerelease: false
88
+ requirement: &id006 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ segments:
94
+ - 0
95
+ version: "0"
96
+ type: :runtime
97
+ version_requirements: *id006
85
98
  description: check taskr for sdo
86
99
  email: crazycode@gmail.com
87
100
  executables:
@@ -106,6 +119,7 @@ files:
106
119
  - lib/check-taskr/task/http_json.rb
107
120
  - lib/check-taskr/task/http_result.rb
108
121
  - lib/check-taskr/task/sockets.rb
122
+ - lib/check-taskr/task/xmpp_chat.rb
109
123
  - test/helper.rb
110
124
  - test/test_check-runner.rb
111
125
  has_rdoc: true