Questo contenuto non è disponibile nella lingua selezionata.
10.2. Using Resource Proxies
The JBoss ON CLI interacts directly with the JBoss ON server through remote APIs for handling resource objects and through the domain APIs for tasks like searches.
The JBoss ON CLI itself provides another API layer that can make it easier to perform common operations. The CLI can create a resource proxy object in the CLI, and then that object uses the classes available in the ProxyFactory to interact with the remote and domain API.
One thing to remember is that proxy resources still use the remote and domain API. The proxy API just provides a simpler and clearer API on top of the remote and domain APIs that can make it easier to script many operations.
NOTE
The ProxyFactory is available to the JBoss ON CLI in interactive mode or when using a script file. It is also available to server scripts, such as scripts used for alerting.
The ProxyFactory gets information about a resource, which is identified in the getResource() method with the resource's ID number.
At its simplest, ProxyFactory can return a complete summary of information about the specified resource, such as its current monitoring data and traits, resource name, available metrics, available operations, content information, and child inventory, all dependent on the resource type. For example:
rhqadmin@localhost:7080$ ProxyFactory.getResource(10001)
ResourceClientProxy_$$_javassist_0:
OSName: Linux
OSVersion: 2.6.32-220.4.1.el6.x86_64
architecture: x86_64
children:
contentTypes: {rpm=RPM File}
createdDate: Mon Feb 06 11:24:50 EST 2012
description: Linux Operating System
distributionName: Red Hat Enterprise Linux Server
distributionVersion: release 6.2 (Santiago)
freeMemory: 16.7GB
freeSwapSpace: 25.6GB
handler:
hostname: server.example.com
id: 10001
idle: 70.8%
measurements: [Wait Load, Used Memory, System Load, Distribution Version, Total Memory, OS Name, Free Memory, Hostname, Architecture, Distribution Name, Idle, Total Swap Space, Used Swap Space, User Load, OS Version, Free Swap Space]
modifiedDate: Mon Feb 06 11:24:50 EST 2012
name: server.example.com
operations: [viewProcessList, cleanYumMetadataCache, manualAutodiscovery]
pluginConfiguration:
pluginConfigurationDefinition: ConfigurationDefinition[xml:id=10009, name=Linux]
resourceType: Linux
systemLoad: 0.0%
totalMemory: 23.5GB
totalSwapSpace: 25.6GB
usedMemory: 6.8GB
usedSwapSpace: 0.0B
userLoad: 15.8%
version: Linux 2.6.32-220.4.1.el6.x86_64
waitLoad: 0.0%
rhqadmin@localhost:7080$ ProxyFactory.getResource(10001)
ResourceClientProxy_$$_javassist_0:
OSName: Linux
OSVersion: 2.6.32-220.4.1.el6.x86_64
architecture: x86_64
children:
contentTypes: {rpm=RPM File}
createdDate: Mon Feb 06 11:24:50 EST 2012
description: Linux Operating System
distributionName: Red Hat Enterprise Linux Server
distributionVersion: release 6.2(Santiago)
freeMemory: 16.7GB
freeSwapSpace: 25.6GB
handler:
hostname: server.example.com
id: 10001
idle: 70.8%
measurements: [Wait Load, Used Memory, System Load, Distribution Version, Total Memory, OS Name, Free Memory, Hostname, Architecture, Distribution Name, Idle, Total Swap Space, Used Swap Space, User Load, OS Version, Free Swap Space]
modifiedDate: Mon Feb 06 11:24:50 EST 2012
name: server.example.com
operations: [viewProcessList, cleanYumMetadataCache, manualAutodiscovery]
pluginConfiguration:
pluginConfigurationDefinition: ConfigurationDefinition[xml:id=10009, name=Linux]
resourceType: Linux
systemLoad: 0.0%
totalMemory: 23.5GB
totalSwapSpace: 25.6GB
usedMemory: 6.8GB
usedSwapSpace: 0.0B
userLoad: 15.8%
version: Linux 2.6.32-220.4.1.el6.x86_64
waitLoad: 0.0%
Copy to ClipboardCopied!Toggle word wrapToggle overflow
To truly manage resources, the ProxyFactory creates a resource proxy object.
Example 10.3. Defining a Platform Proxy Resource
var rhelServerOne = ProxyFactory.getResource(10001)
var rhelServerOne = ProxyFactory.getResource(10001)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
The methods that are available to a resource proxy depend on the resource type and the resource's own configuration. There are five major types of operations that can be performed on resource proxies:
Viewing basic information about the resource, such as its children
Getting measurement information
Running operations
Changing resource and plug-in configuration
Updating and retrieving content
For each resource type, methods are exposed which allow you to find and use specific information about the resource. Additionally, the proxy API includes "shortcuts" which provide one-word methods, without requiring any parameters, to perform common remote API tasks, like getting monitoring information.
Use tab-complete in the interactive CLI to find the specific methods available for a resource type or to get the method signatures for individual methods.
Example 10.4. Viewing a Resource's Children
ProxyFactory has a method for all proxy objects, children, which lists all of the children for the proxy resource.
var rhelServerOne = ProxyFactory.getResource(10001)
rhqadmin@localhost:7080$ platform.children
Array of org.rhq.bindings.client.ResourceClientProxy
[10027] Bundle Handler - Ant (Ant Bundle Handler::AntBundlePlugin)
[10026] CPU 6 (CPU::Platforms)
[10025] CPU 0 (CPU::Platforms)
[10024] CPU 5 (CPU::Platforms)
[10023] CPU 1 (CPU::Platforms)
[10022] CPU 4 (CPU::Platforms)
[10021] CPU 2 (CPU::Platforms)
[10020] CPU 3 (CPU::Platforms)
[10019] CPU 7 (CPU::Platforms)
[10018] /boot (File System::Platforms)
[10017] / (File System::Platforms)
[10016] /dev/shm (File System::Platforms)
[10015] /home (File System::Platforms)
[10014] eth1 (Network Adapter::Platforms)
[10013] eth2 (Network Adapter::Platforms)
[10012] eth0 (Network Adapter::Platforms)
[10011] lo (Network Adapter::Platforms)
[10004] postgres (Postgres Server::Postgres)
[10003] AS server.example.com RHQ Server (JBossAS Server::JBossAS)
[10002] RHQ Agent (RHQ Agent::RHQAgent)
var rhelServerOne = ProxyFactory.getResource(10001)
rhqadmin@localhost:7080$ platform.children
Array of org.rhq.bindings.client.ResourceClientProxy
[10027] Bundle Handler - Ant (Ant Bundle Handler::AntBundlePlugin)
[10026] CPU 6 (CPU::Platforms)
[10025] CPU 0 (CPU::Platforms)
[10024] CPU 5 (CPU::Platforms)
[10023] CPU 1 (CPU::Platforms)
[10022] CPU 4 (CPU::Platforms)
[10021] CPU 2 (CPU::Platforms)
[10020] CPU 3 (CPU::Platforms)
[10019] CPU 7 (CPU::Platforms)
[10018] /boot (File System::Platforms)
[10017] / (File System::Platforms)
[10016] /dev/shm (File System::Platforms)
[10015] /home (File System::Platforms)
[10014] eth1 (Network Adapter::Platforms)
[10013] eth2 (Network Adapter::Platforms)
[10012] eth0 (Network Adapter::Platforms)
[10011] lo (Network Adapter::Platforms)
[10004] postgres (Postgres Server::Postgres)
[10003] AS server.example.com RHQ Server (JBossAS Server::JBossAS)
[10002] RHQ Agent (RHQ Agent::RHQAgent)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Example 10.5. Viewing Resource Metrics
ProxyFactory provides a set of shortcut metrics for each individual measurement for a resource type. This corresponds to the findLiveData() method in the remote API, but it is much easier to get monitoring information quickly and it is simpler to identify what metrics are available.
To get a single measurement value, use the method for that resource type. (Get a list of all methods for a proxy object using tab-complete.)
var jbossas = ProxyFactory.getResource(14832)
rhqadmin@localhost:7080$ jbossas.JVMTotalMemory
Measurement:
name: JVM Total Memory
displayValue: 995.3MB
description: The total amount of memory currently available in the app server JVM for current and fut...
var jbossas = ProxyFactory.getResource(14832)
rhqadmin@localhost:7080$ jbossas.JVMTotalMemory
Measurement:
name: JVM Total Memory
displayValue: 995.3MB
description: The total amount of memory currently available in the app server JVM for current and fut...
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Alternatively, simply get a list of metrics with their current values using the measurements method:
var rhelServerOne = ProxyFactory.getResource(10001)
rhqadmin@localhost:7080$ rhelServerOne.measurements
Array of org.rhq.bindings.client.ResourceClientProxy$Measurement
name displayValue description
-----------------------------------------------------------------------------------------------------------------------
Wait Load 0.0% Percentage of all CPUs waiting on I/O
Used Memory 6.3GB The total used system memory
System Load 0.0% Percentage of all CPUs running in system mode
Distribution Version release 6.2 (Santiago) version of the Linux distribution
Total Memory 31.4GB The total system memory
OS Name Linux Name that the operating system is known as
Free Memory 25.2GB The total free system memory
Hostname server.example.com Name that this platform is known as
Architecture x86_64 Hardware architecture of the platform
Distribution Name Red Hat Enterprise Linux Server name of the Linux distribution
Idle 92.6% Idle percentage of all CPUs
Total Swap Space 33.6GB The total system swap
Used Swap Space 0.0B The total used system swap
User Load 16.7% Percentage of all CPUs running in user mode
OS Version 2.6.32-220.4.2.el6.x86_64 Version of the operating system
Free Swap Space 33.6GB The total free system swap
16 rows
var rhelServerOne = ProxyFactory.getResource(10001)
rhqadmin@localhost:7080$ rhelServerOne.measurements
Array of org.rhq.bindings.client.ResourceClientProxy$Measurement
name displayValue description
-----------------------------------------------------------------------------------------------------------------------
Wait Load 0.0% Percentage of all CPUs waiting on I/O
Used Memory 6.3GB The total used system memory
System Load 0.0% Percentage of all CPUs running in system mode
Distribution Version release 6.2 (Santiago) version of the Linux distribution
Total Memory 31.4GB The total system memory
OS Name Linux Name that the operating system is known as
Free Memory 25.2GB The total free system memory
Hostname server.example.com Name that this platform is known as
Architecture x86_64 Hardware architecture of the platform
Distribution Name Red Hat Enterprise Linux Server name of the Linux distribution
Idle 92.6% Idle percentage of all CPUs
Total Swap Space 33.6GB The total system swap
Used Swap Space 0.0B The total used system swap
User Load 16.7% Percentage of all CPUs running in user mode
OS Version 2.6.32-220.4.2.el6.x86_64 Version of the operating system
Free Swap Space 33.6GB The total free system swap
16 rows
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Example 10.6. Running Operations on a Proxy
ProxyFactory has a shortcut method for every operation available for a resource.
First, get the list of operations available for the resource type using the operations method:
var rhelServerOne = ProxyFactory.getResource(10001)
rhqadmin@localhost:7080$ rhelServerOne.operations
Array of org.rhq.bindings.client.ResourceClientProxy$Operation
name description
-----------------------------------------------------------------------------------------------------------------------
viewProcessList View running processes on this system
cleanYumMetadataCache Deletes all cached package metadata
manualAutodiscovery Run an immediate discovery to search for resources
3 rows
var rhelServerOne = ProxyFactory.getResource(10001)
rhqadmin@localhost:7080$ rhelServerOne.operations
Array of org.rhq.bindings.client.ResourceClientProxy$Operation
name description
-----------------------------------------------------------------------------------------------------------------------
viewProcessList View running processes on this system
cleanYumMetadataCache Deletes all cached package metadata
manualAutodiscovery Run an immediate discovery to search for resources
3 rows
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Example 10.7. Changing Configuration Properties
If the resource type supports resource configuration editing or if the resource type has plug-in connection properties, then the resource proxy has methods — editResourceConfiguration() and editPluginConfiguration(), respectively — to edit those properties.
The current configuration can be printed using the get*Configuration). For example, for the plug-in configuration:
Copy to ClipboardCopied!Toggle word wrapToggle overflow
The edit*Configuration() method brings up a configuration wizard that goes through all of the properties individually and prompts to keep or change each value. The properties are even grouped according to the same organization that the JBoss ON web UI uses. For example:
Copy to ClipboardCopied!Toggle word wrapToggle overflow
After each group, you have the option to revert or save the changes. Once the changes are saved, they are immediately updated on the JBoss ON server.
Expand
Keys
Action
return
Selects the default or existing value for a property.
ctrl-d
The same as selecting the unset checkbox in the configuration UI.
ctrl-k
Exits the configuration wizard.
ctrl-e
Displays the help description for the current property.
Example 10.8. Managing Content on Resources
Some types of resources have content associated with them. These are typically EAR or WAR resources within an application server. The content file actually associated with that EAR/WAR resource is called backing content. These are usually JARs.
This content can be updated or downloaded from the resource.
To retrieve backing content (meaning, to download the JAR/EAR/WAR file), specify the filename and file path on the application server. For example:
var contentResource = ProxyFactory.getResource(14932)
contentResource.retrieveBackingContent("/resources/backup/original.war")
var contentResource = ProxyFactory.getResource(14932)
contentResource.retrieveBackingContent("/resources/backup/original.war")
Copy to ClipboardCopied!Toggle word wrapToggle overflow
To update the content for the resource, use the updateBackingContent method and specify the filename with the path on the application server to put the content and the version number of the content. For example:
Aiutiamo gli utenti Red Hat a innovarsi e raggiungere i propri obiettivi con i nostri prodotti e servizi grazie a contenuti di cui possono fidarsi. Esplora i nostri ultimi aggiornamenti.
Rendiamo l’open source più inclusivo
Red Hat si impegna a sostituire il linguaggio problematico nel codice, nella documentazione e nelle proprietà web. Per maggiori dettagli, visita il Blog di Red Hat.
Informazioni su Red Hat
Forniamo soluzioni consolidate che rendono più semplice per le aziende lavorare su piattaforme e ambienti diversi, dal datacenter centrale all'edge della rete.