Discourse Prometheus

:discourse2: Resumen Discourse Prometheus es el exportador oficial de Prometheus para Discourse
:hammer_and_wrench: Enlace al repositorio https://github.com/discourse/discourse-prometheus
:open_book: Guía de instalación Cómo instalar complementos en Discourse

El complemento Discourse Prometheus recopila las métricas clave de Discourse y las expone en la ruta /metrics para que Prometheus pueda consumirlas.

Estas métricas se pueden utilizar para graficar todo tipo de datos, como:

Mediana y percentil 99 de los tiempos para páginas de temas/categorías, principales y más recientes. Desglose del tiempo de ejecución entre SQL/Redis y la aplicación.

Seguimiento de vistas de página

Seguimiento de errores

Seguimiento del espacio de objetos de Ruby, incluida la tasa de asignación, montículos, etc.

Estadísticas de memoria de V8 alojado

Cola de trabajos programados y duraciones y ejecuciones de trabajos de Sidekiq.

Para ver una lista completa de las métricas disponibles, instala el complemento y visita NOMBREDEL SITIO/metrics como administrador.

De forma predeterminada, permitimos la ruta metrics a los administradores y a las IPs privadas.


Discourse Prometheus es lo suficientemente inteligente como para agregar datos de todos los procesos forked de unicorn y presentarlos como métricas cohesivas en un único punto final. Lo usamos internamente para hacer un seguimiento de nuestros sitios.

Panel de muestra en:


La configuración global de Discourse llamada prometheus_trusted_ip_allowlist_regex (env: DISCOURSE_PROMETHEUS_TRUSTED_IP_ALLOWLIST_REGEX) permite establecer las direcciones IP de confianza de Prometheus. La configuración acepta expresiones regulares para establecer rangos de IP avanzados. Esto es útil en el caso de que la dirección IP de Prometheus sea dinámica.

51 Me gusta
Install Prometheus plugin + Prometheus on your server
Add more metrics to Discourse Prometheus
Prometheus exporter problem with SecureRandom (multisite?)
Webhook for Discourse Uptime Monitoring?
Best configurations for speeding up standalone discourse
Huge increase in Redis use after changing hosts
Prometheus scrape job cannot reach the metrics
Prometheus pluging Cross-Origin Request
How to avoid upstream timeouts?
Staging instance on same Production instance Docker Server?
A lot of CPU cores or fast cores?
Memory creep in last couple of updates
What's the correct REGEX for the allowlist in app.yml?
Tracking discourse usage by hour?
Discourse disk space limits per user?
Admin Reporting & Analysis: Incremental Changes
Out of memory errors with custom plugin
Postgres connection error on 'bundle exec rails c'
Getting extreme load warning while server resources are not being used
Real-time updating of topics freezes under high activity
Docker image update: Redis 6 and 25% smaller image size
Real-time updating of topics freezes under high activity
Real-time updating of topics freezes under high activity
What happens next?
High load due to peak anonymous sessions, increase unicorn workers?
Opinions on AWS vs DO Page Speed / Performance
Can I ignore some user agents?
Extreme Load Error After Upgrading to 3.3.0.beta3-dev Yesterday (on Prem)
Multiple Discourse Instances with WordPress, Ghost and subfolder support
Display community health stats on lemon (lemon = RPi + Pimoroni Unicorn Hat HD)

Actualmente estoy gestionando discourse en Kubernetes, ejecutándose en múltiples pods de aplicaciones y sidekiq. Tengo un par de preguntas sobre el plugin:

  1. ¿El plugin agrega métricas de todos los pods de la aplicación? Supongo que agrega métricas para los procesos de unicorn que se ejecutan en una sola instancia/pod.
  2. Tengo curiosidad por la razón por la que solo se observan tiempos para algunas acciones del controlador. Esta consulta está relacionada con el código en discourse-prometheus/lib/collector.rb at main · discourse/discourse-prometheus · GitHub.

Hola,

¿Dónde puedo encontrar la configuración prometheus_trusted_ip_allowlist_regex? :crying_cat_face:

Estoy usando Discourse v3.4.0.beta3-dev

Tienes que configurar DISCOURSE_PROMETHEUS_TRUSTED_IP_ALLOWIST_REGEX en app.yml.

1 me gusta

No estoy seguro de lo que está pasando, pero esta integración ya no funciona. No pude conseguir que el panel de control en Grafana mostrara nada… /metrics devuelve algo, pero cualquier cosa más allá de eso realmente no funciona.

Muchos errores como el siguiente:

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)

Publicando esto también ya que encontré una solución que me funcionó Discourse Prometheus 404 metrics for Grafana - #2 by DevTeVe