Operations

Monitoring

Structr provides several ways to monitor the health and performance of your instance: a web-based dashboard for interactive monitoring, and HTTP endpoints for integration with external monitoring systems like Prometheus and Grafana.

Dashboard Monitoring

The Admin UI Dashboard provides real-time monitoring capabilities:

See the Dashboard chapter for details on using these features.

System Resources

Structr monitors system resources to help you assess server capacity and diagnose performance issues. The Dashboard displays key metrics in the “About Structr” tab.

Available Metrics

Metric Description
Processors Number of CPU cores available to the JVM
Free Memory Currently unused heap memory
Total Memory Heap memory currently allocated by the JVM
Max Memory Maximum heap memory the JVM can allocate (configured via application.heap.max_size)
Uptime Time since Structr started
Thread Count Current number of active threads
Peak Thread Count Highest thread count since startup
Daemon Thread Count Number of daemon threads
CPU Load Average System load average (1 minute)
Node Cache Size and usage of the node cache
Relationship Cache Size and usage of the relationship cache

Interpreting Memory Values

The three memory values relate to each other as follows:

Viewing System Resources

System resource information is available in two places:

HTTP Access Statistics

Structr automatically collects statistics about HTTP requests to your application. These statistics help you understand usage patterns, identify slow endpoints, and detect unusual access behavior.

Collected Metrics

For each endpoint (HTML pages and REST API), Structr tracks:

Statistics are aggregated per time interval to keep memory usage bounded while still providing useful historical data.

Viewing Statistics

Access statistics are available in two places:

Configuration

Configure these settings in structr.conf or through the Configuration Interface:

Setting Default Description
application.stats.aggregation.interval 60000 Aggregation interval in milliseconds. Statistics are grouped into buckets of this size.

Health Check Endpoint

The health check endpoint provides machine-readable status information for load balancers, container orchestration systems, and monitoring tools.

Endpoints

Endpoint Purpose
/structr/health Full health status in JSON format
/structr/health/ready Readiness probe (HTTP status only)

Readiness Probe

The /structr/health/ready endpoint returns only an HTTP status code, making it suitable for Kubernetes readiness probes or load balancer health checks:

Full Health Status

The /structr/health endpoint returns detailed status information in the application/health+json format:

Access to the full health data is restricted by IP whitelist. Requests from non-whitelisted IPs receive only the HTTP status code.

Configuration

Configure these settings in structr.conf or through the Configuration Interface:

Setting Default Description
healthcheckservlet.path /structr/health Endpoint path
healthcheckservlet.whitelist 127.0.0.1, localhost, ::1 IPs allowed to access full health data

Prometheus Metrics

Structr exposes metrics in Prometheus format at /structr/metrics. This endpoint is designed for scraping by a Prometheus server.

Available Metrics

Metric Type Description
structr_http_requests_total Counter Total HTTP requests (labels: method, path, status)
structr_http_request_duration_seconds Histogram Request duration (labels: method, path)

In addition to Structr-specific metrics, standard JVM metrics are exposed (memory, garbage collection, threads, etc.).

Configuration

Configure these settings in structr.conf or through the Configuration Interface:

Setting Default Description
metricsservlet.path /structr/metrics Endpoint path
metricsservlet.whitelist 127.0.0.1, localhost, ::1 IPs allowed to access metrics

Prometheus Configuration

To scrape metrics from Structr, add a job to your Prometheus configuration:

scrape_configs:
  - job_name: 'structr'
    static_configs:
      - targets: ['localhost:8082']
    metrics_path: /structr/metrics

If Prometheus runs on a different machine, add its IP address to the whitelist in structr.conf:

metricsservlet.whitelist = 127.0.0.1, localhost, ::1, 10.0.0.50

Grafana Dashboard

A pre-built Grafana dashboard for Structr is available at grafana.com/grafana/dashboards/16770. You can import it using the dashboard ID 16770.

Query Histogram

The histogram endpoint provides detailed query performance analysis, useful for identifying slow queries and optimization opportunities.

Endpoint

/structr/histogram

Parameters

Parameter Description
sort Sort results by: total, count, min, max, avg (default: total)
top Number of results to return (default: 1000)
reset If present, clears the histogram data after returning results

Example: /structr/histogram?sort=avg&top=100

Configuration

Configure these settings in structr.conf or through the Configuration Interface:

Setting Default Description
histogramservlet.path /structr/histogram Endpoint path
histogramservlet.whitelist 127.0.0.1, localhost, ::1 IPs allowed to access histogram data

Related Topics