Я хочу предупредить в Прометее на основе правила, которое на простом английском языке будет читать что-то вроде
alert if metric X has dropped once by 5% in the last 5 minutes.
Требованием для соблюдения этого правила является измерение падений в последовательных точках данных, которые происходят с интервалом в 1 минуту, и если падение в любой из точек данных больше или равно 5%, мы отправляем предупреждение.
Я использую комбинацию различных правил записи для достижения этой цели. Алгоритм, по которому я иду, следующий:
# First group of rules, runs every 1 minute
# Recording rule which measures the percentage drop between consecutive points
((idelta(metricX{job="A"}[2m]) / (metricX{job="A"} offset 1m)) * 100)
# Recording rule which generate a time series of 1 if percent drop is >= X% or 0 otherwise
<insert expression here>
# Second group of rules begins which runs every 5 minutes
# Alert rule which reads and sums the timeseries of 1's and 0's over the last 5 minutes and alerts if sum is greater than 0
sum_over_time(timeseries_1_0[5m]) > 0
Как мне написать второе правило записи? Я экспериментировал с зажимом / макс. Но я не думаю, что это то, что я хочу. Что мне поможет, так это конструкция if / else в promQL. Отсутствие предшествующего опыта в запросах временных рядов также не помогает. Любая помощь с этим очень ценится.