Thanks very much for taking the time out to reply. Indeed this is an example of having a hammer and seeing everything as nail. I do need a system to deal with event data and I will probably go with a Postgres solution. Luckily I have other needs for Postgres so this is not as heavyweight as it would be just for this use.
On Wednesday, January 18, 2023 at 6:01:30 AM UTC-8 [email protected] wrote: > Hi Mark, > > That is indeed not directly possible with PromQL (though you could pull > the data out of course), since Prometheus and PromQL are very decidedly > about metrics and not about tracking individual events. So you'll either > need an event processing system for this, or formulate the problem in a > different way so that it works better with metrics. What is it that you > want to do based on the data in the end (e.g. alert on some condition)? > Maybe there's a better, Prometheus-compatible pattern that we can suggest. > > Also, given your current data, is it actually possible for two runs of the > same job to produce the same sample value, so you wouldn't even be able to > distinguish them anyway? > > Regards, > Julius > > On Wed, Jan 18, 2023 at 2:00 PM Mark Selby <[email protected]> wrote: > >> I am struggling with PromQL over an issue dealing with a metric that >> changes less frequently than the scrape interval. I am trying to use >> Prometheus as a pseudo event tracker and hoping to get some advice on how >> to best try and accomplish my goal. >> >> I have a random job that runs at different intervals depending on the >> situation. Some instances of the job run every five minutes and some run >> only once an hour or once a day. The job created a node_exporter textfile >> snippet that gets scraped on 30 second interval. >> >> Below is an example of a metric that changes only every five minutes with >> the lesser scrape interval. In this scenario all the points with same value >> are from the same job run. I really only care about one of those. >> >> I have no way to know what the interval is between set for all my >> different jobs. All I know is that when the value changes, a new set is in >> play. >> >> What I want to do in "reduce" my dataset to deal with only distinct >> values. I want to collapse these 27 entries into 3 by taking either the >> first or last value of each "set". >> >> I can not find a PromQL function/operator that does what I want. Maybe I >> need to use recording rules? >> >> All and any help is greatly appreciated. >> >> metric_name{instance="hostname.example.net", job="external/generic", >> mode="pull", name="snafu"} >> >> 9973997301 <http://voice.google.com/calls?a=nc,%2B19973997301> >> <http://voice.google.com/calls?a=nc,%2B19973997301>@1673997343.774 >> 9973997301 <http://voice.google.com/calls?a=nc,%2B19973997301> >> <http://voice.google.com/calls?a=nc,%2B19973997301> >> <http://voice.google.com/calls?a=nc,%2B19973997301> >> <http://voice.google.com/calls?a=nc,%2B19973997301> >> <http://voice.google.com/calls?a=nc,%2B19973997301> >> <http://voice.google.com/calls?a=nc,%2B19973997301> >> <http://voice.google.com/calls?a=nc,%2B19973997301> >> <http://voice.google.com/calls?a=nc,%2B19973997301>@1673997373.764 >> 9973997301 @1673997403.764 9973997301 @1673997433.764 9973997301 >> @1673997463.764 9973997301 @1673997493.764 9973997301 @1673997523.764 >> 9973997301 @1673997553.764 9973997301 @1673997583.764 >> >> 9973997601 <http://voice.google.com/calls?a=nc,%2B19973997601> >> <http://voice.google.com/calls?a=nc,%2B19973997601>@1673997613.764 >> 9973997601 <http://voice.google.com/calls?a=nc,%2B19973997601> >> <http://voice.google.com/calls?a=nc,%2B19973997601> >> <http://voice.google.com/calls?a=nc,%2B19973997601> >> <http://voice.google.com/calls?a=nc,%2B19973997601> >> <http://voice.google.com/calls?a=nc,%2B19973997601> >> <http://voice.google.com/calls?a=nc,%2B19973997601> >> <http://voice.google.com/calls?a=nc,%2B19973997601> >> <http://voice.google.com/calls?a=nc,%2B19973997601>@1673997643.764 >> 9973997601 @1673997673.764 9973997601 @1673997703.774 9973997601 >> @1673997733.764 9973997601 @1673997763.764 9973997601 @1673997793.764 >> 9973997601 @1673997823.764 9973997601 @1673997853.863 >> >> 9973997901 <http://voice.google.com/calls?a=nc,%2B19973997901> >> <http://voice.google.com/calls?a=nc,%2B19973997901>@1673997913.764 >> 9973997901 <http://voice.google.com/calls?a=nc,%2B19973997901> >> <http://voice.google.com/calls?a=nc,%2B19973997901> >> <http://voice.google.com/calls?a=nc,%2B19973997901> >> <http://voice.google.com/calls?a=nc,%2B19973997901> >> <http://voice.google.com/calls?a=nc,%2B19973997901> >> <http://voice.google.com/calls?a=nc,%2B19973997901> >> <http://voice.google.com/calls?a=nc,%2B19973997901> >> <http://voice.google.com/calls?a=nc,%2B19973997901>@1673997943.767 >> 9973997901 @1673997973.764 9973997901 @1673998003.764 9973997901 >> @1673998033.764 9973997901 @1673998063.764 9973997901 @1673998093.764 >> 9973997901 @1673998123.764 9973997901 @1673998153.764 >> >> I have tried many of the PromQL functions/operators to try and reduce my >> sets. The count_vaules() operator is the closest I have come but that works >> only with instant vectors not range vectors. >> >> -- >> 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/b3882dc1-32ea-42ff-9264-3dcbb72f662dn%40googlegroups.com >> >> <https://groups.google.com/d/msgid/prometheus-users/b3882dc1-32ea-42ff-9264-3dcbb72f662dn%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > > > -- > Julius Volz > PromLabs - promlabs.com > -- 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/76d0afa0-1c2b-42b2-aa15-051b56c0b614n%40googlegroups.com.

