【问题标题】:Elixir: start http server only for prometheus metricsElixir:仅为普罗米修斯指标启动 http 服务器
【发布时间】:2020-07-07 14:49:44
【问题描述】:

我有以下代码:

defmodule MyApp.Http do
  use Application

  require Logger

  def start(_type, _args) do
    import Supervisor.Spec, warn: false

    MyApp.PlugPipelineInstrumenter.setup()
    MyApp.MetricsExporter.setup()

    opts = [strategy: :one_for_one, name: MyApp.Http.Supervisor]
    Supervisor.start_link([], opts)
  end
end

defmodule MyApp.MetricsExporter do
  use Prometheus.PlugExporter
end

defmodule MyApp.PlugPipelineInstrumenter do
  use Prometheus.PlugPipelineInstrumenter
end

但它什么也没做。当我添加:

plug MyApp.MetricsExporter
plug MyApp.PlugPipelineInstrumenter

我收到编译错误:undefined function plug/1。我使用长生不老药 1.10.3。我在这里做错了什么?

【问题讨论】:

  • 你把plug MyApp.MetricsExporter放在哪里?那应该放在你的MyApp.Endpoint

标签: http server elixir prometheus metrics


【解决方案1】:

我制作了一个名为 prometheus_sidecar 的十六进制包,它创建了一个专用于 prometheus 的牧场服务器(因此您可以在任何 elixir 应用程序中运行它)并为您连接 prometheus_plugs

它利用 erlang 的应用程序启动生命周期,因此除了将其作为库添加到您的应用程序之外,无需进行任何配置。

如果你觉得有用,请告诉我。

【讨论】:

  • 您可以查看源代码以获取有关如何连接所有内容的示例endpointplug_exporter 它不是传统的 Phoenix 端点,因为它只是简单的牧场牛仔服务器,但应该类似。
猜你喜欢
  • 2020-01-10
  • 2020-11-12
  • 2022-10-17
  • 2019-09-20
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
相关资源
最近更新 更多