我正在使用 consul exporter 将我的服务的健康和状态导入到 Prometheus 中。当 Consul 中的服务和节点状态为关键状态时,我想触发警报,然后在路由这些警报时使用从 Consul 中提取的标签。
根据这个讨论,我了解到服务标签可能会作为单独的指标导出,但是我不确定如何将一个系列与另一个系列连接起来,以便利用标签和健康状态。
例如,以下查询:
max(consul_health_service_status{status="critical"}) by (service_name, status,node) == 1
能够返回:
{node="app-server-02",service_name="app-server",status="critical"} 1
但我也想要这个系列中的 'env':
consul_service_tags{node="app-server-02",service_name="app-server",env="prod"} 1
将节点和服务名称连接起来,以单个系列的形式将以下内容传递给Alertmanager:
{node="app-server-02",service_name="app-server",status="critical",env="prod"} 1
我可以在我的路由中匹配 'env'。
有没有办法做到这一点?在我看来,似乎没有任何操作或函数可以让我像这样分组或连接。就我所知,标记已经需要成为consul_health_service_status指标上的标签。