arrow-down
    1. Widgets
  1. IAM
    1. Virtual apps
    1. Projects
    2. Layers
        1. AttachmentUploader
        2. Checkbox
        3. Combobox
        4. ContentSelector
        5. ContentTypeFilter
        6. CustomSelector
        7. Date
        8. DateTime
        9. Double
        10. GeoPoint
        11. HtmlArea
        12. ImageSelector
        13. Long
        14. MediaSelector
        15. Radiobutton
        16. Tag
        17. TextArea
        18. TextLine
        19. Time
      1. Field set
      2. Item set
      3. Option set
      4. Mixins
      5. Localization
    3. Content Types
    4. X-data
    5. Macros
    6. Custom styles
    7. Sites
      1. Regions
      2. Part component
      3. Layout component
      4. Text component
      5. Fragments
      6. Filtering
      7. Component indexing
      8. Visual editor
    8. Page templates
    1. Sandboxes
    2. Code
    3. Building
    4. Configuration
    1. Globals
    2. HTTP
    3. Controllers
    4. Filters
    5. Events
    6. Websocket
    7. Error handler
    8. ID provider
    9. Tasks
    10. Localization
    11. Mappings
    12. Components
    13. Processors
    14. Contributions
    15. Templating
    16. Main controller
    17. Java bridge
      1. Webapp Engine
        1. Image service
        2. Component service
      2. Admin Engine
      3. Asset service
      4. HTTP service
      5. IDprovider service
    1. Task engine
    2. Management Endpoint
    3. Statistics Endpoint
    1. Nodes and repos
    2. Properties
    3. Indexing
    4. Branches
    5. Queries (NoQL)
    6. Queries (DSL)
    7. Filters
    8. Aggregations
    9. Highlighting
    10. Editors
    1. Strategies
    2. Distributions
    3. Docker image
    4. Vhosts
    5. Configuration
    6. Backup & restore
    7. Systemd
    8. Clustering
    1. Admin API
    2. Application API
    3. Auditlog API
    4. Authentication API
    5. Cluster API
    6. Common API
    7. Content API
    8. Context API
    9. Event API
    10. Export API
    11. Grid API
    12. I18N API
    13. IO API
    14. Mail API
    15. Node API
    16. Portal API
    17. Project API
    18. Repo API
    19. Scheduler API
    20. Schema API
    21. Tasks API
    22. Value API
    23. VHost API
    24. Websocket API
  2. Audit Logs
    1. Upgrade Notes
    2. Upgrading Apps

Statistics Endpoint

Contents

Monitoring

We provide some basic metric tools for monitoring which are easily accessed in a simple JSON format. To access the monitoring JSON feed you can point to the following url:

GET http://<host>:2609/
<host> equals localhost on the machine with running enonic XP instance

This will give you a list of status-reporters. Each reporter has a name and can be accessed using the following pattern:

GET http://<host>:2609/<name>

Here’s a list of all the status pages and what is shows:

cache.com.enonic.xp.webSessionCache

Statistics about the web session cache.

cluster.elasticsearch

Information about the ElasticSearch cluster. Local-node and members.

cluster.manager

Information about the state of the clusters: elasticsearch

dump.deadlocks

This will try to detect thread deadlocks and show them if any.

dump.threads

Dumps all current thread-states.

http.filter

List of servlet filters registered. It shows class, order and the URL patterns to which it applies.

http.servlet

List of HTTP servlets registered. It shows class, order and the URL patterns to which it applies.

http.threadpool

Status of the the Jetty web server thread pool.

http.webHandler

List of WebHandler instances registered.

index

Shows ElasticSearch index status.

jvm.gc

Information about JVM GC status.

jvm.info

General JVM information (version, vendor, uptime).

jvm.memory

JVM memory information (heap, non-heap, pools).

jvm.os

Information about OS (name, version, architecture).

jvm.threads

JVM thread stats (count, peak, total).

mediaTypes

List of mappings from file extension to media type.

metrics

Shows metrics. The information can be filtered using ?filter=…​.

osgi.bundle

Information about all OSGi bundles.

osgi.component

Information about registered SCR OSGi components.

osgi.service

Shows all OSGi services registered.

server

Information about the server (version, build).

Cluster monitoring

There are multiple tools at your disposal for monitoring the health of the clusters and indices:

Cluster health

GET http://<host>:2609/cluster.manager

To obtain a generic health check of the clusters. It should return you a response similar to:

{
    "state": "OK",
    "clusters": [
        {
            "id": "elasticsearch",
            "enabled": true,
            "healthy": true,
            "numberOfNodesSeen": 3
        }
    ]
}

This view gives a brief overview of the nodes in the cluster.

ElasticSearch cluster health

GET http://<host>:2609/cluster.elasticsearch

Which should return you a response similar to:

