rboss 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +18 -0
- data/bin/twiddle +9 -11
- data/lib/rboss/twiddle.rb +4 -0
- data/lib/rboss/twiddle/mbean.rb +11 -10
- data/lib/rboss/twiddle/monitor.rb +11 -26
- data/lib/rboss/version.rb +1 -1
- metadata +2 -3
- data/examples/monitor/simple_monitor.rb +0 -61
data/README.md
CHANGED
@@ -46,6 +46,24 @@ Execute commands with --invoke:
|
|
46
46
|
twiddle --invoke server,shutdown
|
47
47
|
twiddle --invoke web_deployment:jmx-console,stop
|
48
48
|
|
49
|
+
Extending mbeans
|
50
|
+
|
51
|
+
You can use a file in ~/.rboss.twiddle for mapping new mbeans or overriding the defaults
|
52
|
+
|
53
|
+
JBoss::Twiddle::Monitor.defaults[:http_request] = {
|
54
|
+
:description => 'Request for http protocol',
|
55
|
+
:pattern => 'jboss.web:type=GlobalRequestProcessor,name=http-127.0.0.1-8080',
|
56
|
+
:properties => %W(requestCount errorCount maxTime)
|
57
|
+
}
|
58
|
+
|
59
|
+
And use it normally
|
60
|
+
|
61
|
+
twiddle --http-request
|
62
|
+
|
63
|
+
You can do every action using custom mbeans
|
64
|
+
|
65
|
+
twiddle --invoke http_request,resetCounters
|
66
|
+
|
49
67
|
Using jboss-profile
|
50
68
|
-----------
|
51
69
|
|
data/bin/twiddle
CHANGED
@@ -30,7 +30,7 @@ params = {}
|
|
30
30
|
mbeans = {}
|
31
31
|
commands = {}
|
32
32
|
no_details = false
|
33
|
-
params[:jboss_home] =
|
33
|
+
params[:jboss_home] = (ENV["JBOSS_HOME"] or ENV["TWIDDLE_HOME"] or Dir.pwd)
|
34
34
|
exec_file = nil
|
35
35
|
defaults = JBoss::Twiddle::Monitor::defaults
|
36
36
|
|
@@ -56,21 +56,21 @@ opts.on('--all', "Detail all mapped mbeans") do
|
|
56
56
|
defaults.each do |mbean_id, mbean|
|
57
57
|
if mbean[:scan]
|
58
58
|
mbeans[mbean_id] = :all
|
59
|
-
elsif mbean[:
|
59
|
+
elsif mbean[:properties]
|
60
60
|
mbeans[mbean_id] = true
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
defaults.each do |mbean_id, mbean|
|
65
|
+
(defaults.sort_by {|k,v| k}).each do |mbean_id, mbean|
|
66
66
|
command = mbean_id.to_s.gsub /_/, '-'
|
67
67
|
if mbean[:scan]
|
68
68
|
opts.on("--#{command} [name_a,name_b,...]", Array,
|
69
|
-
"Detail
|
69
|
+
"Detail \"#{mbean[:description]}\" based on the given names (no names for scan)") do |names|
|
70
70
|
mbeans[mbean_id] = names || :all
|
71
71
|
end
|
72
|
-
elsif mbean[:
|
73
|
-
opts.on("--#{command}", "Detail
|
72
|
+
elsif mbean[:properties]
|
73
|
+
opts.on("--#{command}", "Detail \"#{mbean[:description]}\"") do
|
74
74
|
mbeans[mbean_id] = true
|
75
75
|
end
|
76
76
|
end
|
@@ -89,7 +89,7 @@ opts.on('--invoke mbean_id[:resource_name],method,[,args...]', Array,
|
|
89
89
|
commands[:invoke] = invoke
|
90
90
|
end
|
91
91
|
opts.on("-l", "--list", "List the mbeans mappings") do
|
92
|
-
defaults.each do |mbean_id, mbean|
|
92
|
+
(defaults.sort_by {|k,v| k}).each do |mbean_id, mbean|
|
93
93
|
puts " - #{mbean_id}"
|
94
94
|
[:description, :pattern].each do |detail|
|
95
95
|
puts " - #{detail} : #{mbean[detail]}"
|
@@ -156,8 +156,7 @@ end
|
|
156
156
|
mbeans.each do |mbean_id, resources|
|
157
157
|
puts " - #{defaults[mbean_id][:description]}"
|
158
158
|
if resources.is_a? TrueClass
|
159
|
-
|
160
|
-
details.each do |name, value|
|
159
|
+
monitor.mbean(mbean_id).detail do |name, value|
|
161
160
|
puts " - #{name}=#{value}"
|
162
161
|
end
|
163
162
|
elsif no_details
|
@@ -165,8 +164,7 @@ mbeans.each do |mbean_id, resources|
|
|
165
164
|
puts " - #{name}"
|
166
165
|
end
|
167
166
|
else
|
168
|
-
|
169
|
-
details.each do |resource, detail|
|
167
|
+
monitor.mbean(mbean_id).detail resources do |resource, detail|
|
170
168
|
puts " - #{resource}"
|
171
169
|
detail.each do |name, value|
|
172
170
|
puts " - #{name}=#{value}"
|
data/lib/rboss/twiddle.rb
CHANGED
data/lib/rboss/twiddle/mbean.rb
CHANGED
@@ -28,7 +28,7 @@ module JBoss
|
|
28
28
|
attr_reader :pattern
|
29
29
|
attr_accessor :resource, :twiddle, :description
|
30
30
|
|
31
|
-
@@__default__detail__resource__ = proc do |resources|
|
31
|
+
@@__default__detail__resource__ = proc do |resources, &block|
|
32
32
|
resouces = _parse_resource_ resources
|
33
33
|
details = {}
|
34
34
|
resouces.each do |resource|
|
@@ -39,14 +39,16 @@ module JBoss
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
42
|
+
details.each &block if block
|
42
43
|
details
|
43
44
|
end
|
44
45
|
|
45
|
-
@@__default__detail__ = proc do
|
46
|
+
@@__default__detail__ = proc do |&block|
|
46
47
|
details = {}
|
47
48
|
@properties.each do |property|
|
48
49
|
details[property] = self[property].value
|
49
50
|
end
|
51
|
+
details.each &block if block
|
50
52
|
details
|
51
53
|
end
|
52
54
|
|
@@ -59,16 +61,19 @@ module JBoss
|
|
59
61
|
(class << self
|
60
62
|
self
|
61
63
|
end).send :define_method, :scan, ¶ms[:scan]
|
64
|
+
(class << self
|
65
|
+
self
|
66
|
+
end).send :define_method, :each do |&block|
|
67
|
+
scan.each &block
|
68
|
+
end
|
62
69
|
end
|
63
|
-
if params[:
|
70
|
+
if params[:properties]
|
64
71
|
(class << self
|
65
72
|
self
|
66
73
|
end).send :define_method,
|
67
74
|
:detail,
|
68
|
-
&(params[:
|
69
|
-
(params[:scan] ?
|
75
|
+
&(params[:scan] ?
|
70
76
|
@@__default__detail__resource__ : @@__default__detail__)
|
71
|
-
: params[:detail])
|
72
77
|
end
|
73
78
|
end
|
74
79
|
|
@@ -81,10 +86,6 @@ module JBoss
|
|
81
86
|
self
|
82
87
|
end
|
83
88
|
|
84
|
-
def resourced?
|
85
|
-
@pattern['#{resource}']
|
86
|
-
end
|
87
|
-
|
88
89
|
def [] property
|
89
90
|
resource = @resource
|
90
91
|
query = eval("\"#{pattern}\"")
|
@@ -28,7 +28,7 @@ module JBoss
|
|
28
28
|
module Monitor
|
29
29
|
|
30
30
|
def defaults
|
31
|
-
|
31
|
+
@@defaults ||= {
|
32
32
|
:webapp => {
|
33
33
|
:description => 'Deployed webapps',
|
34
34
|
:pattern => 'jboss.web:type=Manager,host=localhost,path=/#{resource}',
|
@@ -39,8 +39,7 @@ module JBoss
|
|
39
39
|
path.gsub! /,host=.+/, ''
|
40
40
|
path
|
41
41
|
end
|
42
|
-
end
|
43
|
-
:detail => true
|
42
|
+
end
|
44
43
|
},
|
45
44
|
:web_deployment => {
|
46
45
|
:description => 'Deployed webapp control',
|
@@ -54,27 +53,23 @@ module JBoss
|
|
54
53
|
_query_ "jboss.web:type=ThreadPool,*" do |path|
|
55
54
|
path.gsub "jboss.web:type=ThreadPool,name=", ""
|
56
55
|
end
|
57
|
-
end
|
58
|
-
:detail => true
|
56
|
+
end
|
59
57
|
},
|
60
58
|
:engine => {
|
61
59
|
:description => 'JBossWeb engine',
|
62
60
|
:pattern => 'jboss.web:type=Engine',
|
63
|
-
:properties => %W(jvmRoute name defaultHost)
|
64
|
-
:detail => true
|
61
|
+
:properties => %W(jvmRoute name defaultHost)
|
65
62
|
},
|
66
63
|
:server_info => {
|
67
64
|
:description => 'JBoss running info',
|
68
65
|
:pattern => 'jboss.system:type=ServerInfo',
|
69
66
|
:properties => %W(ActiveThreadCount MaxMemory FreeMemory AvailableProcessors
|
70
|
-
HostAddress JavaVendor JavaVersion OSName OSArch)
|
71
|
-
:detail => true
|
67
|
+
HostAddress JavaVendor JavaVersion OSName OSArch)
|
72
68
|
},
|
73
69
|
:server => {
|
74
70
|
:description => 'JBoss specifications',
|
75
71
|
:pattern => 'jboss.system:type=Server',
|
76
|
-
:properties => %W(VersionNumber StartDate)
|
77
|
-
:detail => true
|
72
|
+
:properties => %W(VersionNumber StartDate)
|
78
73
|
},
|
79
74
|
:system_properties => {
|
80
75
|
:description => 'System properties',
|
@@ -88,8 +83,7 @@ module JBoss
|
|
88
83
|
_query_ "jboss.web:type=ThreadPool,*" do |path|
|
89
84
|
path.gsub "jboss.web:type=ThreadPool,name=", ""
|
90
85
|
end
|
91
|
-
end
|
92
|
-
:detail => true
|
86
|
+
end
|
93
87
|
},
|
94
88
|
:datasource => {
|
95
89
|
:description => 'Datasource',
|
@@ -100,8 +94,7 @@ module JBoss
|
|
100
94
|
_query_ "jboss.jca:service=ManagedConnectionPool,*" do |path|
|
101
95
|
path.gsub "jboss.jca:service=ManagedConnectionPool,name=", ""
|
102
96
|
end
|
103
|
-
end
|
104
|
-
:detail => true
|
97
|
+
end
|
105
98
|
},
|
106
99
|
:queue => {
|
107
100
|
:description => 'JMS Queue',
|
@@ -112,8 +105,7 @@ module JBoss
|
|
112
105
|
_query_ "jboss.messaging.destination:service=Queue,*" do |path|
|
113
106
|
path.gsub "jboss.messaging.destination:service=Queue,name=", ""
|
114
107
|
end
|
115
|
-
end
|
116
|
-
:detail => true
|
108
|
+
end
|
117
109
|
},
|
118
110
|
:ejb => {
|
119
111
|
:description => 'EJB',
|
@@ -126,21 +118,14 @@ module JBoss
|
|
126
118
|
end).collect do |path|
|
127
119
|
path.gsub("jboss.j2ee:", '').gsub(/,?service=EJB3/, '')
|
128
120
|
end
|
129
|
-
end
|
130
|
-
:detail => true
|
121
|
+
end
|
131
122
|
}
|
132
123
|
}
|
133
|
-
|
124
|
+
@@defaults
|
134
125
|
end
|
135
126
|
|
136
127
|
module_function :defaults
|
137
128
|
|
138
|
-
def properties mbean_id = nil
|
139
|
-
@properties ||= {}
|
140
|
-
return properties[mbean_id] if mbean_id
|
141
|
-
@properties
|
142
|
-
end
|
143
|
-
|
144
129
|
def mbeans
|
145
130
|
@mbeans ||= {}
|
146
131
|
@mbeans
|
data/lib/rboss/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rboss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ataxexe
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-08-
|
13
|
+
date: 2011-08-23 00:00:00 Z
|
14
14
|
dependencies: []
|
15
15
|
|
16
16
|
description: |-
|
@@ -35,7 +35,6 @@ files:
|
|
35
35
|
- examples/jboss_profile/jbb_profile_1.yaml
|
36
36
|
- examples/jboss_profile/jbb_profile_2.yaml
|
37
37
|
- examples/jboss_profile/jboss_profile.yaml
|
38
|
-
- examples/monitor/simple_monitor.rb
|
39
38
|
- lib/rboss.rb
|
40
39
|
- lib/rboss/component_processor.rb
|
41
40
|
- lib/rboss/components/component.rb
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# The MIT License
|
2
|
-
#
|
3
|
-
# Copyright (c) 2011 Marcelo Guimarães <ataxexe@gmail.com>
|
4
|
-
#
|
5
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
# of this software and associated documentation files (the "Software"), to deal
|
7
|
-
# in the Software without restriction, including without limitation the rights
|
8
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
# copies of the Software, and to permit persons to whom the Software is
|
10
|
-
# furnished to do so, subject to the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be included in
|
13
|
-
# all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
# THE SOFTWARE.
|
22
|
-
|
23
|
-
puts "Server Info:"
|
24
|
-
monitor.properties[:server_info].each do |property|
|
25
|
-
puts " |--> #{monitor.server_info[property]}"
|
26
|
-
end
|
27
|
-
|
28
|
-
puts "Connectors:"
|
29
|
-
monitor.with :connectors do |connector|
|
30
|
-
puts " |--> #{connector}"
|
31
|
-
monitor.properties[:connector].each do |property|
|
32
|
-
puts " |--> #{monitor.connector[property]}"
|
33
|
-
end
|
34
|
-
monitor.properties[:request].each do |property|
|
35
|
-
puts " |--> #{monitor.request[property]}"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
puts "Datasources:"
|
40
|
-
monitor.with :datasources do |datasource|
|
41
|
-
puts " |--> #{datasource}"
|
42
|
-
monitor.properties[:datasource].each do |property|
|
43
|
-
puts " |--> #{monitor.datasource[property]}"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
puts "Webapps:"
|
48
|
-
monitor.with :webapps do |webapp|
|
49
|
-
puts " |--> #{webapp}"
|
50
|
-
monitor.properties[:webapp].each do |property|
|
51
|
-
puts " |--> #{monitor.webapp[property]}"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
puts "Queues:"
|
56
|
-
monitor.with :queues do |queue|
|
57
|
-
puts " |--> #{queue}"
|
58
|
-
monitor.properties[:queue].each do |property|
|
59
|
-
puts " |--> #{monitor.queue[property]}"
|
60
|
-
end
|
61
|
-
end
|