Status Monitoring

The status monitoring module add some extra information about the system in the GeoServer status page in a new tab named Monitoring and make that info queryable through GeoServer REST interface. This info should allow an administrator to get a quick understanding about the status of the GeoServer instance.

Library OSHI is used to retrieving system-level information without depending on native libraries or DLLs, relying solely on Apache JNA. Major operating systems (Linux, Windows and MacOX) are supported out of the box.

The available system information is:

Info Example Description
Operating system Linux Mint 18 Name of the operating system and the used version
Uptime 08:34:50 Up time of the system
System average load 1 minute 0.90 System average load for the last minute
System average load 5 minutes 1.12 System average load for the last five minute
System average load 15 minute 0.68 System average load for the last fifteen minute
Number of physical CPUs 4 Number of physical CPUs / cores available
Number of logical CPUs 8 Number of logical CPUs / cores available
Number of running process 316 Total number of process running in the system
Number of running threads 1094 Total number of threads running in the system
CPU load average 4.12 % Average load of the CPU in the last second
CPU * load 11.43 % Load of a specific core in the last second
Used physical memory 31.58 % Percentage of the system memory used
Total physical memory 31.4 GiB System total memory
Free physical memory 21.4 GiB System memory available for use
Used swap memory 0.00% Percentage of swap memory used
Total swap memory 32.0 GiB System total swap memory
Free swap memory 32.0 GiB Free swap memory
File system usage 65.47 % File system usage taking in account all partitions
Partition * used space 54.8 % Percentage of space used in a specific partition
Partition * total space 338.9 GiB Total space of a specific partition
Partition * free space 117.0 GiB Free space on a specific partition
Network interfaces send 42.0 MiB Data send through all the available network interfaces
Network interfaces received 700.4 MiB Data received through all the available network interfaces
Network interface * send 25.0 MiB Data send through a specific network interface
Network interface * received 250.4 MiB Data received through a specific network interface
CPU temperature 52.00 ºC CPU temperature
CPU voltage 1.5 V CPU voltage
GeoServer CPU usage 3.5 % Percentage of CPU used by GeoServer in the last second
GeoServer threads 49 Number of threads created by GeoServer
GeoServer JVM memory usage 5.83 % Percentage of the JVM memory used by GeoServer

If some information is not available the special term NOT AVAILABLE will appear. Values will be automatically converted to best human readable unit.

Installing the extension

  1. Download the Status Monitoring extension from the nightly GeoServer community module builds.
  2. Place the JARs into the WEB-INF/lib directory of the GeoServer installation.

Usage

The system information will be available in the GeoServer status page in the Monitoring tab (the following image only shows part of the available system information):

../../_images/gui.png

If the Monitoring tab is not present, it means that the plugin was not installed correctly. The Monitoring tab content will be refreshed automatically every second.

REST interface

It is possible to request the available system information (monitoring data) through GeoServer REST API. The supported formats are XML, JSON and HTML.

The available REST endpoints are:

/geoserver/rest/about/monitoring

/geoserver/rest/about/monitoring.json

/geoserver/rest/about/monitoring.xml

/geoserver/rest/about/monitoring.html

The HTML representation of the system data is equal to the Monitoring tab representation:

../../_images/resthtml.png

The XML and JSON representations are quite similar, for each system information the following attributes will be available:

Name Description
name name of the metric
available TRUE if the system information value is available
description description of this system information
unit unit of the system information, can be empty
category category of this system information
priority this value can be used to render the metrics in a predefined order
identifier identifies the resource associated with the metric, e.g. file partition name

Example of XML representation:

    <metrics>
<metric>
  <value>99614720</value>
  <available>true</available>
  <description>Partition [/dev/nvme0n1p2] total space</description>
  <name>PARTITION_TOTAL</name>
  <unit>bytes</unit>
  <category>FILE_SYSTEM</category>
  <identifier>/dev/nvme0n1p2</identifier>
  <priority>507</priority>
</metric>
            (...)

Example of JSON representation:

{
    "metrics": {
        "metric": [
            {
          "available": true,
          "category": "FILE_SYSTEM",
          "description": "Partition [/dev/nvme0n1p2] total space",
          "identifier": "/dev/nvme0n1p2",
          "name": "PARTITION_TOTAL",
          "priority": 507,
          "unit": "bytes",
          "value": 99614720
      },
            (...)