Sun Java System Directory Server Enterprise Edition 6.0 Reference

Chapter 18 Directory Proxy Server Alerts and Monitoring

The Directory Proxy Server provides monitoring information about its own status. Directory Proxy Server also monitors data sources to determine whether they are alive and to detect failed connections. If a data source fails, Directory Proxy Server can switch new requests over to a working data source in a data source pool and can replay failed requests to this new data source.

This chapter describes how monitoring is implemented in Directory Proxy Server. The chapter covers the following topics:

Administrative Alerts for Directory Proxy Server

Directory Proxy Server generates a set of predefined administrative alerts. You can select one or more of the predefined administrative alerts and configure Directory Proxy Server to take a specific action when the alert events occur:

The actions that can be taken include the following:

Table 18–1 lists the predefined administrative alerts for Directory Proxy Server.

Table 18–1 Administrative Alerts for Directory Proxy Server

Alert event 

Alert code 

Configuration Parameter 

Server startup 

1000

info-server-startup

Clean server shutdown 

1001

info-server-shutdown-clean

Abrupt server shutdown 

1002

error-server-shutdown-abrupt

Configuration reloaded 

1003

info-configuration-reload

Configuration reload failure due to bad configuration. Run-time configuration not impacted. 

1004

warning-configuration-reload-failure-no-impact

Configuration reload failure due to bad configuration. Run-time configuration possibly impacted. 

1005

error-configuration-reload-failure-with-impact

Data source not available 

2000

warning-data-source-unavailable

Data source available 

2001

info-data-source-available

Listener not available 

3000

warning-listener-unavailable

Data inconsistency on data sources 

4000

warning-data-sources-inconsistent

For information about how to configure administrative alerts for Directory Proxy Server, see Configuring Administrative Alerts for Directory Proxy Server in Sun Java System Directory Server Enterprise Edition 6.0 Administration Guide.

Monitoring Data Sources

Directory Proxy Server continuously monitors data sources to determine whether they are alive and to detect failed connections. This section describes how Directory Proxy Server monitors data sources, and what action is taken when data sources fail.

How Data Sources Are Monitored

Directory Proxy Server performs the following tests to monitor the health of a data source:

These tests are described in the following sections.

Monitoring a Data Source by Listening for Errors

When this type of monitoring is configured, Directory Proxy Server listens for errors on the traffic between itself and the data source. If Directory Proxy Server detects that a client operation fails, the proxy tests the data source related to the failure.

This type of monitoring is called reactive monitoring because Directory Proxy Server reacts to an error, but otherwise performs no active testing of the data sources.

Directory Proxy Server can be configured to perform this type of reactive monitoring only, without performing the monitoring described in Monitoring Data Sources by Periodically Establishing Dedicated Connections and Monitoring Data Sources by Testing Established Connections. When only reactive monitoring is configured, the monitoring less complete but does not cause additional traffic.

Monitoring Data Sources by Periodically Establishing Dedicated Connections

When this type of monitoring is configured, Directory Proxy Server establishes a dedicated connection to a data source when no requests made to the data source or responses given by the data source for a specified time period. By periodically establishing a dedicated connection to a data source, Directory Proxy Server monitors whether the data source is working.

This type of monitoring is more complete than Monitoring a Data Source by Listening for Errors because Directory Proxy Server does not wait to detect a failure before it tests the data source. However, this type of monitoring is less complete than Monitoring Data Sources by Testing Established Connections, because the proxy does not test whether the existing connections to a data source are working.

This type of monitoring can be used in addition to Monitoring Data Sources by Testing Established Connections.

Monitoring Data Sources by Testing Established Connections

When this type of monitoring is configured, Directory Proxy Server tests each connection to each data source at regular intervals. In this way, the proxy prevents connections from being dropped because of inactivity, and detects closed connections.

This type of monitoring can be used in addition to Monitoring Data Sources by Periodically Establishing Dedicated Connections.

Directory Proxy Server can be configured to test connections in the following scenarios:

Testing established connections consumes system resources, but it provides good security for connections. If you are using the Active Directory product, you must use this method of monitoring because the Active Directory product closes inactive connections.

