Discours de Prométhée

||||
-|-|
:discourse2: | Résumé | Discourse Prometheus est l’exporter Prometheus officiel pour Discourse
:hammer_and_wrench: | Lien du dépôt | https://github.com/discourse/discourse-prometheus
:open_book: | Guide d’installation | Comment installer des plugins dans Discourse

Le plugin Discourse Prometheus collecte les métriques clés de Discourse et les expose dans le chemin /metrics afin que Prometheus puisse les consommer.

Ces métriques peuvent être utilisées pour tracer tous types de données, telles que :

Temps médians et au 99e percentile pour les pages des sujets / catégories / haut de liste et récentes. Décomposition du temps d’exécution entre SQL/Redis et l’application.

Suivi des pages vues

Suivi des erreurs

Suivi de l’espace objet Ruby, y compris le taux d’allocation, les heaps, etc.

Statistiques de mémoire de V8 hébergé

File d’attente des tâches planifiées et durées/exécutions des jobs Sidekiq.

Pour voir la liste complète des métriques disponibles, installez le plugin et visitez NOMDUSITE/metrics en tant qu’administrateur.

Par défaut, nous autorisons la route metrics aux administrateurs et aux adresses IP privées.


Discourse Prometheus est suffisamment intelligent pour agréger les données de tous les processus forkés d’Unicorn et les présenter sous forme de métriques cohérentes sur un seul point de terminaison. Nous l’utilisons en interne pour suivre l’état de nos sites.

Tableau de bord exemple à :


Le paramètre global de Discourse appelé prometheus_trusted_ip_allowlist_regex (env: DISCOURSE_PROMETHEUS_TRUSTED_IP_ALLOWLIST_REGEX) permet de définir les adresses IP de confiance de Prometheus. Le paramètre accepte une expression régulière pour définir des plages d’IP avancées. Cela est utile lorsque l’adresse IP de Prometheus est dynamique.

51 « J'aime »
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)

Je gère actuellement le discours sur Kubernetes, exécuté sur plusieurs pods d’application et sidekiq. J’ai quelques questions concernant le plugin :

  1. Le plugin agrège-t-il les métriques de tous les pods d’application ? Je suppose qu’il agrège les métriques des processus unicorn exécutés sur une seule instance/un seul pod.
  2. Je suis curieux de connaître la raison pour laquelle on observe des timings pour seulement certaines actions de contrôleur. Cette requête est liée au code à l’adresse discourse-prometheus/lib/collector.rb at main · discourse/discourse-prometheus · GitHub.

Bonjour,

Où puis-je trouver le paramètre prometheus_trusted_ip_allowlist_regex ? :crying_cat_face:

J’utilise Discourse v3.4.0.beta3-dev

Vous devez définir DISCOURSE_PROMETHEUS_TRUSTED_IP_ALLOWIST_REGEX dans app.yml.

1 « J'aime »

Je ne suis pas sûr de ce qui se passe, mais cette intégration ne fonctionne plus. Je n’arrive pas à afficher quoi que ce soit dans le tableau de bord Grafana… le /metrics renvoie quelque chose, mais tout le reste ne fonctionne pas vraiment.

Beaucoup d’erreurs comme celle ci-dessous

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)

Je poste ceci également car j’ai trouvé une solution qui a fonctionné pour moi Discourse Prometheus 404 metrics for Grafana - #2 by DevTeVe