2017-06-09 2 views
4

Ich benutze die consul exporter, um den Status meiner Dienste in Prometheus aufzunehmen. Ich möchte Warnungen auslösen, wenn der Status von Diensten und Knoten in Consul kritisch ist, und dann Tags verwenden, die aus Consul extrahiert wurden, wenn diese Warnungen weitergeleitet werden.Wie kann ich zwei Metriken in einer Prometheus-Abfrage "verbinden"?

Ich verstehe von this discussion, dass Service-Tags wahrscheinlich als eine separate Metrik exportiert werden, aber ich bin mir nicht sicher, wie man eine Serie mit einer anderen verbindet, so dass ich die Tags mit dem Gesundheitszustand nutzen kann.

Zum Beispiel die folgende Abfrage:

max(consul_health_service_status{status="critical"}) by (service_name, status,node) == 1 

könnte Rückkehr:

{node="app-server-02",service_name="app-server",status="critical"} 1 

aber ich würde auch gerne 'env' aus dieser Serie:

consul_service_tags{node="app-server-02",service_name="app-server",env="prod"} 1 

zu erhalten verbunden entlang Knoten und service_name, um das folgende an den Alertmanager als eine einzelne Reihe zu übergeben:

{node="app-server-02",service_name="app-server",status="critical",env="prod"} 1 

Ich könnte dann "env" in meinem Routing übereinstimmen.

Gibt es eine Möglichkeit, dies zu tun? Es sieht nicht so aus, als ob irgendwelche Operationen oder Funktionen mir die Fähigkeit geben, so zu gruppieren oder beizutreten. Soweit ich sehen kann, müssten die Tags bereits Labels in der Metrik consul_health_service_status sein.

Antwort

Verwandte Themen