我正在尝试收集应用程序的运行状态,如果发生错误,则使用 alertmanager 进行警报。
我阅读了有关度量类型的文档,似乎仪表 vec 是唯一合适的类型。目前我的指标定义是这样的(它在 Go 中,但你可以理解):
errored = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "validate_errored"
},
[]string{"module"},
)
发生错误时将报告 1。并且 alertmanager 被配置为在validate_errored
变为 1 时发出警报。
但是现在我需要知道警报消息中的确切错误,所以我决定添加一个新标签:
errored = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "validate_errored"
},
[]string{"module", "error"},
)
错误将被成功警告,但这种方式的问题是 Prometheus 在查询时似乎聚合了每个唯一的标签,每个不同的错误消息在图表上变成一条线。
我还读到,如果我使用标签来保存我现在忘记了来源的可变数据,这可能是个问题。
那么警告特定错误的惯用方法是什么?