To test an established connection, Directory Proxy Server issues a search request with the following parameters:

If a connection is found to be down, Directory Proxy Server polls the connection at a specified interval to detect its recovery. You can configure this interval by setting the monitoring-interval property. For more information, see To Monitor a Data Source by Testing Established Connections in Sun Java System Directory Server Enterprise Edition 6.0 Administration Guide.

Directory Proxy Server monitors data sources by using a search filter. Data sources that return a result that satisfies the filter are considered to be working.

Responding to the Failure of a Data Source

When Directory Proxy Server detects an error on a connection, the proxy closes the connection and tries to reestablish the connection immediately. If the proxy can reestablish the connection, it considers the data source to be up and running. If the proxy cannot reestablish the connection, it flags the data source as unavailable. Directory Proxy Server stops distributing requests to the data source and closes all other connections to the data source.

If a request fails because of a failed connection or a failed data source, Directory Proxy Server replays the request over another connection to the same data source or replays the request to another data source. If the request is replayed to another data source, the load balancing algorithm determines which data source is used.

If there are no data sources to which Directory Proxy Server can replay the request, the proxy returns an error to the client.

Replaying the request enables the failure to be transparent to the client. Requests are replayed for the following operations:

Requests are not replayed for write operations because Directory Proxy Server cannot be sure whether the operation was performed before the connection failure occurred.

When a data source recovers after a being unavailable, Directory Proxy Server returns the data source to the list of candidate data sources. The work that was being carried out by the other candidate data sources is redistributed to include this data source, according to the load balancing algorithm.

When the failed data source recovers, Directory Proxy Server recommences monitoring the traffic between the data sources and their clients.

Monitoring Directory Proxy Server

Directory Proxy Server runs inside a Java Virtual Machine (JVM) and depends on the memory of the JVM. To ensure that Directory Proxy Server is running correctly, its memory consumption must be monitored. For information about how to monitor Directory Proxy Server memory consumption, see Retrieving Monitored Data About Directory Proxy Server by Using the JVM in Sun Java System Directory Server Enterprise Edition 6.0 Administration Guide.

Monitoring information for Directory Proxy Server is provided under the cn=monitor entry. The cn=monitor entry is managed by Directory Proxy Server in a local, in-memory database.

For information about monitoring Directory Proxy Server, see the following sections:

Monitoring Framework for Directory Proxy Server

Directory Proxy Server monitoring relies on the Java Enterprise System (ES) Monitoring Framework. The Java ES monitoring framework has been extended to provide a monitoring framework for Directory Proxy Server. The following UML diagram illustrates the Directory Proxy Server monitoring framework.

Figure 18–1 Monitoring Framework for Directory Proxy Server

Figure shows the monitoring framework for Directory Proxy
Server.

Simplified Layout of the cn=monitor Entry

This section provides a simplified layout of the cn=monitor entry. For the detailed layout of the cn=monitor entry and a description of all of the entries and attributes under cn=monitor, see Detailed Layout of the cn=monitor Entry.


cn=monitor
|
+-- cn=Product (Installed Product)
    |
    +-- cn=ProductName
        |
        +-- cn=Operating System
        +-- cn=Instance (Application System)
            |
            +-- cn=InstanceId
                |
                +-- cn=Service
                    +-- cn=Add
                    +-- cn=Delete
                    +-- cn=Modify
                    +-- cn=ModifyDN
                    +-- cn=Search
                    +-- cn=Compare
                    +-- cn=Bind
                +-- cn=Resource (System Resource)
                    +-- cn=Work Queue
                    +-- cn=Worker Thread
                        +-- cn=worker_thread_name
                    +-- cn=Search Thread
                        +-- cn=search_thread_name
                    +-- cn=Monitor Thread
                        +-- cn=monitor_thread_name
                    +-- cn=Connection Handler Thread
                        +-- cn=connection_handler_thread_name
                +-- cn=SAP (Service Access Point)
                    +-- cn=LDAP
                    +-- cn=LDAPS
                +-- cn=RSAP (Remote SAP)
                    +-- cn=LDAP  Server servername
                    +-- cn=LDAPS Server servername
                    +-- cn=RDBM  Server servername
                +-- cn=Component (Logical Component)
                    +-- cn=DataSource Pool
                        +-- cn=poolname
                            +-- cn=Proportional Load Balancing
                                +-- cn=Add
                                +-- cn=Search
                                +-- cn=Delete
                                +-- cn=Compare
                                +-- cn=Modify
                                +-- cn=ModifyDN
                                +-- cn=Bind
                +-- cn=JVM
                +-- cn=DB System
                +-- cn=DB Service

