Configuration
Monitoring has to be enabled in the sophora.properties
file before you can access the information as described here. The following snippet from the sophora.properties
file shows how to activate JMX monitoring with access control:
sophora.rmi.servicePort=1198
sophora.rmi.registryPort=1199
sophora.jmx.enabled=true
sophora.jmx.username=admin
sophora.jmx.password=admin
With this configuration, the Sophora Server can be accessed using the following JMX connection string:
service:jmx:rmi://<HOST>:1198/jndi/rmi://<HOST>:1199/server
The following image shows the connection settings dialog from VisualVM:
Available MBeans
Note, that some Beans are only available if the corresponding feature is active in the respective Sophora server.
com.subshell.sophora
JMX-Attribute/JMX-Method | Description | Possible Values | Modifiable via JMX |
---|---|---|---|
CheckForIncorrectLogins | Controls, whether incorrect login requests are counted. Too many incorrect login requests lead to the locking of accounts, depending on the server configuration parameter sophora.authenticate.incorrectLoginCount . | true /false | Yes |
EnableUserLogin | When set to false, non-admin users cannot log in to this server. Users who are logged in already remain logged in. | true /false | Yes |
ConfigurationHashes
There are configuration hashes for multiple types of configuration documents that can be found via JMX. However, the scheme is the same for all of these types. Therefore, the table below lists a few attributes as Feature[...]
. For this attributes, you can substitute Feature with the following: Cnd, DefaultChildNodeConfiguration, DefaultPropertyConfiguration, DocumentProposalSection, FormFieldGroup, NodeTypeConfiguration, Role, StructureNodeDocument, StructureNode, SystemDocument, User.
JMX-Attribute/JMX-Method | Description | Possible Values | Modifiable via JMX |
---|---|---|---|
FeatureHash | Hash, calculated for all available documents of this feature. | a String | No |
FeatureHashEntries | All entries that were used to calculate the FeatureHash. | Map<String, String> of each document's name and hash. | No |
FeaturesAreInSyncWithMaster | Informs, whether this server's hash value is equal to the Sophora Primary Server's hash value of this feature, and therefore, if the configuration of this feature is in sync with the Sophora Primary Server. | TRUE, FALSE, UNKNOWN, NOT_CONSIDERED | No |
HasSameConfigurationAsMaster | Informs, whether this server has the same configuration as its Sophora Primary Server. | TRUE, FALSE, UNKNOWN, NOT_CONSIDERED | No |
JMX-Attribute/JMX-Method | Description | Possible Values | Modifiable via JMX |
---|---|---|---|
ApiVersion | Version of the Sophora API used in this server. | Sophora API version numbers | No |
Call Statistics | Statistics about method calls in the ContentManager. | No | |
CreateDocumentVersion WithoutStateCheckCount | The same as getMethodCount("createDocumentVersionWithoutStateCheck") . | Positive integers | No |
CreateDocumentVersion WithoutStateCheckDuration | The same as getMethodDuration("createDocumentVersionWithoutStateCheck") . | Positive integers | No |
CurrentLoad | System load average during the last minute. The calculation is depending on the operating system. | Positive floating point numbers | No |
DocumentTypeStatistics | Number of documents in the repository per type. Documents that are marked as deleted are included. | No | |
LockedDocumentCount | The number of currently locked documents. | Positive integers | No |
LoggedInUsers | A list of all users that are currently logged in. | String array of user names | No |
NumberOfActiveRequests | The number of current requests to the ContentManager. | Positive integers | No |
ProfilerSummary | Statistic for every API call concerning the ContentManager. | No | |
PublishDocumentCount | The number of publishing events during the last minute (getMethodCount("publishDocument") ). | Positive integers | No |
PublishDocumentDuration | The average duration of publishing events during the last minute (in ms) (getMethodDuration("publishDocument") ). | Positive integers | No |
ReadAnywhereAvailable | Informs, if this server is available in a ReadAnywhere cluster. | true /false | Yes, via toggleReadAnywhereStatus() |
ReplicationMode | Current replication mode of this Sophora server. | NONE, MASTER, SLAVE, STAGINGSLAVE | Yes, for servers started in cluster mode. |
SaveDocumentWithout PermissionCheckCount | The same as getMethodCount("saveDocumentWithoutPermissionCheck") . | Positive integers | No |
SaveDocumentWithout PermissionCheckDuration | The same as getMethodDuration("saveDocumentWithoutPermissionCheck") . | Positive integers | No |
SaveSophoraDocumentCount | The same as getMethodCount("saveSophoraDocument") . | Positive integers | No |
SaveSophoraDocumentDuration | The same as getMethodDuration("saveSophoraDocument") . | Positive integers | No |
ServerId | Unique ID of this Sophora server. | UUID | No |
ServerVersion | Version number of this Sophora server. | Sophora Server version numbers | No |
StartDate | Startup date and time of this server. | Date in format yyyy-MM-dd | No |
ThrottleLoadLimit | Threshold to decide on whether to throttle background tasks or not. See also the Throttle Mode documentation. | Positive floating point numbers. | Yes |
ThrottleMode | Informs whether the Sophora server is under high load, causing the server to go into throttle mode. | 1 if the load is high, 0 otherwise. | No |
resetInvertibleBloomFilters() | Erases and again initializes invertible bloom filters, if they are activated. | ||
syncDocuments(String) | Synchronizes the documents that are given via their UUIDs to all staging and replication Sophora Replica Servers. Returns an error, if the server this method is called on is not in replication mode MASTER. Multiple UUIDs can be separated with a comma, semicolon or tab. | ||
sendDocumentChangeEvents(String) | Sends document changed events for the documents specified by the given UUIDs. Multiple UUIDs can be separated with a comma, semicolon or tab. | ||
getMethodCount(String) | Returns the number of method calls to the ContentManager of the given method during the last minute. | ||
getMethodDuration(String) | Returns the average duration of method calls to the ContentManager of the given method during the last minute. | ||
removeAllServers() | Removes all Sophora Replica Servers that were previously connected to this server. |
JMX-Attribute/JMX-Method | Description | Possible Values | Modifiable via JMX |
---|---|---|---|
BlockSize | Number of documents that are collected for removal in each run. | Positive integers | Yes |
MinimumAgeInDays | Number indication how long ago a document's deletion has to be before it is considered by the DeletedDocumentsWorker | Positive integers | Yes |
CronExpression | The Cron Expression to trigger the DeletedDocumentsWorker | Valid Cron Expression | Yes |
startDeletingDocuments() | Enables the worker if it has been switched off | ||
stopDeletingDocuments() | Disables the worker. | ||
isDeletingDocuments() | Informs, whether the worker is currently enabled. | ||
triggerDeletedDocumentsWorker() | Run the DeletedDocumentsWorker one time |
JMX-Attribute/JMX-Method | Description | Possible Values | Modifiable via JMX |
---|---|---|---|
Initializing | True , if the server is currently starting, false otherwise. | true /false | No |
Ready | There are 3 criteria: 1. the server can accept client connections 2. the synchronization is finished 3. the staging has not been stopped after the synchronization To be considered as ready, all servers have to fulfill 1. Servers in mode Sophora Replica Server have to fulfill 2 in addition, staging Sophora Replica Servers have to additionally fulfill criteria 2 and 3. | true /false | No |
StartStaging() | Starts the staging, if it is enabled | 1, if the staging is already running 2, if the staging was started 3, if staging is not enabled | z |
StopStaging() | Stops the staging. | 1, if the staging was not started 2, if the staging was stopped 3, if staging is not enabled |