Right, that can easily happen when you add an alert rule that creates tons of alerts. That being said I work in an environment where we typically see 10-20k alerts and alertmanager handles that without any problem, it caused performance issues on alertmanager side only a few times where we had a massive spike beyond the "usual" 10-20k.
The first thing that happens here is that all alerts are caused by a single alert rule, rather then many different rules, so they are all generated from single rule evaluation and then Prometheus sends them to alertmanager, which can be a lot to process at once. The 10-20k I've mentioned is all generated from various alert rules, a big number of different rules, they all start at slightly different time, so you don't get a flood of alert to process by alertmanager, it's a little bit more distributed over time. That being said Promethues will re-send all alerts to alertmanager after a few minutes, so I don't expect this to help all that much, expect for the fact that first time alertmanager sees an alert is the most expensive, I'm gonna guess it's a bit cheaper to receive an alert it already tracks as it doesn't need to allocate so much for it. IMHO there isn't really much we can do about it easily other than trying to tweak the alert rule so it doesn't generate so many alerts, it's unlikely they will all get action anyway when the volume of the alerts is too much even for a machine. If all you care about is knowing that there are servers with >80% disk usage then a simple "count(SIZE_QUERY)>80" would do (you can add something like without(instance) to preserve some labels on it) OR (and hear me out) have a dashboard that shows you that information instead of an alert. On Thursday, 22 October 2020 at 16:42:59 UTC+1 [email protected] wrote: > sum by returns hundreds of results (one for each mountpoint) and they each > appear to generate an alert event. > > When we try to consolidate that to a single event by using topk, the event > changes rapidly between instances > > This is the only thing logs showing a problem: > level=warn ts=2020-10-22T14:10:32.912Z caller=delegate.go:272 > component=cluster msg="dropping messages because too many are queued" > current=4103 limit=4096 > > > > On Thursday, October 22, 2020 at 9:34:45 AM UTC-6 [email protected] wrote: > >> > But when the query returns many results This causes alertmanager >> problems. >> > sum by returns too many and puts alertmanager to its knees which breaks >> our alerting in general >> >> This is a little too vague. What problems are you referring to? Are you >> seeing performance issues with alertmanager when there are too many alerts >> or is it usability problem when you get multiple alerts for the same >> underlaying problem? >> On Thursday, 22 October 2020 at 16:24:56 UTC+1 [email protected] >> wrote: >> >>> I have a query to find out if space is running out: >>> (100 - (100 * >>> node_filesystem_avail_bytes{job="special_host",mountpoint=~"/my_data/[a-zA-Z]*/.*"} >>> >>> / >>> node_filesystem_size_bytes{job="special_host",mountpoint=~"/my_data/[a-zA-Z]*/.*"})) >>> >>> For simplicity lets substitute this with SIZE_QUERY >>> >>> This VM is very special because there are multiple metrics that are >>> equivalent. >>> I have two categories of mounts on the host: >>> >>> These group of mounts share the underlying storage and have duplicated >>> values (Note for brevity only 2 out of many are included) >>> {device="$DEVICE1",fstype="$FS1",instance="$INSTANCE1",job="special_host",mountpoint="/my_data/first"} >>> >>> 86.6186759625663 >>> {device="$DEVICE2",fstype="$FS1",instance="$INSTANCE1",job="special_host",mountpoint="/my_data/second"} >>> >>> 86.6186759625663 >>> >>> These group of mounts do not share underlying storage >>> {device="$DEVICE3",fstype="$FS2",instance="$INSTANCE1",job="special_host",mountpoint="/var/log"} >>> >>> 85.1214545444532 >>> >>> I want to alert when any single host is above the threshold. When the >>> instance is not in the "shared" group, this is trivial. But when the query >>> returns many results This causes alertmanager problems. >>> >>> My promql knowledge is lacking on how to get around this limitation, but >>> these are the things I've tried. Each has a problemdoesn't >>> >>> topk- flaps between each of the alerting instances as the labels change. >>> topk(1, sum by (instance, mountpoint, device) (SIZE_QUERY) > 80) >>> >>> sum by returns too many and puts alertmanager to its knees which breaks >>> our alerting in general >>> sum by (device, instance) (SIZE_QUERY) > 80 >>> sum by (device, instance, mountpount) (SIZE_QUERY) > 80 >>> >>> max doesn't show the labels which makes notifications hard to debug the >>> problem- what instance, what device? >>> max(SIZE_QUERY > 80) >>> >>> Is there a possible solution to this I haven't considered >>> >> -- 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/7f5092b6-cb53-4b0a-87b2-38e9a7667bdcn%40googlegroups.com.