Status of Monitored Information

Every element that is monitored has an operational status. Table 18–2 gives the status of monitored information.

Table 18–2 Status of Monitored Information

Value 

Name 

Description 

UNKNOWN

No information available for this element 

OK

Element is fully operational 

DEGRADED

Element is working but not optimally 

STRESSED

Element is working under stressed environment (for example, overload) 

PREDICTIVE_FAILURE

Element is working but may fail in the near future 

ERROR

Severe error has been raised 

STARTING

Element is starting 

STOPPING

Element is stopping 

10 

STOPPED

Element is stopped 

12 

NO_CONTACT

Element has never been reached 

13 

LOST_COMMUNICATION

Element has been reached once, but it is currently unreachable 

Description of Each Entry Under the cn=monitor Entry

For information about each entry in the cn=monitor subtree, see the following sections:

cn=Product

The cn=Product entry identifies the set of files being installed. An installed product is identified by the entry cn=ProductName.

cn=Product contains the following groups of attributes:

Settings
  • version identifies the full release number containing major release, minor release and optionally micro release (for example, 6.0).

  • buildNumber identifies the syntax of the build number.

  • patchId identifies the patch of the product. This attribute can be empty.

  • installDate identifies the date of last installation of the product or patch.

  • installLocation identifies the full installation path.

State

Provides operational status and availability status.

Statistics

Provides a set of statistics metrics such as performance and usage.

cn=Operating System

The cn=Operating System entry identifies which operating system the product package is installed under. This entry has the following monitoring DN:


cn=Operating System, cn=ProductName, cn=Product, cn=monitor

cn=Operating System contains the following groups of attributes:

Settings
  • OperatingSystemName identifies the name of the operating system (for example, SunOS).

  • operatingSystemVersion identifies the release of the operating system (for example, 6.1).

State

Provides operational status and availability status.

Statistics

The following list contains some of the statistics that can be collected:

  • totalVisibleMemory

  • totalVirtualMemory

  • freePhysicalMemory

  • usedPhysicalMemory

cn=Instance

The cn=Instance entry identifies an instance of the installed product. More than one instance of a product can exist on a single data source. Each instance is identified by an instance ID, where instanceId=host:instance-path.

The cn=Instance entry has the following monitoring DN:


cn=InstanceId, cn=Instance, cn=Operating System, cn=ProductName,
  cn=Product, cn=monitor

cn=Operating System contains the following groups of attributes:

Settings

Provides configuration attribute values.

State

operationalStatus identifies the status of the element, with the following values: 0, 2, 8, 9, and 10. For information about the values, see Table 18–2.

Statistics

Provides a set of statistics metrics such as performance and usage.

cn=Service

The cn=Service entry identifies information about LDAP operations, or services, for an instance of Directory Proxy Server.

LDAP operations are add, delete, modify, modifyDN, search, compare, and bind. Each LDAP operation has a specific monitoring entry below cn=Service. For example, the add operation has the following DN:


cn=add, cn=Service, cn=InstanceId, cn=Instance, cn=Operating System, 
  cn=ProductName, cn=Product, cn=monitor

Entries below cn=Service can contain the following groups of attributes:

Settings

Provides configuration attribute values.

State

Provides operational status and availability status.

Statistics
  • total identifies the number of operations received by this instance of Directory Proxy Server.

  • succeeded identifies the number of successful operations in this instance of Directory Proxy Server.

  • failed identifies the number of failed operations in this instance of Directory Proxy Server.

  • abandonned identifies the number of operations abandoned by this instance of Directory Proxy Server.

