Discourse Prometheus

:discourse2: 摘要 Discourse Prometheus 是 Discourse 的官方 Prometheus 导出器
:hammer_and_wrench: 仓库链接 https://github.com/discourse/discourse-prometheus
:open_book: 安装指南 如何在 Discourse 中安装插件

Discourse Prometheus 插件从 Discourse 收集关键指标,并在 /metrics 路径下暴露这些指标,以便 Prometheus 可以消费它们。

这些指标可用于绘制各种数据的图表,例如:

主题/分类/置顶和最新页面的中位数和 99 百分位耗时。分解 SQL/Redis 和应用程序之间的执行时间。

页面浏览量跟踪

错误跟踪

Ruby 对象空间跟踪,包括分配率、堆等。

托管 V8 内存统计信息

计划任务队列和 Sidekiq 任务的持续时间和执行情况。

要查看可用指标的完整列表,请安装插件并以管理员身份访问 SITENAME/metrics

开箱即用,我们允许管理员和私有 IP 访问 metrics 路由。


Discourse Prometheus 足够智能,能够聚合所有分叉的 unicorn 进程的数据,并在单个端点上将其呈现为一致的指标。我们在内部使用它来跟踪我们的站点。

示例仪表板位于:


Discourse 全局设置 prometheus_trusted_ip_allowlist_regex(环境变量:DISCOURSE_PROMETHEUS_TRUSTED_IP_ALLOWLIST_REGEX)允许设置 Prometheus 的受信任 IP 地址。该设置接受正则表达式以设置高级 IP 范围。在 Prometheus IP 地址是动态的情况下,这非常有用。

51 个赞
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)

我目前在 Kubernetes 上管理 discourse,运行于多个 app 和 sidekiq pod。关于该插件,我有几个问题:

  1. 该插件是否聚合了所有 app pod 的指标?我假设它会聚合单个实例/pod 上 unicorn 进程的指标。
  2. 我很好奇为什么只观察到某些控制器操作的时间。此问题与 discourse-prometheus/lib/collector.rb at main · discourse/discourse-prometheus · GitHub 处的代码有关。

您好,

我可以在哪里找到设置 prometheus_trusted_ip_allowlist_regex:crying_cat_face:

我正在使用 Discourse v3.4.0.beta3-dev

您必须在 app.yml 中设置 DISCOURSE_PROMETHEUS_TRUSTED_IP_ALLOWIST_REGEX

1 个赞

我不确定发生了什么,但这个集成不再起作用了。我无法让 Grafana 中的仪表板显示任何内容……/metrics 确实会返回一些内容,但除此之外的任何内容都无法真正正常工作。

出现许多类似下面这样的错误:

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)

我将此内容交叉发布,因为我找到了一个对我有用的解决方案 Discourse Prometheus 404 metrics for Grafana - #2 by DevTeVe