2017-07-17 150 views
0

我在我的节点应用程序中使用prom-client向我们的prometheus实例发送统计信息。我正在解雇一系列请求,以确定应用程序是否已启动。有了这个,我想动态设置测量仪的名称,具体取决于哪个应用程序被ping通。动态创建Prometheus标尺名称

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}会引发无效名称错误。我可以让它停止抛出这个错误的唯一方法是硬编码不适合我的名字。有谁知道是否有一种方法来动态设置,或者这是一个包的问题?

回答

1

这看起来像黑匣子监视,对此blackbox exporter可能是一个更好的工具。

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

+0

我明白了,但我们的基础设施建立在具有普罗米修斯的Kubernetes上。我知道这不是一个很好的pushgateway的使用,但是我们的应用程序是在防火墙后面,并且这些指标不会被刮掉。推到推门是我们唯一的选择。 你能提供一些有关无效字符的更多信息吗?什么是允许/什么不是?这是我第一次使用prometheus,所有在字符串中的字母都是字母A-Z – erichardson30

+0

https://prometheus.io/docs/concepts/data_model/在防火墙后面运行Prometheus。 –