cn=SAP

A Service Access Point (SAP) provides information on how to access a service. The cn=SAP entry has the following monitoring DN:


cn=listenerName, cn=SAP, cn=instanceId, cn=Instance, 
  cn=OperatingSystem, cn=Product, cn=monitor

Entries below cn=SAP can contain the following groups of attributes:

Settings
  • name identifies the SAP name, either LDAP or LDAPS.

  • isSecure identifies whether LDAPS is used. If the value is TRUE, LDAPS is used.

  • host identifies the hostname of the current data source.

  • port identifies the port number to access this instance of Directory Proxy Server.

State
  • operationalStatus identifies the status of the SAP. If the value is 2 or OK, the SAP is fully operational.

  • startTime identifies the date and time at which the SAP was started.

  • stopTime identifies the date and time at which the SAP was stopped.

  • stopException provides a description of the error if a stop operation fails. If this attribute is empty, no error has occurred.

Statistics
  • acceptedConnections identifies the number of accepted TCP connections. One counter exists for all LDAP operations. The counter is service agnostic.

cn=RSAP

The cn=RSAP entry identifies the type of remote service. The remote SAP can be one of the following types:

LDAP Remote SAP

The cn=RSAP entry for an LDAP remote SAP can have one of the following monitoring DNs:


cn=LDAP  servername, cn=RSAP, cn=instanceId, cn=Instance, 
  cn=OperatingSystem, cn=Product, cn=monitor

cn=LDAPS  servername, cn=RSAP, cn=instanceId, cn=Instance, 
  cn=OperatingSystem, cn=Product, cn=monitor

Entries below cn=RSAP can contain the following groups of attributes:

Settings
  • name identifies the SAP name, either LDAP or LDAPS.

  • isSecure identifies whether LDAPS is used. If the value is TRUE, LDAPS is used.

  • host identifies the hostname of the host server.

  • port identifies the port number to access this instance of Directory Proxy Server.

  • totalConnections identifies the total number of connections for bind, read and write operations.

  • connectionsForBind identifies the number of connection for bind operations.

  • connectionsForRead identifies the number of connection for read operations (search and compare).

  • connectionsForWrite identifies the number of connection for write operations (add, delete, modify, and modifyDN).

State
  • operationalStatus identifies the status of the element, with the following values: 2, 4, 12, and 13. For information about these values, see Table 18–2.

Statistics
  • totalAvailableConnections identifies the total number of available connections for bind, read and write operations. The value 0 means that access to that data source is congested.

  • The following attributes are given for bind operations but also exist for read operations and write operations:

    • totalBindConnections identifies the number of established connections for bind operations. All of the connections are kept in a pool of bind connections.

    • availableBindConnections identifies the number of free bind connections in the pool.

    • requestedBindConnections identifies the number of requests to get a free bind connection from the pool.

    • providedBindConnections identifies the number of bind connections provided upon request.

    • refusedBindConnections identifies the number of requests being refused because the pool is empty (even after a wait) or because the remote data source is down.

    • waitRequiredBindConnections identifies the number of requests being blocked in a wait state, waiting for a bind connection to be freed.

    • returnedValidBindConnections identifies the number of connections being released.

    • returnedInvalidBindConnections identifies the number of connections being released as invalid. A connection is said to be invalid when errors have occurred.

ODBC Remote SAP

The cn=RSAP entry for an ODBC remote SAP has the following monitoring DN:


cn=ODBC servername, cn=RSAP, cn=instanceId, cn=Instance, 
  cn=OperatingSystem, cn=Product, cn=monitor

Entries below cn=RSAP can contain the following groups of attributes:

Settings
  • name identifies the SAP name, ODBC.

  • isSecure identifies whether LDAPS is used. If the value is TRUE, LDAPS is used.

  • host identifies the hostname of the host server.

  • port identifies the port number to access this instance of Directory Proxy Server.

