The RHQ Server, Storage Node, and Agent are supported on Linux and Windows operating systems, and on x86_64, i686, and ia64 architectures. We support other platforms that support Java 6, but native support must be disabled; however, this limits functionality of the RHQ Agent.
Support for 64-bit is limited to Linux on x86_64; RHQ is supported on other 64-bit platforms only when the OS is in 32-bit compatibility mode.
Clocks on RHQ Servers, Storage Nodes, and Agents need to be in synchronized; to keep them synchronized, a tool such as NTP is highly suggested.
RHQ requires Java 6 or higher in order to run both the RHQ Server and the RHQ Agent; either a JRE or a JDK can be used. Java must be installed on all machines monitored with an Agent, as well as on the machines hosting RHQ Servers. On Linux systems, OpenJDK, Oracle/Sun Java, or JRockit should all work. GNU libgcj is not supported. On other OS's, use the recommended Java 6 implementation.
After downloading and installing the latest JRE or JDK, set the JAVA_HOME environment variable to its installation directory. Try to avoid spaces in your Java installation path there. Alternatively, you can set the RHQ_JAVA_HOME environment variable which will override JAVA_HOME for the RHQ components.
|RHQ 3 and below also supported Java 5. RHQ 4 and later no longer supports Java 5.|
In order to run RHQ, an external database must be installed.
The supported databases are:
After installing the database, make note of the JDBC URL, username and password for the database. This information is required during the RHQ Server installation.
|The username that RHQ will use to connect to the database must be the owner of the RHQ tables. If this is not ensured, server errors will occur (for example, some tables will be periodically truncated and database servers usually require the user issuing the TRUNCATE statement to be the owner of the table being truncated).|
Postgres versions 8.3.x through 9.1.x are supported. Instructions for installing and configuring your Postgres instance can be found here.
Oracle 11g is supported. Oracle 10g is supported but deprecated. Instructions for installing and configuring your Oracle instance can be found here.
See the RHQ Browsers page for the current list of browsers that RHQ supports.
|The following refers to out-of-box defaults. If you configured your RHQ Servers, RHQ Agents, or RHQ Storage Nodes to use different ports than their out-of-box defaults, you'll obviously want to use your custom port numbers.|
RHQ uses a hub-and-spoke architecture with its agents and servers. RHQ Agents and RHQ Servers communicate with each other in two directions (agent->server, server->agent).
Each RHQ Agent is configured to talk to one or more RHQ Server endpoints. Each RHQ Server endpoint includes the port. This port is typically over 7080 (non-secure) or 7443 (SSL-secured). So, when the agent starts up, it will try to communicate to a RHQ Server over one of those two ports (an agent will only need to go over one of those ports to talk to a single RHQ Server - it depends on the transport used). If your server expects to be communicated to via the "servlet" transport, that is unsecured over port 7080 by default; if it uses "sslservlet" transport, that is ssh-secured and is over port 7443 by default.
That's the only port from agent to server.
When the RHQ Server needs to talk to the RHQ Aent, the server talks over the bind port that the agent was configured for. Out of box, that is 16163 (and that can be the same port whether the server talks to the agent over the socket or sslsocket transport - in other words, it doesn't matter if its secured or not; by default, out of box its port is 16163).
That's the only port from server to agent.
Of course, the RHQ Server needs to talk to its database too (e.g. PostgreSQL or Oracle) - so make sure any ports that your database requires to be open are actually open to the server - otherwise, the server will not be able to talk to the database.
Note: servers do not talk to one another directly - there are no ports required for server-to-server links because there is no communication like that going on.
So in summary:
|Source||Target||Default Target Port|
|Agent||Server||7080 (unsecure) /7443(secure/SSL)|
|Server||Database||(specific to your database and its configuration)|
If you have a firewall between RHQ Agent and RHQ Server you need to open these ports for RHQ to work correctly.
For further information see the section on Agent Registration.
RHQ Storage Nodes use a token ring architecture in which all nodes are considered equivalent. Any node can service a particular read/write request from a client. Unlike the RHQ Server, RHQ Storage Nodes must be able to communicate with one another as there is no single point of failure.
In addition, RHQ Servers must communicate with at least one RHQ Storage Node in order to read and write data to and from RHQ Storage Nodes.
Finally, RHQ Agents need to communicate with their associated RHQ Storage Node in order to manage it. All RHQ Storage Nodes have an associated RHQ Agent that is installed along with it - this is to allow RHQ to manage its own storage nodes via RHQ infrastructure. An RHQ Agent need only be able to talk to the one RHQ Storage Node it is assigned to manage. In other words, an RHQ Agent doesn't need to have access to every RHQ Storage Node; it only has to talk to its local storage node over the local loopback address of 127.0.0.1.
The following table summarizes ports used by the RHQ Storage Nodes.
|Function||Source||Target||Default Target Port||Description|
|JMX||Agent, Server||Storage Node||7299||Used by both RHQ Server and RHQ Agent to perform management operations.|
|CQL||Agent, Server||Storage Node||9142||Used by RHQ Server for read/write client requests. Used by RHQ Agent for managent operations.|
|RPC||command line tools||Storage Node||9160||Disabled by default. Used for Thrift RPC calls. Needed for the cassandra-cli and cqlsh client tools.|
|Gossip||Storage Node||Storage Node||7100 (unsecure) / 7101 (secure/SSL)||Used for inter-node communication. See Cassandra Node To Node Encryption for setting up encryption with inter-node communication.|