rboss 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +197 -0
- data/bin/jboss-profile +6 -1
- data/bin/twiddle +44 -1
- data/lib/rboss/twiddle/base_monitor.rb +22 -0
- data/lib/rboss/twiddle/mbean.rb +3 -3
- data/lib/rboss/twiddle/monitor.rb +4 -8
- data/lib/rboss/twiddle/scanner.rb +1 -1
- data/lib/rboss/twiddle/twiddle.rb +2 -6
- data/lib/rboss/version.rb +1 -1
- data/rboss.gemspec +3 -2
- metadata +7 -4
data/README.md
ADDED
@@ -0,0 +1,197 @@
|
|
1
|
+
rboss
|
2
|
+
=============
|
3
|
+
|
4
|
+
Use this tool to create profiles for JBoss Application Server and use twiddle to scan
|
5
|
+
a running JBoss AS or execute scripts.
|
6
|
+
|
7
|
+
|
8
|
+
Installation
|
9
|
+
-----------
|
10
|
+
|
11
|
+
gem install rboss
|
12
|
+
|
13
|
+
Using twiddle
|
14
|
+
-----------
|
15
|
+
|
16
|
+
### Basics
|
17
|
+
|
18
|
+
Simply do a "cd" to your JBoss Home and use it
|
19
|
+
|
20
|
+
twiddle --help
|
21
|
+
|
22
|
+
You can scan resources like: datasources, queues, connectors, webapps, ...
|
23
|
+
|
24
|
+
twiddle --datasources --webapps
|
25
|
+
twiddle --all
|
26
|
+
|
27
|
+
If you don't need to scan for resources, you can specify them for monitoring:
|
28
|
+
|
29
|
+
twiddle --webapps jmx-console,admin-console
|
30
|
+
|
31
|
+
Combine with "watch" to get a simple and instantly monitoring:
|
32
|
+
|
33
|
+
watch --interval=1 twiddle --webapps jmx-console,admin-console
|
34
|
+
|
35
|
+
Retrieve property values with --get:
|
36
|
+
|
37
|
+
twiddle --get webapp:jmx-console,maxSessions
|
38
|
+
twiddle --get server_info,FreeMemory
|
39
|
+
|
40
|
+
Set values with --set:
|
41
|
+
|
42
|
+
twiddle --set connector:http-127.0.0.1-8080,maxThreads,350
|
43
|
+
|
44
|
+
Execute commands with --invoke:
|
45
|
+
|
46
|
+
twiddle --invoke server,shutdown
|
47
|
+
twiddle --invoke web_deployment:jmx-console,stop
|
48
|
+
|
49
|
+
Using jboss-profile
|
50
|
+
-----------
|
51
|
+
|
52
|
+
### Basics
|
53
|
+
|
54
|
+
Simply do a "cd" to your JBoss Home and use it
|
55
|
+
|
56
|
+
jboss-profile --help
|
57
|
+
|
58
|
+
All configuration can be stored in a single yaml file containing an array of components
|
59
|
+
and its configuration:
|
60
|
+
|
61
|
+
- deploy_folder: deploy/datasources
|
62
|
+
- deploy_folder: deploy/apps
|
63
|
+
- jmx
|
64
|
+
- run_conf:
|
65
|
+
:heap_size: 1024m
|
66
|
+
:perm_size: 512m
|
67
|
+
:debug: :socket
|
68
|
+
|
69
|
+
You can specify any command-line arguments directly in yaml file:
|
70
|
+
|
71
|
+
- :params:
|
72
|
+
:jboss_home: /home/user/jboss/org/jboss-5
|
73
|
+
:type: org
|
74
|
+
:version: 5.1
|
75
|
+
:base_profile: all
|
76
|
+
:profile: my_profile
|
77
|
+
|
78
|
+
### Configuring deploy folders
|
79
|
+
|
80
|
+
Use "deploy_folder" component and the desired folder. If the folder starts with a "/" or
|
81
|
+
doesn't start with "deploy", the entries in VFS will be added.
|
82
|
+
|
83
|
+
# Will be in $JBOSS_HOME/server/$PROFILE/deploy/application
|
84
|
+
- deploy_folder: deploy/applications
|
85
|
+
# Will be in $JBOSS_HOME/server/$PROFILE/custom/application
|
86
|
+
- deploy_folder: custom/applications
|
87
|
+
- deploy_folder: /opt/deploy
|
88
|
+
|
89
|
+
### Configuring jmx
|
90
|
+
|
91
|
+
Use "jmx" component:
|
92
|
+
|
93
|
+
# user and password are "admin" by default
|
94
|
+
- jmx
|
95
|
+
- jmx:
|
96
|
+
:user: admin
|
97
|
+
:password: admin
|
98
|
+
|
99
|
+
Basically, this will add an entry in the jmx-console-users.properties (depends on JBoss type).
|
100
|
+
For JBoss org, this will enable security in jmx-console since the enterprise versions have
|
101
|
+
jmx-console security by default.
|
102
|
+
|
103
|
+
### Configuring datasources
|
104
|
+
|
105
|
+
Use a "datasource" component
|
106
|
+
|
107
|
+
Configuration:
|
108
|
+
|
109
|
+
:folder => a folder where this datasource will be saved (default: $JBOSS_HOME/server/$CONFIG/deploy)
|
110
|
+
if a relative path is given, it will be appended to default value
|
111
|
+
:encrypt => a flag to indicate if the password should be encrypted (default: false)
|
112
|
+
:type => the type of the datasource
|
113
|
+
:name => a name for saving the file (default: :type)
|
114
|
+
:attributes => a Hash with the attributes that will be changed in template (the only required is :jndi_name)
|
115
|
+
|
116
|
+
Any attribute that is not present in datasource xml will be created using this template: <key>value</key>.
|
117
|
+
|
118
|
+
For converting the symbol attributes, the above rules are used taking by example a
|
119
|
+
value ":database_url":
|
120
|
+
|
121
|
+
1. The value "database_url"
|
122
|
+
2. The value "database-url"
|
123
|
+
3. The value "DatabaseUrl"
|
124
|
+
4. The value "DATABASE_URL"
|
125
|
+
|
126
|
+
The key for finding the correct datasource is the configuration attribute :type, which is
|
127
|
+
used to search in $JBOSS_HOME/docs/examples/jca for the file.
|
128
|
+
|
129
|
+
Any key that is not found in the datasource template will be added. If it is a Symbol,
|
130
|
+
the underlines will be converted to hyphens.
|
131
|
+
|
132
|
+
For saving the file, the configuration :name will be used in the form "${name}-ds.xml".
|
133
|
+
|
134
|
+
Example:
|
135
|
+
|
136
|
+
- datasource:
|
137
|
+
:type: postgres
|
138
|
+
:attributes:
|
139
|
+
:user_name: postgres
|
140
|
+
:password: postgres
|
141
|
+
:connection_url: jdbc:postgresql://localhost:5432/sample_database
|
142
|
+
:min_pool_size: 5
|
143
|
+
:max_pool_size: 15
|
144
|
+
|
145
|
+
### Replacing hypersonic
|
146
|
+
|
147
|
+
The same as Datasouce, but use the "default_ds" component instead.
|
148
|
+
|
149
|
+
- default_ds:
|
150
|
+
:type: postgres
|
151
|
+
:attributes:
|
152
|
+
:user_name: postgres
|
153
|
+
:password: postgres
|
154
|
+
:connection_url: jdbc:postgresql://localhost:5432/jboss_db
|
155
|
+
:min_pool_size: 5
|
156
|
+
:max_pool_size: 15
|
157
|
+
|
158
|
+
### Installing mod_cluster
|
159
|
+
|
160
|
+
Use a "mod_cluster" component
|
161
|
+
|
162
|
+
Configuration:
|
163
|
+
|
164
|
+
:path => where the mod_cluster.sar is located
|
165
|
+
:folder => where the mod_cluster.sar should be installed (default: $JBOSS_HOME/server/$CONFIG/deploy)
|
166
|
+
|
167
|
+
The additional configurations are the entries in the bean ModClusterConfig (mod_cluster-jboss-beans.xml)
|
168
|
+
and can be in a String form (using the entry name) or in a Symbol form (using ruby nomenclature - :sticky_session)
|
169
|
+
|
170
|
+
### Configuring run.conf
|
171
|
+
|
172
|
+
### Slimming
|
173
|
+
|
174
|
+
Use a "slimming" component.
|
175
|
+
|
176
|
+
Configuration:
|
177
|
+
|
178
|
+
Use an array with the services to remove, the current supported are:
|
179
|
+
|
180
|
+
* Admin Console => :admin_console
|
181
|
+
* Web Console => :web_console
|
182
|
+
* Mail Service => :mail
|
183
|
+
* Bsh Deployer => :bsh_deployer
|
184
|
+
* Hot Deploy => :hot_deploy
|
185
|
+
* JUDDI => :juddi
|
186
|
+
* UUID Key Generator => :key_generator
|
187
|
+
* Scheduling => :scheduling
|
188
|
+
* JMX Console => :jmx_console
|
189
|
+
* JBoss WS => :jboss_ws
|
190
|
+
* JMX Remoting => :jmx_remoting
|
191
|
+
* ROOT Page => :root_page
|
192
|
+
|
193
|
+
Any slimmed service will be removed logically by using a ".rej" suffix in the files/directories.
|
194
|
+
|
195
|
+
### Configuring jbossweb
|
196
|
+
|
197
|
+
### Configuring connectors
|
data/bin/jboss-profile
CHANGED
@@ -28,7 +28,6 @@ require 'yaml'
|
|
28
28
|
require 'logger'
|
29
29
|
|
30
30
|
params = {}
|
31
|
-
params[:jboss_home] = Dir.pwd unless ENV["JBOSS_HOME"]
|
32
31
|
config = nil
|
33
32
|
create = true
|
34
33
|
|
@@ -71,6 +70,12 @@ end
|
|
71
70
|
opts.on("-h", "--help", "Shows this help message") { puts opts; exit }
|
72
71
|
opts.parse!(ARGV) rescue abort 'Invalid Option! Use --help or -h for usage help.'
|
73
72
|
|
73
|
+
if params.empty?
|
74
|
+
puts opts
|
75
|
+
exit
|
76
|
+
end
|
77
|
+
|
78
|
+
params[:jboss_home] ||= Dir.pwd unless ENV["JBOSS_HOME"]
|
74
79
|
profile = JBoss::Profile::new params
|
75
80
|
|
76
81
|
if config
|
data/bin/twiddle
CHANGED
@@ -54,7 +54,7 @@ opts.on('--eval EXPRESSION',
|
|
54
54
|
'Evaluates the given expression using the vars twiddle and monitor') do |expression|
|
55
55
|
eval_expression = expression
|
56
56
|
end
|
57
|
-
opts.on('--
|
57
|
+
opts.on('--all', 'Shows all resources available') do
|
58
58
|
[
|
59
59
|
:server_info,
|
60
60
|
:deployments,
|
@@ -97,6 +97,18 @@ opts.on('--system-properties [name_a, name_b, name_c, ...]', Array,
|
|
97
97
|
'Defines the System properties to show or scan if not specified') do |properties|
|
98
98
|
resources[:system_properties] = properties || :all
|
99
99
|
end
|
100
|
+
opts.on('--set resource_type[:resource_name],property,value', Array,
|
101
|
+
'Sets a value to a resource that the monitor knows') do |set|
|
102
|
+
resources[:set] = set
|
103
|
+
end
|
104
|
+
opts.on('--get resource_type[:resource_name],property', Array,
|
105
|
+
'Gets a value to a resource that the monitor knows') do |get|
|
106
|
+
resources[:get] = get
|
107
|
+
end
|
108
|
+
opts.on('--invoke resource_type[:resource_name],method,[,args...]', Array,
|
109
|
+
'Invokes a resoruce method') do |invoke|
|
110
|
+
resources[:invoke] = invoke
|
111
|
+
end
|
100
112
|
opts.on('--list', 'Only lists the required info (datasources, queues, ...)') do
|
101
113
|
list_only = true
|
102
114
|
end
|
@@ -123,6 +135,37 @@ eval File.read(exec_file), binding, exec_file if exec_file
|
|
123
135
|
|
124
136
|
puts (eval eval_expression, binding) if eval_expression
|
125
137
|
|
138
|
+
def extract resource
|
139
|
+
mbean, name = resource.split(/:/)
|
140
|
+
end
|
141
|
+
|
142
|
+
if resources[:set]
|
143
|
+
array = resources[:set]
|
144
|
+
raise "Wrong number of arguments" if array.size != 3
|
145
|
+
mbean, name = extract array[0]
|
146
|
+
puts twiddle.set :mbean => mbean.to_sym,
|
147
|
+
:name => name,
|
148
|
+
:property => array[1],
|
149
|
+
:value => array[2]
|
150
|
+
end
|
151
|
+
if resources[:get]
|
152
|
+
array = resources[:get]
|
153
|
+
raise "Wrong number of arguments" if array.size != 2
|
154
|
+
mbean, name = extract array[0]
|
155
|
+
puts twiddle.get :mbean => mbean.to_sym,
|
156
|
+
:name => name,
|
157
|
+
:property => array[1]
|
158
|
+
end
|
159
|
+
if resources[:invoke]
|
160
|
+
array = resources[:invoke]
|
161
|
+
raise "Wrong number of arguments" if array.size < 2
|
162
|
+
mbean, name = extract array[0]
|
163
|
+
puts twiddle.invoke :mbean => mbean.to_sym,
|
164
|
+
:name => name,
|
165
|
+
:method => array[1],
|
166
|
+
:args => array[2..-1]
|
167
|
+
end
|
168
|
+
|
126
169
|
if resources[:server_info]
|
127
170
|
puts "Server Info:"
|
128
171
|
monitor.properties[:server].each do |property|
|
@@ -50,6 +50,28 @@ module JBoss
|
|
50
50
|
monitor.mbean id
|
51
51
|
end
|
52
52
|
|
53
|
+
def get params
|
54
|
+
mbean = extract params
|
55
|
+
mbean[params[:property]]
|
56
|
+
end
|
57
|
+
|
58
|
+
def set params
|
59
|
+
mbean = extract params
|
60
|
+
mbean[params[:property]] = params[:value]
|
61
|
+
end
|
62
|
+
|
63
|
+
def invoke params
|
64
|
+
mbean = extract params
|
65
|
+
mbean.send params[:method], *params[:args]
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
def extract params
|
71
|
+
mbean = monitor.mbean params[:mbean]
|
72
|
+
mbean.with params[:name]
|
73
|
+
end
|
74
|
+
|
53
75
|
end
|
54
76
|
|
55
77
|
end
|
data/lib/rboss/twiddle/mbean.rb
CHANGED
@@ -47,7 +47,7 @@ module JBoss
|
|
47
47
|
resource = @resource
|
48
48
|
env = @env
|
49
49
|
query = eval("\"#{pattern}\"")
|
50
|
-
result = @twiddle.
|
50
|
+
result = @twiddle.execute(:get, query, property)
|
51
51
|
def result.value
|
52
52
|
self.split(/=/)[1]
|
53
53
|
end
|
@@ -58,7 +58,7 @@ module JBoss
|
|
58
58
|
resource = @resource
|
59
59
|
env = @env
|
60
60
|
query = eval("\"#{pattern}\"")
|
61
|
-
@twiddle.
|
61
|
+
@twiddle.execute :set, query, property, value
|
62
62
|
end
|
63
63
|
|
64
64
|
def method_missing(method, *args, &block)
|
@@ -69,7 +69,7 @@ module JBoss
|
|
69
69
|
resource = @resource
|
70
70
|
env = @env
|
71
71
|
query = eval("\"#{pattern} #{method}\"")
|
72
|
-
return_value = @twiddle.
|
72
|
+
return_value = @twiddle.execute :invoke, query, args
|
73
73
|
if block_given?
|
74
74
|
block.call return_value
|
75
75
|
end
|
@@ -33,6 +33,9 @@ module JBoss
|
|
33
33
|
:pattern => 'jboss.web:type=Manager,host=localhost,path=/#{resource}',
|
34
34
|
:properties => %W(activeSessions maxActive)
|
35
35
|
},
|
36
|
+
:web_deployment => {
|
37
|
+
:pattern => 'jboss.web.deployment:war=/#{resource}'
|
38
|
+
},
|
36
39
|
:connector => {
|
37
40
|
:pattern => 'jboss.web:type=ThreadPool,name=#{resource}',
|
38
41
|
:properties => %W(maxThreads currentThreadCount currentThreadsBusy)
|
@@ -115,12 +118,7 @@ module JBoss
|
|
115
118
|
end
|
116
119
|
end
|
117
120
|
|
118
|
-
def mbean mbean_id
|
119
|
-
return get current_scan unless mbean_id
|
120
|
-
mbeans[mbean_id]
|
121
|
-
end
|
122
|
-
|
123
|
-
def get mbean_id
|
121
|
+
def mbean mbean_id
|
124
122
|
mbean = mbeans[mbean_id]
|
125
123
|
if @current_resource
|
126
124
|
mbean.with @current_resource
|
@@ -128,8 +126,6 @@ module JBoss
|
|
128
126
|
mbean
|
129
127
|
end
|
130
128
|
|
131
|
-
alias_method :[], :get
|
132
|
-
|
133
129
|
def method_missing(method, *args, &block)
|
134
130
|
mbean_id = method
|
135
131
|
mbean = mbeans[mbean_id]
|
@@ -81,7 +81,7 @@ module JBoss
|
|
81
81
|
private
|
82
82
|
|
83
83
|
def _query_ query, &block
|
84
|
-
result = @twiddle.
|
84
|
+
result = @twiddle.execute(:query, query)
|
85
85
|
return [] if result["No MBean matches for query"]
|
86
86
|
result = result.split /\s+/
|
87
87
|
block ? result.collect(&block) : result
|
@@ -53,16 +53,12 @@ module JBoss
|
|
53
53
|
@jboss_home
|
54
54
|
end
|
55
55
|
|
56
|
-
def invoke command, *arguments
|
57
|
-
execute(shell command, arguments)
|
58
|
-
end
|
59
|
-
|
60
56
|
def shell operation, *arguments
|
61
57
|
"#{command} #{operation} #{arguments.join " "}"
|
62
58
|
end
|
63
59
|
|
64
|
-
def execute
|
65
|
-
`#{shell}`.chomp
|
60
|
+
def execute command, *arguments
|
61
|
+
`#{shell command, arguments}`.chomp
|
66
62
|
end
|
67
63
|
|
68
64
|
end
|
data/lib/rboss/version.rb
CHANGED
data/rboss.gemspec
CHANGED
@@ -7,9 +7,10 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = RBoss::VERSION
|
8
8
|
s.authors = ["Ataxexe"]
|
9
9
|
s.email = ["ataxexe@gmail.com"]
|
10
|
-
s.homepage = ""
|
10
|
+
s.homepage = "https://github.com/ataxexe/rboss"
|
11
11
|
s.summary = %q{A Ruby way to do a JBoss work!}
|
12
|
-
s.description = %q{
|
12
|
+
s.description = %q{A tool to create profiles for JBoss Application Server and use
|
13
|
+
twiddle to scan a running JBoss AS or execute scripts.}
|
13
14
|
|
14
15
|
s.rubyforge_project = "rboss"
|
15
16
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rboss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ataxexe
|
@@ -10,10 +10,12 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-08-
|
13
|
+
date: 2011-08-13 00:00:00 Z
|
14
14
|
dependencies: []
|
15
15
|
|
16
|
-
description:
|
16
|
+
description: |-
|
17
|
+
A tool to create profiles for JBoss Application Server and use
|
18
|
+
twiddle to scan a running JBoss AS or execute scripts.
|
17
19
|
email:
|
18
20
|
- ataxexe@gmail.com
|
19
21
|
executables:
|
@@ -26,6 +28,7 @@ extra_rdoc_files: []
|
|
26
28
|
files:
|
27
29
|
- .gitignore
|
28
30
|
- Gemfile
|
31
|
+
- README.md
|
29
32
|
- Rakefile
|
30
33
|
- bin/jboss-profile
|
31
34
|
- bin/twiddle
|
@@ -74,7 +77,7 @@ files:
|
|
74
77
|
- test/mbean_test.rb
|
75
78
|
- test/test_helper.rb
|
76
79
|
- test/test_suite.rb
|
77
|
-
homepage:
|
80
|
+
homepage: https://github.com/ataxexe/rboss
|
78
81
|
licenses: []
|
79
82
|
|
80
83
|
post_install_message:
|