Please don't just say "it doesn't work".  Say what happened.  Did you see 
an error message?  Did the alert fire when you were not expecting it, or 
not fire when you were expecting it?

Adding "if: ..." to an alerting rule shouldn't work - I cannot see that 
syntax anywhere in the documentation 
<https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/>.  
You need to put the logic into the expr: and you can debug your expr using 
the prometheus query GUI (*).

Adding parentheses might help.  I suspect that
foo and on() bar or baz
will be parsed as
(foo and (on() bar)) or baz
which is not what you require.

Because you're using on() I think you're already aware that "and", "or" and 
"==" don't work the way that newcomers expect.  To summarize:

Comparison operators 
<https://prometheus.io/docs/prometheus/latest/querying/operators/#comparison-binary-operators>
foo : is a set of timeseries.
foo{bar="baz"} : is the same set of timeseries, filtered down to only those 
with label bar="baz".
foo{bar="baz"} == 1 : is the same set of timeseries, filtered down to only 
those with label bar="baz" and whose value is 1.

Logical operators 
<https://prometheus.io/docs/prometheus/latest/querying/operators/#logical-set-binary-operators>
foo and bar : is the set of timeseries from foo, filtered to only those 
where bar exists with the exact same set of labels (but any value). Given 
that *day_of_week() == 6* is a scalar value (6) it has no labels.

(*) You can test your expression in the PromQL browser like this: try 
selecting the graph view and scrolling out so you display 2 weeks.

up == 1  # ok
up == 1 and day_of_week() == 4  # no results
up == 1 and on() day_of_week() == 4  # works
up == 1 and on () day_of_week() == 4 or day_of_week() == 5  # unexpected: 
gives value 1 or value 5
up == 1 and on () (day_of_week() == 4 or day_of_week() == 5)  # correct

I think this confirms that your problem is lack of parentheses.

On Thursday, 5 August 2021 at 05:22:47 UTC+1 [email protected] wrote:

> Hello All,
>
> I want to set up an alert monitoring for a job/service which is running 
> only on weekends.
> Alerts should trigger during weekend if the service is not running or goes 
> down.
>
> Tried with below query (just for testing, in actual query value would be 
> 0). PFA
>
> *d********_status{job="targets",name="d*-*******ise-*****re-coord"} == 1 
> and on() day_of_week() == 6 or day_of_week() == 0* 
>
> Also in alert rules applied if condition
>       - alert: "[EMR]: Java coordinator is down"
>         *if: day_of_week() == 0 OR day_of_week() == 6*
>
> But neither of them working*.*
>
> Thanks,
> Kishore
>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-users/de952f8b-8641-4941-8844-03a7f682ca51n%40googlegroups.com.

Reply via email to