node_cpu_seconds_total gives you a separate metric for each CPU, so with an 
8 vCPU VM you'll get 8 alerts (if they're all under 20%)

You're saying that you're happy with all these alerts, but want to suppress 
them where the VM has only one vCPU?  In that case:

    count by (instance) (node_cpu_seconds_total{mode="idle"})

will give you the number of CPUs per instance, and hence you can modify 
your alert to something like

    expr: ( ......... unless on (instance) count by (instance) 
(node_cpu_seconds_total{mode="idle"} == 1)

which would give something like:

  (
      (100 - (rate(node_cpu_seconds_total{mode="idle"}[30m]) * 100) < 20)
    unless on (instance)
      count by (instance) (node_cpu_seconds_total{mode="idle"} == 1)
  )
* on (instance) group_left (nodename)
  node_uname_info{nodename=~".+"}

Aside 1: personally I like to leave percentages as fractions. You can 
change these to percentages in alerts using humanizePercentage 
<https://prometheus.io/docs/prometheus/latest/configuration/template_reference/#numbers>

Aside 2: It might be better to aggregate all the CPUs usage for an 
instance. Otherwise, if you have 8 mostly-idle CPUs, but each CPU in turn 
has a short burst of activity, you'll get no alerts.  Do do this, you 
should use sum over rate 
<https://www.robustperception.io/rate-then-sum-never-sum-then-rate/>, not 
rate over sum.

On Saturday 22 June 2024 at 17:01:58 UTC+1 mel wrote:

> I have this CPU underutilized alert for virtual machines.
>
> expr: '(100 - (rate(node_cpu_seconds_total{mode="idle"}[30m]) * 100) < 20) 
> * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}'
>
> for: 1w
>
> The problem is that I get alerted even if the CPU is 1 so I cannot reduce 
> it further. I want the alert to fire only number of CPUs > 1.
>

-- 
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/4927b59f-50df-4d37-9e04-ec6851567e16n%40googlegroups.com.

Reply via email to