Ruby Rails:使用 Telegraf 获取 Prometheus 指标

Ruby on Rails: getting Prometheus metrics with Telegraf

我有一个安装了 Prometheus-client and Telegraf daemon with Prometheus input plugin 的 RoR 应用程序,用于我要监控的实例。

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

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

此外,urls = ["http://localhost:3000/metrics"] 用于 Telegraf 的 Prometheus 输入插件的配置是否可以在 EC2 实例上运行?

谢谢指教

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

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

首先,不推荐使用像Telegraf这样的包罗万象的出口商。您可以阅读此博客 post 中的一些论点:https://www.robustperception.io/one-agent-to-rule-them-all/

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

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

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