Scheduled Job Queue and Sidekiq job durations and executions.
To see a full list of metrics available, install the plugin and visit SITENAME/metrics as an admin.
Out of the box we allow the metrics route to admins and private ips.
Discourse Prometheus is smart enough to aggregate data for all forked unicorn processes and present it as cohesive metrics on a single endpoint. We use it internally to keep track of our sites.
Sample dashboard at:
Discourse global setting called prometheus_trusted_ip_allowlist_regex (env: DISCOURSE_PROMETHEUS_TRUSTED_IP_ALLOWLIST_REGEX) is allowing to set Prometheus’s trusted IP addresses. The setting accepts regular expression to set advanced IP ranges. This is useful in a case when Prometheus IP address is dynamic.
Started GET "/metrics/api/v1/label/instance/values?limit=40000&start=1760980620&end=1760982480&match[]=discourse_page_views" for 16.63.57.20 at 2025-10-20 17:47:07 +0000
Started GET "/metrics/api/v1/label/job/values?limit=40000&start=1760980620&end=1760982480&match[]=discourse_page_views%7B%7D" for 16.63.57.20 at 2025-10-20 17:47:07 +0000
Rendered layout layouts/no_ember.html.erb (Duration: 21.1ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 26.0ms | GC: 0.0ms)
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:07 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:07 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:07 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:07 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:07 +0000
Rendered layout layouts/no_ember.html.erb (Duration: 19.8ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 28.2ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 34.6ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 44.4ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 41.7ms | GC: 0.0ms)
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:07 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:08 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:08 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:08 +0000
Rendered layout layouts/no_ember.html.erb (Duration: 23.6ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 24.9ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 19.9ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 21.6ms | GC: 0.0ms)
Started GET "/metrics/api/v1/label/job/values?limit=40000&start=1760980620&end=1760982480&match[]=discourse_page_views%7B%7D" for 16.63.57.20 at 2025-10-20 17:47:37 +0000
Started GET "/metrics/api/v1/label/instance/values?limit=40000&start=1760980620&end=1760982480&match[]=discourse_page_views" for 16.63.57.20 at 2025-10-20 17:47:37 +0000
Rendered layout layouts/no_ember.html.erb (Duration: 19.5ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 20.9ms | GC: 0.0ms)
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:37 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:37 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:37 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:37 +0000
Started POST "/metrics/api/v1/query_range" for 16.63.57.20 at 2025-10-20 17:47:37 +0000
Rendered layout layouts/no_ember.html.erb (Duration: 22.4ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 22.0ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 40.0ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 37.0ms | GC: 0.0ms)
Rendered layout layouts/no_ember.html.erb (Duration: 24.8ms | GC: 1.6ms)