2017-07-17 111 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。 –