Architecture and Components

The GemFire XD management and monitoring system consists of one JMX Manager node (there should only be one) and one or more managed nodes within a distributed system. All members in the distributed system are manageable through MBeans.

Architecture

The following diagram depicts the architecture of the management and monitoring system components.

In this architecture every GemFire XD member is manageable. All GemFire XD MBeans for the local GemFire XD processes are automatically registered in the Platform MBeanServer (the default MBeanServer of each JVM that hosts platform MXBeans.)

Managed Node

Each member of a distributed system is a managed node. Any node that is not currently also acting as a JMX Manager node is referred to simply as a managed node. A managed node has the following resources so that it can answer JMX queries both locally and remotely:
  • An RMI connector that allows a remote JMX client to connect directly to the node and access all local MXBeans.
  • Local MXBeans that represent the locally monitored components on the node. Possible MXBeans (depending on the node's functionality include):
    • CacheServerMXBean
    • DiskStoreMXBean
    • GatewayReceiverMXBean
    • GatewaySenderMXBean
    • GfxdMemberMXBean
    • LocatorMXBean
    • LockServiceMXBean
    • MemberMXBean
    • RegionMXBean
    • StatementMXBean
    • TableMXBean
  • Built-in platform MBeans

JMX Manager Node

A JMX Manager node is a member that can manage other GemFire XD members—that is, other managed nodes—as well as itself. A JMX Manager node can manage all other members in the distributed system.

To convert a managed node to a JMX Manager node, you configure the GemFire XD property jmx-manager=true, in the gemfirexd.properties file, and start the member as a JMX Manager node. You start the member as a JMX Manager node when you provide --J=-Dgemfire.jmx-manager=true as an argument to either the start server or start locator command. See Starting a JMX Manager for more information.

The JMX Manager node has the following extra resources allocated so that it can answer JMX queries:
  • RMI connector that allows JMX clients to connect to and access all MXBeans in the distributed system.
  • Local MXBeans that represent the locally monitored components on this node, same as any other managed node.
  • Aggregate MXBeans:
    • AggregateMemberMbean (ClusterMbean)
    • AggregateStatementMXBean
    • AggregateTableMXBean
    • DistributedSystemMXBean.
    • DistributedRegionMXBean.
    • DistributedLockServiceMXBean
  • ManagerMXBean with Scope=ALL, which allows various distributed system-wide operations.
  • Proxy to MXBeans on managed nodes.
  • Built-in platform MXBeans.

JMX Integration

Management and monitoring tools such as GemFire XD Pulse use JMX/RMI as the communication layer to connect to GemFire XD nodes. All GemFire XD processes by default allow JMX connections to the Platform MBeanServer from localhost.

JConsole (and other similar JMX clients that support Sun's Attach API) can connect to any local JVM without requiring an RMI connector by using the Attach API. This allows connections from the same machine.

JConsole (and other JMX clients) can connect to any JVM if that JVM is configured to start an RMI connector. This allows remote connections from other machines.

JConsole can connect to any GemFire XD member, but if it connects to a non-JMX-Manager member, JConsole only detects the local MBeans for the node, and not MBeans for the cluster.

When a GemFire XD locator or server becomes a JMX Manager for the cluster, it enables the RMI connector. JConsole can then connect only to that one JVM to view the MBeans for the entire cluster. It does not need to connect to any other JVMs, and other non-managed GemFire XD nodes do not start an RMI connector by default. The GemFire XD manager node manages the inter-JVM communication required to provide a federated view of all MBeans in the distributed system.

For information on how to configure the RMI registry and RMI connector, see Configuring RMI Registry Ports and RMI Connectors.

GemFire XD Management and Monitoring Tools

This section lists the currently available tools for managing and monitoring GemFire XD:
  • GemFire XD Pulse. Easy-to-use, browser-based dashboard for monitoring GemFire XD deployments. GemFire XD Pulse provides an integrated view of all members within a distributed system, as well as in remote distributed systems that are connected over a WAN.
  • Other Java Monitoring Tools such as JConsole and jvisualvm. JConsole is a JMX-based mangement and monitoring tool provided in the Java 2 Platform that provides information on the performance and consumption of resources by Java applications. See http://docs.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html. Java VisualVM (jvisualvm) is a profiling tool for analyzing your Java Virtual Machine. Java VisualVM is useful to Java application developers to troubleshoot applications and to monitor and improve the applications' performance. Java VisualVM can allow developers to generate and analyse heap dumps, track down memory leaks, perform and monitor garbage collection, and perform lightweight memory and CPU profiling. For more details on using jvisualvm, see http://docs.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html.