State
  • operationalStatus identifies the status of the element, with the following values: 2, 4, 12, and 13. For information about these values, see Table 18–2.

Statistics
  • Provides a set of statistics metrics such as performance and usage.

cn=Component

The cn=Component entry identifies the part of the software being accessed through a service. The following parts of the software are identified by the cn=Component entry:

Proportional Load Balancing Algorithm For All Data Sources

The cn=Component entry for the proportional load balancing algorithm for all data sources has the following monitoring DN:


cn=ProportionalLB, cn=DataSourcePool poolname, cn=Component, 
  cn=instanceId, cn=Instance, cn=OperatingSystem, cn=Product, cn=monitor

Entries below the cn=Component entry for the proportional load balancing algorithm contain the following groups of attributes for all data sources:

Settings
  • Provides configuration attribute values.

State
  • enabled identifies the status of the remote SAP. If the value is TRUE, the load balancing algorithm is active.

Statistics
  • totalProvidedBindConnections identifies the total number of connections provided for bind operations.

  • totalRefusedBindConnections identifies the number of refused connections for bind operations.

    Connections can be refused for one of the following reasons:

    • The pool of data sources is empty.

    • All the data sources in the pool are down.

    • The data source selected by the load balancing algorithm has no free connection to reach the remote service.

  • totalProvidedAddConnections see totalProvidedBindConnections

  • totalRefusedAddConnections see totalRefusedBindConnections

  • totalProvidedCompareConnections see totalProvidedBindConnections

  • totalRefusedCompareConnections see totalRefusedBindConnections

  • totalProvidedDeleteConnections see totalProvidedBindConnections

  • totalRefusedDeleteConnections see totalRefusedBindConnections

  • totalProvidedModifyConnections see totalProvidedBindConnections

  • totalRefusedModifyConnections see totalRefusedBindConnections

  • totalProvidedModifyDNConnections see totalProvidedBindConnections

  • totalRefusedModifyDNConnections see totalRefusedBindConnections

  • totalProvidedCompareConnections see totalProvidedBindConnections

  • totalRefusedCompareConnections see totalRefusedBindConnections

Proportional Load Balancing Algorithm For Individual Data Sources

The cn=Component entry for the proportional load balancing algorithm for individual data sources has the following monitoring DN:


cn=Add, cn=servername, cn=Proportional LB, cn=DataSource Pool poolname,
  cn=Component, cn=instanceId, cn=Instance, cn=OperatingSystem, 
  cn=Product, cn=monitor

Similar monitoring DNs exist for the delete, modify, modifyDN, search, compare, and bind operations.

Entries below the cn=Component entry for the proportional load balancing algorithm contain the following groups of attributes for individual data sources:

Settings
  • expectedWeight identifies the expected weight for the operation on the data source.

State
  • operationalStatus identifies the status of the element, with the following values: 2, and 5. For information about these values, see Table 18–2.

Statistics
  • provided the number of connections provided to reach the data source for the operation.

  • failed the number of failed requests to get a connection to that data source.

  • realWeight the real usage of the data source for the operation, to be compared with the expectedWeight.

cn=JVM

The cn=JVM entry identifies the JVM that is being used to run the instance of Directory Proxy Server. The cn=JVM entry has the following monitoring DN:


cn=JVM, cn=instanceId, cn=Instance, cn=DPS60, cn=Product, cn=monitor

Entries below cn=JVM can contain the following groups of attributes:

Settings
  • version identifies the version of the JVM used to run the instance of Directory Proxy Server.

  • installLocation identifies the location of the JVM installation.

State
  • operationalStatus identifies the status of the element, with the following values: 2, and 5. For information about these values, see Table 18–2.

Statistics
  • totalJVMMemory identifies the total amount of memory allocated for the JVM to run.

  • usedJVMMemory identifies the amount of memory currently in use.

  • freeJVMMemory identifies the amount of free memory.

cn=Resource

The cn=Resource entry identifies the set of resources being used by the software. Resources include buffers, file descriptors, and hard disks.

The following elements are identified by the cn=Resource entry:

Connection Handler Thread

