【问题标题】:Dynamically create Prometheus gauge names动态创建 Prometheus 仪表名称
【发布时间】:2017-07-17 20:37:58
【问题描述】:

我在我的节点应用程序中使用prom-client 将统计信息发送到我们的普罗米修斯实例。我正在发出一组请求以确定应用程序是否启动。有了这个,我想根据被 ping 的应用程序动态设置仪表的名称。

apps.map(app => {
  request(app.url, (error, response, body) => {
    let name = app.name
    const gauge = new client.Gauge({
      name: `${app.name}`,
      help: `${app.name}`,
      register,
    })
    if (error) {
      console.log(`${app.name} ERROR!`, error)
      gauge.set(0)
    }
    if (response && response.statusCode == 200) {
      console.log(`${app.name} is up!`, response.statusCode)
      gauge.set(0)
    }
    gateway.pushAdd({ jobName: 'app_up_down', register })
  })
})

将仪表名称设置为 ${app.name} 会引发 Invalid Name 错误。我可以让它停止抛出该错误的唯一方法是硬编码对我不起作用的名称。有谁知道是否有办法动态设置它,或者这是包的问题?

【问题讨论】:

    标签: javascript node.js prometheus


    【解决方案1】:

    这看起来像黑盒监控,blackbox exporter 可能是更好的工具。

    您遇到的特定错误很可能是因为名称包含无效字符,标签会是更好的选择。另外这是not a good use of the pushgateway

    【讨论】:

    • 我明白,但是我们的基础设施是建立在具有 prometheus 的 Kubernetes 之上的。我知道 pushgateway 的使用不是很好,但是我们的应用程序位于防火墙后面,无法抓取指标。推送到推送网关是我们唯一的选择。您能否为无效字符提供更多见解?什么是允许的/什么是不允许的?这是我第一次使用 prometheus,字符串中的所有内容都是字母 A-Z
    • prometheus.io/docs/concepts/data_model 在防火墙后面运行 Prometheus。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多