【问题标题】:Ruby on Rails: getting Prometheus metrics with TelegrafRuby on Rails:使用 Telegraf 获取 Prometheus 指标
【发布时间】:2017-03-31 07:01:48
【问题描述】:

我有一个安装了 Prometheus-client 和 Telegraf 守护程序的 RoR 应用程序,Prometheus input plugin 在我要监控的实例上工作。

据我了解,我需要某种exporter middleware 来从Prometheus::Client.registry 收集指标并使用/metrics HTTP 端点公开它们。

我不太明白的是如何将来自不同环境的所有指标(例如,来自 rake 任务和应用程序的运行时代码)传递到同一 @987654328 实例的同一个注册表(它是 Prometheus::Middleware::Exporter.new(registry) 的实例变量) @中间件?

另外,例如,Telegraf 的 Prometheus 输入插件的 urls = ["http://localhost:3000/metrics"] 配置是否可以在 EC2 实例上工作?

感谢您的建议。

【问题讨论】:

    标签: ruby-on-rails ruby prometheus telegraf-inputs-plugin


    【解决方案1】:

    首先,不建议使用像 Telegraf 这样的包罗万象的导出器。您可以在这篇博文中了解一些论点:https://www.robustperception.io/one-agent-to-rule-them-all/。

    那么,如果我正确理解了您的问题,则不可能从多个进程(例如您的 Rails 应用程序和一些 rake 任务)中使用相同的注册表。您的 Rails 应用将导出自己的指标,您需要使用不同的方法来执行 rake 任务。

    由于 rake 任务(通常)是短暂的进程,它们不太适合从中提取。这里有两个选择,或者使用 Pushgateway 和 client_ruby 中的 PGW-support 在 rake 任务执行结束时推送所有相关指标(比如花了多长时间,处理了多少项目,如果有任何错误, ETC。)。或者,您可以使用 node_exporter 中的文本文件收集器,并在 rake 任务执行结束时将指标写入磁盘。然后 node_exporter 将读取该文件并在它被抓取时导出指标。

    我不主动监控 stackoverflow,您可以在 prometheus-users 邮件列表中获得更多有关这些问题的帮助,请参阅https://prometheus.io/community/。

    【讨论】:

      【解决方案2】:

      也许更简单的方法是在同一主机上设置 Telegraf 客户端(使用 Prometheus 输出和 statsd 输入),然后以 statsd 格式从您的应用程序将事件触发到 Telegraf 的输入中。然后 Telegraf 将转身并以 Prometheus 的格式发出这些指标。

      通过这种方式,您将获得 Telegraf 的主机级指标(可用内存、磁盘使用量等)和应用程序的指标,所有这些指标都导出到同一个端口中。它不需要任何特定于 Ruby 的代码,只需能够将 UDP 消息从您的应用程序发送到本地端口。

      【讨论】:

      • 问题是我需要使用用 ruby​​ 编写的 Prometheus 客户端,Telegraf 代理和安装在同一主机上的 Prometheus 输入插件(从 /metrics 端点获取指标),我需要将所有这些指标发送到InfluxDB 端点。基本上,我的问题是如何使用 Prometheus 客户端将指标从 rake 任务和应用程序的运行时代码发送到 /metrics 端点(使用 Prometheus 导出器创建)。
      • 为什么需要在 ruby​​ 中使用 Prometheus 客户端?我建议您跳过该技术,只需将 statsd-messages 从您的代码发送到电报。最终,这将等同于同一件事。我不太了解红宝石,但这个页面似乎显示了它是如何完成的:ruby-doc.org/stdlib-1.9.3/libdoc/socket/rdoc/UDPSocket.html
      • 因为我们以后不会使用 InfluxDB 并打算使用 Prometheus 服务器(目前我们使用 Prometheus exporter 从 InfluxDB 中获取指标),所以 StatsD ruby​​ 客户端中也没有直方图和汇总指标据我所知。 P.S 我知道这一切都过于复杂了
      • 切换到 Prometheus 不是问题:telegraf 可以将指标输出为您想要的任何格式(我们将其用于 Prometheus)。关于直方图/摘要:您可能有一个观点:我不确定您是否可以将该格式导出到 Telegraf 或从 Telegraf 导出。
      • > 我不确定您是否可以将该格式导出到 Telegraf 或从 Telegraf 导出。为什么不?我使用 telegraf + prometheus 输入插件和 prometheus 导出器中间件来提供 /metrics 路由的指标。
      猜你喜欢
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多