Application-Defined and Custom Statistics
Tanzu GemFire includes interfaces for defining and maintaining your own statistics.
- StatisticDescriptor. Describes an individual statistic. Each statistic has a name and information on the statistic it holds, such as its class type (long, int, etc.) and whether it is a counter that always increments, or a gauge that can vary in any manner.
- StatisticsType. Logical type that holds a list of
StatisticDescriptorsand provides access methods to them. The
StatisticDescriptorscontained by a
StatisticsTypeare each assigned a unique ID within the list.
StatisticsTypeis used to create a
- Statistics. Instantiation of an existing
StatisticsTypeobject with methods for setting, incrementing, getting individual
StatisticDescriptorvalues, and setting a callback which will recompute the statistic’s value at configured sampling intervals.
- StatisticsFactory. Creates instances of
Statistics. You can also use it to create instances of
StatisticsType, because it implements
DistributedSystemis an instance of
- StatisticsTypeFactory. Creates instances of
The statistics interfaces are instantiated using statistics factory methods that are included in the package. For coding examples, see the online Java API documentation for
As an example, an application server might collect statistics on each client session in order to
gauge whether client requests are being processed in a satisfactory manner. Long request queues or
long server response times could prompt some capacity-management action such as starting additional
application servers. To set this up, each session-state data point is identified and defined in a
StatisticDescriptor instance. One instance might be a
RequestsInQueue gauge, a non-negative
integer that increments and decrements. Another could be a
RequestCount counter, an integer that
always increments. A list of these descriptors is used to instantiate a
StatisticsType. When a client connects, the application server uses the
StatisticsType object to
create a session-specific
Statistics object. The server then uses the
Statistics methods to
modify and retrieve the client’s statistics. The figures below illustrate the relationships between the
statistics interfaces and show the implementation of this use case.
The Statistics Interfaces
StatisticDescriptor contains one piece of statistical information.
are collected into a
StatisticsType is instantiated to create a
StatisticDescriptor objects shown here hold three pieces of statistical information about client
session state. These are collected into a
SessionStateStats StatisticsType. With this type, the
server creates a
Statistics object for each client that connects.