Discourse Prometheus

||||
-|-|
:discourse2: | Zusammenfassung | Discourse Prometheus ist der offizielle Prometheus-Exporter für Discourse
:hammer_and_wrench: | Repository-Link | https://github.com/discourse/discourse-prometheus
:open_book: | Installationsanleitung | So installieren Sie Plugins in Discourse

Das Discourse Prometheus-Plugin sammelt wichtige Metriken von Discourse und stellt sie unter dem Pfad /metrics zur Verfügung, damit Prometheus sie verarbeiten kann.

Diese Metriken können verwendet werden, um verschiedene Daten zu graphen, wie zum Beispiel:

Median- und 99. Perzentil-Zeiten für Themen-/Kategorien-/Top- und neueste Seiten. Unterteilung der Ausführungszeit zwischen SQL/Redis und App.

Seitenaufruf-Tracking

Fehler-Tracking

Ruby-Objektraum-Tracking, einschließlich Allokationsrate, Heaps usw.

Hosted V8-Speicherstatistiken

Warteschlange für geplante Jobs und Sidekiq-Jobdauern sowie Ausführungen.

Um eine vollständige Liste der verfügbaren Metriken zu sehen, installieren Sie das Plugin und besuchen Sie als Administrator SITENAME/metrics.

Standardmäßig erlauben wir den Zugriff auf die Route metrics für Administratoren und private IP-Adressen.


Discourse Prometheus ist intelligent genug, um Daten für alle geforkten Unicorn-Prozesse zu aggregieren und sie als kohärente Metriken auf einem einzigen Endpunkt darzustellen. Wir verwenden es intern, um unsere Sites im Blick zu behalten.

Beispiel-Dashboard unter:


Die globale Discourse-Einstellung prometheus_trusted_ip_allowlist_regex (env: DISCOURSE_PROMETHEUS_TRUSTED_IP_ALLOWLIST_REGEX) ermöglicht es, vertrauenswürdige IP-Adressen für Prometheus festzulegen. Die Einstellung akzeptiert reguläre Ausdrücke, um erweiterte IP-Bereiche festzulegen. Dies ist nützlich, wenn die IP-Adresse von Prometheus dynamisch ist.

51 „Gefällt mir“
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)

Ich verwalte derzeit Discourse auf Kubernetes, das auf mehreren App- und Sidekiq-Pods läuft. Ich habe ein paar Fragen zu dem Plugin:

  1. Aggregiert das Plugin Metriken von allen App-Pods? Ich gehe davon aus, dass es Metriken für Unicorn-Prozesse aggregiert, die auf einer einzelnen Instanz/einem einzelnen Pod laufen.
  2. Ich bin neugierig auf den Grund, warum nur für einige Controller-Aktionen Zeiten beobachtet werden. Diese Frage bezieht sich auf den Code unter discourse-prometheus/lib/collector.rb at main · discourse/discourse-prometheus · GitHub.

Hallo,

Wo finde ich die Einstellung prometheus_trusted_ip_allowlist_regex? :crying_cat_face:

Ich benutze Discourse v3.4.0.beta3-dev

Sie müssen DISCOURSE_PROMETHEUS_TRUSTED_IP_ALLOWIST_REGEX in app.yml festlegen.

1 „Gefällt mir“

Ich bin mir nicht sicher, was passiert, aber diese Integration funktioniert nicht mehr. Ich konnte das Dashboard in Grafana nichts anzeigen lassen… die /metrics geben zwar etwas zurück, aber alles darüber hinaus funktioniert nicht wirklich.

Viele Fehler wie der untenstehende:

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)

Dies als Cross-Post, da ich eine Lösung gefunden habe, die für mich funktioniert hat Discourse Prometheus 404 metrics for Grafana - #2 by DevTeVe