{
    "name": "mycluster",
    "localNode": {
        "isMaster": true,
        "id": "WT_gNgZ8SAu7GCJxvynSOg",
        "hostName": "griPortable.local",
        "version": "1.5.2",
        "numberOfNodesSeen": 3
    },
    "members": [
        {
            "isMaster": false,
            "id": "WqknPf3USg2fOnK6xGlWwA",
            "hostName": "griPortable.local",
            "version": "1.5.2",
            "address": "inet[/127.0.0.1:9301]",
            "name": "01bd187e-7cd1-4a8a-ac0a-918d4e09aa64",
            "isDataNode": true,
            "isClientNode": false
        },
        {
            "isMaster": false,
            "id": "xDwdxa37SUy6AHPz6hMZMA",
            "hostName": "griPortable.local",
            "version": "1.5.2",
            "address": "inet[/127.0.0.1:9302]",
            "name": "cf91d280-6111-47f2-8118-7d48664c3530",
            "isDataNode": true,
            "isClientNode": false
        },
        {
            "isMaster": true,
            "id": "WT_gNgZ8SAu7GCJxvynSOg",
            "hostName": "griPortable.local",
            "version": "1.5.2",
            "address": "inet[/127.0.0.1:9300]",
            "name": "af5287fc-663d-40bd-9b05-7cca59f96522",
            "isDataNode": true,
            "isClientNode": false
        }
    ],
    "state": "GREEN"
}

This view gives a brief overview of the nodes in the cluster. For convenience, the current local node to which the request was made has a separate entry in addition to being in the list of members.

The state property is the most important:

  • Green: Cluster is operational and all configured replicas are distributed to a node

  • Yellow: Cluster is operational, but there are replicas that are not distributed to any node

  • Red: Cluster is not operational

To see the details about how the replicas are distributed, let’s continue to the Index stats report:

Index stats

GET http://<host>:2609/index

Which should give you a response like this:

{
    "summary": {
        "total": 8,
        "started": 8,
        "unassigned": 0,
        "relocating": 0,
        "initializing": 0
    },
    "shards": {
        "started": [
            {
                "id": "search-cms-repo(0)",
                "nodeId": "xDwdxa37SUy6AHPz6hMZMA",
                "nodeAddress": "192.168.1.5",
                "type": "REPLICA"
            },
            {
                "id": "search-cms-repo(0)",
                "nodeId": "WT_gNgZ8SAu7GCJxvynSOg",
                "nodeAddress": "192.168.1.5",
                "type": "PRIMARY"
            },
            {
                "id": "search-system-repo(0)",
                "nodeId": "xDwdxa37SUy6AHPz6hMZMA",
                "nodeAddress": "192.168.1.5",
                "type": "PRIMARY"
            },
            {
                "id": "search-system-repo(0)",
                "nodeId": "WqknPf3USg2fOnK6xGlWwA",
                "nodeAddress": "192.168.1.5",
                "type": "REPLICA"
            },
            {
                "id": "storage-system-repo(0)",
                "nodeId": "WT_gNgZ8SAu7GCJxvynSOg",
                "nodeAddress": "192.168.1.5",
                "type": "REPLICA"
            },
            {
                "id": "storage-system-repo(0)",
                "nodeId": "WqknPf3USg2fOnK6xGlWwA",
                "nodeAddress": "192.168.1.5",
                "type": "PRIMARY"
            },
            {
                "id": "storage-cms-repo(0)",
                "nodeId": "WT_gNgZ8SAu7GCJxvynSOg",
                "nodeAddress": "192.168.1.5",
                "type": "PRIMARY"
            },
            {
                "id": "storage-cms-repo(0)",
                "nodeId": "WqknPf3USg2fOnK6xGlWwA",
                "nodeAddress": "192.168.1.5",
                "type": "REPLICA"
            }
        ],
        "unassigned": [],
        "relocating": [],
        "initializing": []
    }
}

This gives an overview of how the indices are distributed and what state the index parts (shards) are currently in. A shard could be either PRIMARY or REPLICA (copy of a primary shard). These are the possible states:

  • total: Total number of index parts (e.g two repositories with two indices with one replica for each index)

  • started: Shards that are currently assigned to a node

  • unassigned: Shards waiting to be distributed to a node. Typically a setup with a number of replicas where one or more nodes are not running

  • relocating: Shards that are currently moving from one node to another

  • initializing: Shards that are currently being recovered from disk at startup.

The shards section gives a more detailed overview on the shard distribution.

Hazelcast cluster health

XP XP 7.4.0 7.4.0

GET http://<host>:2609/cluster.hazelcast

Which should return you a response similar to:

{
  "clusterState": "ACTIVE",
  "clusterTime": 1599748536909,
  "clusterVersion": "3.12",
  "members": [
    {
      "uuid": "d7b9b75e-aacf-444b-bff9-af5c786843c2",
      "address": "192.168.1.1",
      "port": 5701,
      "liteMember": false,
      "version": "3.12.7"
    },
    {
      "uuid": "899920a2-d9bd-4add-8b1a-133bf27af9a0",
      "address": "192.168.1.2",
      "port": 5702,
      "liteMember": false,
      "version": "3.12.7"
    }
  ]
}

This view gives a brief overview of the nodes in the Hazelcast cluster. Check Hazelcast documentation for more details.

Health check

XP XP 7.13.0 7.13.0

GET http://<host>:2609/health

Health check validates that essential data services are available and ready to serve requests.

Successful validation will return an empty response with 200 status code. Failed validation will return 503 status code with the list of errors:

{
    "errors": [
      "org.elasticsearch.client.Client service is not available"
    ]
}

Readiness check

XP XP 7.13.0 7.13.0

GET http://<host>:2609/ready

Readiness check validates that all services needed for the instance to be fully operational are available and ready to serve requests.

Successful validation will return an empty response with 200 status code. Failed validation will return 503 status code with the list of errors:

{
    "errors": [
      "com.enonic.xp.portal.websocket.WebSocketManager service is not available",
      "com.enonic.xp.mail.MailService service is not available"
    ]
}

Contents

Contents

AI-powered search

Juke AI