Monitoring Classification Server
- Last Updated: May 13, 2026
- 3 minute read
- Semaphore
- Documentation
It is recommended that regular monitoring of Classification Server is performed. This process should include ensuring that the Classification Server is still running and actively responding to requests. Perhaps the easiest mechanism to do this is to submit periodic statistics or version requests (see the "Stats" (Statistics) Request section). In monitoring Classification Server something to check from the statistics output would be the “exceptions” values to ensure that they are 0 (or within reasonable tolerances – whatever those might be for your installation).
Note: It is possible that you could use tools such as Unicenter TNG to monitor Classification Server (using the “stats” request) or graphed using tools such as MRTG or RRDTool.
The default configuration of Classification Server includes some sample integration with RRDTool (a copy of which is included in the installation package). It is beyond the scope of this document to give full details of this package - Partially because the requirements for use will differ in every installation and also because the various ways in which this can be used are probably only limited by your imagination. See rrdtool for full documentation.
In its default configuration CS uses RRDTool to record some of the low level statistics counters (See Page 26) in a RRDTool round robin database - 3 graphs are defined which use RRDTool to generate a graph in PNG format for display purposes. The graphs / information which are included are:
- Classifications per minute for the last 24 hours - name is last_day
- Classifications per hour for the last week - name is last_week
- Classification per day for the last month - name is last_month
This integration with RRDTool is documented (assuming knowledge of RRDTool) within the configuration file for Classification Server - The graphs defined by this configuration may be easily retrieved by HTTP by using the following RESTful uri with CS:
http://[CS-SERVER:PORT]/statistics?graph=[NAME]
where:
- CS-SERVER is the name of the server CS is running on
- PORT is the port the CS admin interface is running on (5059 by default)
- NAME is the name of the particular graph as defined in the configuration
e.g.
http://localhost:5059/statistics?graph=last_day
which provides the PNG format graph of the classifications per minute graphed over the last 24 hours. Note that this RESTful interface for statistics provides a very simple way of doing a statistics request e.g.
http://localhost:5059/statistics
Will perform a statistics request and return the XML for the low level counters.
There is also an html page in the test interface which Classification Server will serve as http which displays all 3 graphs defined by the default configuration accessible via the URL:
http://localhost:5059/stats.html
By using the integration within Classification Server (provides automatic scheduling of RRDTool recording of counters and throttling of graph generation in case of large numbers of graphical requests) or by directly processing the low level statistic counters yourself (possibly by passing the low level information on to something like RRDTool from within your own code) various types of monitoring / analysis may easily be performed.
Classification Server monitoring and load-balancers
Some load balancers keep connections open to monitoring health. When using the statistic service for that purpose please ensure that the CS admin server is configured to handle sufficient number of blocked connections. To minimize impact CS is normally configured with 1 admin worker. In a network topology featuring two load balancers using blocking health-check connection and configured in fail-over mode that number should be set to 3. The IP addresses of those load balancers will also have to be declared in the configuration bean.
Example CS admin configuration for a 2 node load-balancer:
<bean id="CS_admin" class="server">
<property name="port" value="5059"/>
<property name="workers" value="3"/>
<property name="admin" value="true"/>
<property name="only_accept_ip">
<list>
<value>127.0.0.1</value>
<value>::1</value>
<value>172.16.10.2</value>
<value>172.16.10.3</value>
</list>
</property>
<property name="MaxRequestTimeInSeconds" value="3660" />
<property name="backend" value="cs_server_backend"/>
</bean>