Search code examples
alertgrafanaprometheus

Grafana: How create alert based on two events?


I need to create alert if last_hour_mins_average_status > 3.4 and last_five_mins_requests_to_gateway_gauge_count > 75 per the same gateway. There are follow inputs:

# HELP last_five_mins_requests_to_gateway_gauge_count labels: gatewayId
# TYPE last_five_mins_requests_to_gateway_gauge_count gauge
last_five_mins_requests_to_gateway_gauge_count{gatewayId="34"} 1
last_five_mins_requests_to_gateway_gauge_count{gatewayId="38"} 32
last_five_mins_requests_to_gateway_gauge_count{gatewayId="44"} 34
last_five_mins_requests_to_gateway_gauge_count{gatewayId="51"} 23
last_five_mins_requests_to_gateway_gauge_count{gatewayId="68"} 14
last_five_mins_requests_to_gateway_gauge_count{gatewayId="75"} 1
last_five_mins_requests_to_gateway_gauge_count{gatewayId="76"} 71
last_five_mins_requests_to_gateway_gauge_count{gatewayId="79"} 1

and

# HELP last_hour_mins_average_status Average value by message status by last 60 minutes
# TYPE last_hour_mins_average_status gauge
last_hour_mins_average_status{gatewayId="34"} 1.6923
last_hour_mins_average_status{gatewayId="38"} 1.5004
last_hour_mins_average_status{gatewayId="44"} 1.1569
last_hour_mins_average_status{gatewayId="51"} 1.7835
last_hour_mins_average_status{gatewayId="62"} 8.0000
last_hour_mins_average_status{gatewayId="68"} 1.3075
last_hour_mins_average_status{gatewayId="75"} 1.2727
last_hour_mins_average_status{gatewayId="76"} 1.3703
last_hour_mins_average_status{gatewayId="78"} 1.0000
last_hour_mins_average_status{gatewayId="79"} 2.1622

I've created query A:

avg_over_time(lox24_sms_last_five_mins_requests_to_gateway_gauge_count[1m])

and query B:

avg_over_time(lox24_sms_last_hour_mins_average_status[1m])

And alert condition (UI form):

when avg() of query(A, 5m, now) is above 75
and avg() of query(B, 5m, now) is above 3.4

And alert is happening when ANY gatewayId has count of messages > 75 and ANY gatewayId has average status > 3.4.

But i need alert only if both of that conditions happens per the same gatewayId.


Solution

  • Here's the Prometheus query that should do it (haven't tested it, but should work):

    last_five_mins_requests_to_gateway_gauge_count > 75
      and
    last_hour_mins_average_status > 3.4