StatusServlet
The StatusServlet displays information about the status of the nevisProxy server in plain HTML or text format. You can use the servlet for troubleshooting, for example when your server is consuming the available resources (CPU or memory), and you want to identify which requests or clients are causing the problem.
The StatusServlet makes use of the Apache module mod_status. For more information on this Apache module, see mod_status.
Beside the usual information generated by the mod_status module, the StatusServlet also displays some nevisProxy specific information about the backend services. Information is available in a table for each configured Http(s)ConnectorServlet. The table includes the following data:
- Service-Name: Name and port of the configured service
- Valid: Whether the backend is reachable
- The last error message
- Date and time of the last retry
- Date and time of the last successful call
- The number of requests per second
- Received HTTP status codes from the backend
Dynamic session management also provides information to the StatusServlet, a LocalSessionStoreServlet has the following information:
- Number of active sessions
- Used memory
- Available memory
While the MySQLSessionStoreServlet and PostgreSQLSessionStoreServlet will show the number of active sessions.
Load balancers, for example, can use this information to provide better load balancing policies, by monitoring the health of the server and the backend services, and the availability of certain server resources.
In case you do, it is recommended restricting access to the servlet via authentication or IP restrictions.
ch::nevis::navajo::apglue::httpd_${HTTPD_LIB_VERSION}_x::servlet::status::StatusServlet
libStatus_Servlet.so.1
Configuration
StatusLibPath
Type: path
Usage Constraint: required
Path to the libgenerators_ap_${HTTPD_LIB_VERSION}.so
library. You can usually set this parameter to: /opt/nevisproxy/lib/libgenerators_ap_${HTTPD_LIB_VERSION}.so.1
.
Configuration example
To configure the StatusServlet:
Add the following code block to your web.xml file:
<servlet>
<servlet-name>StatusServlet</servlet-name>
<servlet-class>ch:nevis:navajo:apglue:httpd_2_4_x:servlet:status::StatusServlet</servlet-class>
<init-param>
<param-name>StatusLibPath</param-name>
<param-value>/opt/nevisproxy/lib/libgenerators_ap_2_4.so.1</param-value>
</init-param>
</servlet>Map it to the desired path.
The following code block shows a plain text response with the auto query:
Plain text responsecentos7-test
ServerVersion: Apache/2.4.46 (Unix) OpenSSL/1.1.1h mod_qos/11.60 navajo/4.5.0.0rc2
ServerMPM: event
Server Built: Mar 10 2021 21:57:56
CurrentTime: Thursday, 11-Mar-2021 13:39:37 CET
RestartTime: Thursday, 11-Mar-2021 13:36:47 CET
ParentServerConfigGeneration: 1
ParentServerMPMGeneration: 0
ServerUptimeSeconds: 169
ServerUptime: 2 minutes 49 seconds
Load1: 1.46
Load5: 1.32
Load15: 0.69
Total Accesses: 20
Total kBytes: 84
Total Duration: 468
CPUUser: .23
CPUSystem: .11
CPUChildrenUser: 0
CPUChildrenSystem: 0
CPULoad: .201183
Uptime: 169
ReqPerSec: .118343
BytesPerSec: 508.97
BytesPerReq: 4300.8
DurationPerReq: 23.4
BusyWorkers: 1
IdleWorkers: 99
Processes: 1
Stopping: 0
BusyWorkers: 1
IdleWorkers: 99
ConnsTotal: 1
ConnsAsyncWriting: 0
ConnsAsyncKeepAlive: 0
ConnsAsyncClosing: 0
Scoreboard: __________________________W_________________________________________________________________________
TLSSessionCacheStatus
CacheType: SHMCB
CacheSharedMemory: 524288
CacheCurrentEntries: 7
CacheSubcaches: 32
CacheIndexesPerSubcaches: 91
CacheTimeLeftOldestAvg: 221
CacheTimeLeftOldestMin: 141
CacheTimeLeftOldestMax: 299
CacheIndexUsage: 0%
CacheUsage: 0%
CacheStoreCount: 7
CacheReplaceCount: 0
CacheExpireCount: 0
CacheDiscardCount: 0
CacheRetrieveHitCount: 5
CacheRetrieveMissCount: 0
CacheRemoveHitCount: 0
CacheRemoveMissCount: 0
b;system.load: 1.46
b;centos7-test;0;QS_AllConn: 1
/var/opt/nevisproxy/default/work;TestServlet;TestServlet-Name:TestServlet
/var/opt/nevisproxy/default/work;AuthConnector;Service-Name:localhost:8991;Valid: true;Load: 1;last error: ;last retry: Thu, 11 Mar 2021 12:36:46 GMT; last successful call: Thu, 11 Mar 2021 12:38:59 GMT; reqs/sec:0.0166667; received statuscodes:200(2 times)
/var/opt/nevisproxy/default/work;HttpConnectorServlet;Service-Name:localhost:8088;Valid: true;Load: 0;last error: ;last retry: Thu, 11 Mar 2021 12:36:46 GMT; last successful call: Thu, 11 Mar 2021 12:38:54 GMT; reqs/sec:0.0666667; received statuscodes:200(5 times), 401(1 times)
/var/opt/nevisproxy/default/work;MySQLSessionStoreServlet;Number of active sessions:10
/var/opt/nevisproxy/default/work;LocalSessionStoreServlet;Number of active sessions:4;Used memory:2540;Available memory:92224