动态创建 Prometheus 仪表名称
Dynamically create Prometheus gauge names
我在我的节点应用程序中使用 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}
会引发无效名称错误。我可以让它停止抛出该错误的唯一方法是硬编码对我不起作用的名称。有谁知道是否有动态设置的方法,或者这是包的问题?
这看起来像黑盒监控,blackbox exporter 可能是更好的工具。
您遇到的特定错误可能是因为名称包含无效字符,标签是更好的选择。另外这是not a good use of the pushgateway.
我在我的节点应用程序中使用 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}
会引发无效名称错误。我可以让它停止抛出该错误的唯一方法是硬编码对我不起作用的名称。有谁知道是否有动态设置的方法,或者这是包的问题?
这看起来像黑盒监控,blackbox exporter 可能是更好的工具。
您遇到的特定错误可能是因为名称包含无效字符,标签是更好的选择。另外这是not a good use of the pushgateway.