Skip to main content

Metrics

Version: 1.26.0

Prometheus formatted metrics endpoints can be configured for each container (including the OpenRemote Manager), you will either need Prometheus server running to scrape these endpoints or use a cloud provider service; here's an example using AWS Cloudwatch:

Refer to the website of each container app for details of metrics exposed and their meaning; here's an overview of the OpenRemote Manager metrics.

OpenRemote Manager

Component

Metric name

Type

Labels

Description
                                                                               

Artemis

artemis_active

gauge

broker: localhost

If the server is active

Artemis

artemis_address_memory_usage

gauge

broker: localhost

Memory used by all the addresses on broker for in-memory messages

Artemis

artemis_address_memory_usage_percentage

gauge

broker: localhost

Memory used by all the addresses on broker as a percentage of the global-max-size

Artemis

artemis_address_size

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost

The number of estimated bytes being used by all the queue(s) bound to this address; used to control paging and blocking

Artemis

artemis_authentication_count

gauge

broker: localhost
result: failure | success

Number of successful authentication attempts

Artemis

artemis_authorization_count

gauge

broker: localhost
result: failure | success

Number of successful authorization attempts

Artemis

artemis_connection_count

gauge

broker: localhost

Number of clients connected to this server

Artemis

artemis_consumer_count

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of consumers consuming messages from this queue

Artemis

artemis_delivering_durable_message_count

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of durable messages that this queue is currently delivering to its consumers

Artemis

artemis_delivering_durable_persistent_size

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Persistent size of durable messages that this queue is currently delivering to its consumers

Artemis

artemis_delivering_message_count

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of messages that this queue is currently delivering to its consumers

Artemis

artemis_delivering_persistent_size

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Persistent size of messages that this queue is currently delivering to its consumers

Artemis

artemis_disk_store_usage

gauge

broker: localhost

Fraction of total disk store used

Artemis

artemis_durable_message_count

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of durable messages currently in this queue (includes scheduled, paged, and in-delivery messages)

Artemis

artemis_durable_persistent_size

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Persistent size of durable messages currently in this queue (includes scheduled, paged, and in-delivery messages)

Artemis

artemis_limit_percent

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost

The % of memory limit (global or local) that is in use by this address

Artemis

artemis_message_count

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of messages currently in this queue (includes scheduled, paged, and in-delivery messages)

Artemis

artemis_messages_acknowledged

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of messages acknowledged from this queue since it was created

Artemis

artemis_messages_added

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of messages added to this queue since it was created

Artemis

artemis_messages_expired

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of messages expired from this queue since it was created

Artemis

artemis_messages_killed

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of messages removed from this queue since it was created due to exceeding the max delivery attempts

Artemis

artemis_number_of_pages

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost

Number of pages used by this address

Artemis

artemis_persistent_size

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Persistent size of all messages (including durable and non-durable) currently in this queue (includes scheduled, paged, and in-delivery messages)

Artemis

artemis_replica_sync

gauge

broker: localhost

If the initial replication synchronization process is complete

Artemis

artemis_routed_message_count

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost

Number of messages routed to one or more bindings

Artemis

artemis_scheduled_durable_message_count

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of durable scheduled messages in this queue

Artemis

artemis_scheduled_durable_persistent_size

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Persistent size of durable scheduled messages in this queue

Artemis

artemis_scheduled_message_count

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Number of scheduled messages in this queue

Artemis

artemis_scheduled_persistent_size

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost
queue: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request

Persistent size of scheduled messages in this queue

Artemis

artemis_session_count

gauge

broker: localhost

Number of sessions on this server

Artemis

artemis_total_connection_count

gauge

broker: localhost

Total number of clients which have connected to this server since it was started

Artemis

artemis_total_session_count

gauge

broker: localhost

Total number of sessions created on this server since it was started

Artemis

artemis_unrouted_message_count

gauge

address: *.*.writeattribute.# | *.*.writeattributevalue.# | provisioning.*.request
broker: localhost

Number of messages not routed to any bindings

Executors

executor_active_threads

gauge

name: ContainerExecutor | ContainerScheduledExecutor

The approximate number of threads that are actively executing tasks

Executors

executor_completed_tasks_total

counter

name: ContainerExecutor | ContainerScheduledExecutor

The approximate total number of tasks that have completed execution

Executors

executor_idle_seconds

summary

name: ContainerExecutor | ContainerScheduledExecutor

Idle time of executor

Executors

executor_idle_seconds_max

gauge

name: ContainerExecutor | ContainerScheduledExecutor

Maximum idle time of executor

Executors

executor_pool_core_threads

gauge

name: ContainerExecutor | ContainerScheduledExecutor

The core number of threads for the pool

Executors

executor_pool_max_threads

gauge

name: ContainerExecutor | ContainerScheduledExecutor

The maximum allowed number of threads in the pool

Executors

executor_pool_size_threads

gauge

name: ContainerExecutor | ContainerScheduledExecutor

The current number of threads in the pool

Executors

executor_queue_remaining_tasks

gauge

name: ContainerExecutor | ContainerScheduledExecutor

The number of additional elements that this queue can ideally accept without blocking

Executors

executor_queued_tasks

gauge

name: ContainerExecutor | ContainerScheduledExecutor

The approximate number of tasks that are queued for execution

Executors

executor_scheduled_once_total

counter

name: ContainerExecutor

Total tasks scheduled once

Executors

executor_scheduled_repetitively_total

counter

name: ContainerScheduledExecutor

Total tasks scheduled repetitively

Executors

executor_seconds

summary

name: ContainerExecutor | ContainerScheduledExecutor