The connection handler thread decodes incoming requests. The connection handler is oriented to the LDAP or LDAPS protocol. When a request has been fully decoded, the request is put in the work queue.

The cn=Resource entry for the connection handler thread has the following monitoring DN:


cn=connection_handler_thread_name, cn=Connection Handler Thread,
  cn=Resource, cn=instanceId, cn=Instance, cn=DPS60, cn=Product, 
  cn=monitor

Entries below the cn=Resource entry for the connection handler thread contain the following groups of attributes:

Settings

Provides configuration attribute values.

State
  • operationalStatus identifies the status of the element. The value 2 indicates that the element is fully operational.

  • startTime identifies the date and time at which the thread was started.

  • stopTime identifies the date and time at which the thread was stopped.

Statistics

The following statistics can be gathered:

  • Byte buffer pool statistics under cn=ByteBufferPool:

    • numTries

    • numHits

    • numMissesEmpty

    • numMissesSize

    • numReleases

    • availableStandardBuffers

    • availableOversizedBuffers

  • String buffer pool statistics under cn=StringBufferPool:

    • numTries

    • numHits

    • numMisses

    • numReleases

    • availableBuffers

  • Vector pool statistics under cn=VectorPool:

    • numTries

    • numHits

    • numMisses

    • numReleases

    • availableBuffers

Work Queue

Incoming requests from clients are stored by connection handler threads in the work queue. The requests are then processed by the worker thread. The cn=Resource entry for the work queue has the following monitoring DN:


cn=Work Queue, cn=Resource, cn=instanceId, cn=Instance, cn=DPS60, 
  cn=Product, cn=monitor

Entries below the cn=Resource entry for the work queue contain the following groups of attributes:

Settings
  • normalPriorityBacklogHighWaterMark identifies the maximum number of requests of normal priority that can be put in the queue. When this threshold is reached, the connection handler is suspended.

  • normalPriorityBacklogLowWaterMark. When the number of operations of normal priority drops lower than the normalPriorityBacklogLowWaterMark, the connection handler is woken up.

State
  • operationalStatus identifies the status of the element, with the following values: 2, and 4. For information about these values, see Table 18–2.

Statistics
  • numNormalPriorityPuts identifies the number of requests of normal priority that are put in the queue by the connection handler threads.

  • numNormalPriorityGets identifies the number of request of normal priority retrieved from the queue by worker threads.

  • normalPriorityBacklog identifies the number of remaining requests of normal priority in the queue.

  • maxNormalPriorityBacklog identifies the peak of remaining requests of normal priority in the queue.

  • numHighPriorityPuts identifies the number of requests of high priority that are put in the queue by the connection handler threads.

  • numHighPriorityGets identifies the number of request of high priority retrieved from the queue by worker threads.

  • highPriorityBacklog identifies the number of remaining requests of high priority in the queue.

  • maxHighPriorityBacklog identifies the peak of remaining requests of high priority in the queue.

  • numAbandonRequests identifies the number of requests that are abandoned.

  • numSuccessfulAbandons identifies the number of requests that are abandoned while in the queue.

Worker Thread

The worker thread processes requests from the work queue.

The cn=Resource entry for the worker thread has the following monitoring DN:


cn=worker_thread_name, cn=Worker Thread, cn=Resource,
  cn=instanceId, cn=Instance, cn=DPS60, cn=Product, cn=monitor

Entries below the cn=Resource entry for the search thread contain the same groups of attributes as described in Connection Handler Thread, and the following attributes:

Statistics
  • processedOperations identifies the number of operations processed by the worker thread.

  • raisedExceptions identifies the number of exceptions raised during the processing of operations.

Search Thread

When a search is performed on several data views, parallel search threads can be used. The cn=Resource entry for the search thread has the following monitoring DN:


cn=search_thread_name, cn=Search Thread, cn=Resource, cn=instanceId,
  cn=Instance, cn=DPS60, cn=Product, cn=monitor

Entries below the cn=Resource entry for the search thread contain the same groups of attributes as described in Connection Handler Thread.

Monitor Thread

The monitor thread checks the availability of remote data sources. A remote data source is considered to be available when the monitor thread can create one connection to the remote data source. The cn=Resource entry for the monitor thread has the following monitoring DN:


cn=monitor_thread_name, cn=Monitor Thread, cn=Resource, cn=instanceId,
  cn=Instance, cn=DPS60, cn=Product, cn=monitor

Entries below the cn=Resource entry for the search thread contain the same groups of attributes as described in Connection Handler Thread, and the following groups of attributes:

Settings
  • backendServerName identifies the name of the monitored remote data source.

  • checkInterval identifies the interval of time (in seconds) between two checks.

  • additionalCheckType identifies additional checking. The following values can be used:

    • 1 (no additional checks)

    • 2 (create a bind connection to the data source)

    • 3 (create a read connection to the data source)

State
  • serverIsAvailable identifies the status of the remote data source. The value is true if the remote data source is up and running.

Statistics
  • totalChecks identifies the total number of checks.

  • failedAvailabilityChecks identifies the number of failed availability checks. An availability check is successful when a remote data source is up and running.

  • failedAdditionalChecks identifies the number of failed additional checks.

Detailed Layout of the cn=monitor Entry

This section provides a detailed layout of the cn=monitor subtree.


cn=monitor
|
+-- cn=Product (Installed Product)
    |
    +-- cn=ProductName
        || setting:
        || - version
        || - buildNumber
        || - patchId
        || - installedDate
        || - installLocation
        +-- cn=Operating System
            || setting:
            || - version
            || state:
            || - (empty)
            || statisitics:
            || - totalVisibleMemory
            || - totalVirtualMemory
            || - freePhysicalMemory
            || - usedPhysicalMemory
            || - ...
        +-- cn=Instance  (Application System)
            |
            +-- cn=InstanceId (= host:port:instanceDir)
                |
                +-- cn=Service
                    +-- cn=Add
                        || statistics:
                        || - total
                        || - succeeded
                        || - failed
                        || - abandonned (?)
                    +-- cn=Search
                        || (same as Add operation above)
                    +-- cn=Delete
                    +-- cn=Compare
                    +-- cn=Modify
                    +-- cn=ModifyDN
                    +-- cn=Bind
                +-- cn=SAP  (Service Access Point)
                    +-- cn=listenerName
                        || settings:
                        || - name
                        || - isSecure
                        || - host (?)
                        || - port (?)
                        || state:
                        || - operationalStatus
                        || - startTime
                        || - stopTime
                        || - stopException
                        || statistics:
                        || - acceptedConnections
                    +-- cn=listenerName
                        || (same as above)
                +-- cn=RSAP  (Remote SAP)
                    +-- cn=LDAP Server servername
                        || settings:
                        || - name
                        || - isSecure
                        || - host (?)
                        || - port (?)
                        || - connectionsForBind
                        || - connectionsForRead
                        || - connectionsForWrite
                        || state:
                        || - operationalStatus
                        || statistics:
                        || - totalConnections
                        || - totalAvailableConnections
                        || - totalBindConnections
                        || - availableBindConnections
                        || - requestedBindConnections
                        || - providedBindConnections
                        || - refusedBindConnections
                        || - waitRequiredBindConnections
                        || - returnedValidBindConnections
                        || - returnedInvalidBindConnections
                        || - (idem for readConnections)
                        || - (idem for writeConnections)
                    +-- cn=LDAPS Server servername
                        || (same as LDAP Server above)
                    +-- cn=RDBM Server servername
                        || settings:
                        || - TBC
                        || state:
                        || - TBC
                        || statistics:
                        || - TBC
                +-- cn=Component  (Logical Component)
                    +-- cn=DataSource Pool poolname
                        +-- cn=Proportional LB
                            || settings:
                            || - (empty)
                            || state:
                            || - enabled
                            || statistics:
                            || - totalProvidedBindConnections
                            || - totalRefusedBindConnections
                            || - totalProvidedAddConnections
                            || - totalRefusedAddConnections
                            || - totalProvidedCompareConnections
                            || - totalRefusedCompareConnections
                            || - totalProvidedDeleteConnections
                            || - totalRefusedDeleteConnections
                            || - totalProvidedModifyConnections
                            || - totalRefusedModifyConnections
                            || - totalProvidedModifyDNConnections
                            || - totalRefusedModifyDNConnections
                            || - totalProvidedCompareConnections
                            || - totalRefusedCompareConnections
                            +-- cn=servername
                                +-- cn=Add
                                    || settings:
                                    || - expectedWeight
                                    || statistics:
                                    || - provided
                                    || - failure
                                    || - realWeight
                                +-- cn=Search
                                    || (same as Add operation above)
                                +-- cn=Delete
                                +-- cn=Compare
                                +-- cn=Modify
                                +-- cn=ModifyDN
                                +-- cn=Bind
                +-- cn=JVM
                    || settings:
                    || - version
                    || - installLocation
                    || state:
                    || - (empty)
                    || statistics:
                    || - totalJVMMemory
                    || - usedJVMMemory
                    || - freeJVMMemory
                +-- cn=Resource  (System Resource)
                    +-- cn=Worker Thread
                        +-- cn=worker_thread_name
                            || settings:
                            ||
                            || state:
                            || - operationalStatus
                            || - startTime
                            || - stopTime
                            || statistics:
                            || - processedOperations
                            || - raisedExceptions
                            +-- cn=Byte Buffer Pool
                                || statistics:
                                || - numTries
                                || - numHits
                                || - numMissesEmpty
                                || - numMissesSize
                                || - numReleases
                                || - availableStandardBuffers
                                || - availableOversizedBuffers
                            +-- cn=String Buffer Pool
                                || statistics:
                                || - numTries
                                || - numHits
                                || - numMisses
                                || - numReleases
                                || - availableBuffers
                            +-- cn=Vector Pool
                                || statistics:
                                || - numTries
                                || - numHits
                                || - numMisses
                                || - numReleases
                                || - availableVectors
                    +-- cn=Search Thread
                        +-- cn=search_thread_name
                            || settings:
                            ||
                            || state:
                            || - operationalStatus
                            || - startTime
                            || - stopTime
                            || statistics:
                            ||
                            +-- cn=Byte Buffer Pool
                                || (see Worker Thread)
                            +-- cn=String Buffer Pool
                                || (see Worker Thread)
                            +-- cn=vector Pool
                                || (see Worker Thread)
                    +-- cn=Monitor Thread
                        +-- cn=monitor_thread_name
                            || settings:
                            || - backendServerName
                            || - checkInterval
                            || - additionalCheckType
                            || state:
                            || - operationalStatus
                            || - serverIsAvailable
                            || statistics:
                            || - totalChecks
                            || - failedAvailabilityChecks
                            || - failedAdditionalChecks
                            +-- cn=Byte Buffer Pool
                                || (see Worker Thread)
                            +-- cn=String Buffer Pool
                                || (see Worker Thread)
                            +-- cn=vector Pool
                                || (see Worker Thread)
                    +-- cn=Connection Handler Thread
                        +-- cn=connection_handler_thread_name
                            || settings:
                            ||
                            || state:
                            || - operationalStatus
                            || - startTime
                            || - stopTime
                            || statistics:
                            || - (empty)
                            +-- cn=Byte Buffer Pool
                                || (see Worker Thread)
                            +-- cn=String Buffer Pool
                                || (see Worker Thread)
                            +-- cn=Vector Pool
                                || (see Worker Thread)
                    +-- cn=Work Queue
                        || settings:
                        || - maxNormalPriorityBacklog
                        || - maxHighPriorityBacklog
                        || state:
                        || - (empty)
                        || statistics:
                        || - numNormalPriorityPuts
                        || - numNormalPriorityGets
                        || - normalPriorityBacklog
                        || - numHighPriorityPuts
                        || - numHighPriorityGets
                        || - highPriorityBacklog
                        || - numAbandonRequests
                        || - numSuccessfulAbandons
                +-- cn=DB System
                +-- cn=DB Service