Measures executor task execution time

Executors

executor_seconds_max

gauge

name: ContainerExecutor | ContainerScheduledExecutor

Maximum execution time of executor tasks

Events

or_attributes_total

counter

source: AgentService | AttributeLinkingService | EnergyOptimisationService | GatewayService | RulesEngine | none | ...

Total attributes processed by source

Events

or_attributes_seconds

summary

(none)

Total time spent processing attribute events

Events

or_attributes_seconds_max

gauge

(none)

Maximum time spent processing an attribute event

Events

or_provisioning_seconds

summary

(none)

Total time spent processing provisioning requests

Events

or_provisioning_seconds_max

gauge

(none)

Maximum time spent processing provisioning requests

Rules

or_rules_seconds

summary

(none)

Total time spent processing rules

Rules

or_rules_seconds_max

gauge

(none)

Maximum time spent processing rules

PostgreSQL (via Query Exporter)

The following metrics are exposed by the Query Exporter, which connects directly to the OpenRemote PostgreSQL database to monitor TimescaleDB performance, connection limits, and general database health. The following is based on the default configuration found in /deployment/query-exporter/config.yaml.

Metric name

Type

Labels

Description

pg_collation_mismatch_count

gauge

(none)

Number of text indexes with collation version mismatches requiring a REINDEX

pg_cache_hit_percentage

gauge

(none)

What percentage of data is being served instantly from RAM versus being slowly read from disk. You want this as high as possible

pg_connections_limit

gauge

(none)

Count of connections max limit

pg_connections_used

gauge

(none)

Count of connections in use

pg_connections_free

gauge

(none)

Count of connections available

pg_connections_stuck

gauge

(none)

Count of connections with state of idle in transaction

pg_hot_update_percent

gauge

table_name

Table percentage of updates that are HOT updates indicates good fillfactor

pg_dead_tuple_percent

gauge

table_name

Table ratio of dead tuples to live ones a ratio > 10-20% indicates not aggressive enough autovacuum

pg_last_autovacuum_hours

gauge

table_name

Table hours since last auto vacuum run successfully

pg_last_autoanalyze_hours

gauge

table_name

Table hours since last auto analyze run successfully

pg_db_disk_size

gauge

(none)

DB size in MB

pg_datapoint_raw_data_size

gauge

(none)

Asset datapoint table raw uncompressed size in MB

pg_datapoint_indexes_size

gauge

(none)

Asset datapoint table indexes size in MB

pg_datapoint_toast_size

gauge

(none)

Asset datapoint TOAST table size in MB

pg_datapoint_disk_size

gauge

(none)

Asset datapoint table size in MB

pg_datapoint_chunk_count

gauge

(none)

Asset datapoint table hypertable chunk count

pg_datapoint_uncompressed_chunk_count

gauge

(none)

Asset datapoint table hypertable uncompressed chunk count

pg_datapoint_chunks_needing_compression

gauge

(none)

Asset datapoint table hypertable chunks needing compression count

pg_datapoint_chunk_start_weeks

gauge

(none)

Asset datapoint table oldest hypertable chunk in weeks

pg_datapoint_chunk_end_weeks

gauge

(none)

Asset datapoint table newest hypertable chunk in weeks

pg_datapoint_chunks_not_analyzed

gauge

(none)

Asset datapoint table hypertable chunks not yet analyzed

pg_datapoint_largest_uncompressed_chunk

gauge

(none)

Asset datapoint table largest uncompressed hypertable chunk in MB

pg_datapoint_uncompressed_cache_hit_ratio

gauge

(none)

Asset datapoint table cache hit ratio for uncompressed chunks (Aim for 99%+)

pg_datapoint_uncompressed_blks_read_total

counter

(none)

Asset datapoint total physical disk blocks read for uncompressed chunks (Monitor rate with spikes indicate RAM spillover)

pg_datapoint_compression_ratio

gauge

(none)

Asset datapoint table compression ratio

pg_datapoint_query

gauge

(none)

Dummy metric to get typical query time metric

pg_background_errors

counter

(none)

Count of errors in background worker processes

pg_timescale_job_total_runs

counter

job_id | proc_name

TimescaleDB job total runs by job

pg_timescale_job_total_failures

counter

job_id | proc_name

TimescaleDB job total failures by job

pg_timescale_job_last_run_duration_seconds

gauge

job_id | proc_name

TimescaleDB job last run duration in seconds

pg_timescale_job_next_start_seconds

gauge

job_id | proc_name

Seconds until next scheduled run for each TimescaleDB job

pg_timescale_job_last_run_status

gauge

job_id | proc_name | last_run_status

TimescaleDB job last run status marker

pg_wal_total

counter

(none)

Total WAL written since statistics reset in MB

pg_bgwriter_checkpoints_timed_total

counter

(none)

Scheduled checkpoints executed

pg_bgwriter_checkpoints_req_total

counter

(none)

Requested checkpoints executed

pg_bgwriter_checkpoint_write_time_seconds_total

counter

(none)

Total time spent writing checkpoints in seconds

pg_bgwriter_checkpoint_sync_time_seconds_total

counter

(none)

Total time spent syncing checkpoints in seconds

pg_table_bloat_count

gauge

(none)

Number of tables where dead tuples > 30% of live rows

pg_index_bloat_count

gauge

(none)

Number of indexes that are larger than 150% of table size

pg_long_running_queries_count

gauge

(none)

Number of queries that have been running for longer than 30 seconds

pg_longest_query_duration_seconds

gauge

(none)

Duration of the longest running query in seconds


License notice: OpenRemote documentation attribution