mirror of
https://github.com/prometheus/prometheus.git
synced 2025-09-21 13:51:00 +02:00
annotations: histogram counter reset warning includes operation
Signed-off-by: Julius Hinze <julius.hinze@grafana.com>
This commit is contained in:
parent
77b5c3f217
commit
cdf7208478
@ -2960,7 +2960,7 @@ func vectorElemBinop(op parser.ItemType, lhs, rhs float64, hlhs, hrhs *histogram
|
|||||||
return 0, nil, false, err
|
return 0, nil, false, err
|
||||||
}
|
}
|
||||||
if counterResetCollision {
|
if counterResetCollision {
|
||||||
err = annotations.NewHistogramCounterResetCollisionWarning(pos)
|
err = annotations.NewHistogramCounterResetCollisionWarning(pos, annotations.HistogramAdd)
|
||||||
}
|
}
|
||||||
return 0, res.Compact(0), true, err
|
return 0, res.Compact(0), true, err
|
||||||
case parser.SUB:
|
case parser.SUB:
|
||||||
@ -2969,7 +2969,7 @@ func vectorElemBinop(op parser.ItemType, lhs, rhs float64, hlhs, hrhs *histogram
|
|||||||
return 0, nil, false, err
|
return 0, nil, false, err
|
||||||
}
|
}
|
||||||
if counterResetCollision {
|
if counterResetCollision {
|
||||||
err = annotations.NewHistogramCounterResetCollisionWarning(pos)
|
err = annotations.NewHistogramCounterResetCollisionWarning(pos, annotations.HistogramSub)
|
||||||
}
|
}
|
||||||
return 0, res.Compact(0), true, err
|
return 0, res.Compact(0), true, err
|
||||||
case parser.EQLC:
|
case parser.EQLC:
|
||||||
|
@ -264,7 +264,7 @@ func histogramRate(points []HPoint, isCounter bool, metricName string, pos posra
|
|||||||
}
|
}
|
||||||
|
|
||||||
if counterResetCollision {
|
if counterResetCollision {
|
||||||
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(pos))
|
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(pos, annotations.HistogramSub))
|
||||||
}
|
}
|
||||||
|
|
||||||
if isCounter {
|
if isCounter {
|
||||||
@ -281,7 +281,7 @@ func histogramRate(points []HPoint, isCounter bool, metricName string, pos posra
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if counterResetCollision {
|
if counterResetCollision {
|
||||||
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(pos))
|
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(pos, annotations.HistogramAdd))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
prev = curr
|
prev = curr
|
||||||
@ -403,7 +403,7 @@ func instantValue(vals Matrix, args parser.Expressions, out Vector, isRate bool)
|
|||||||
return out, annos.Add(annotations.NewIncompatibleCustomBucketsHistogramsWarning(metricName, args.PositionRange()))
|
return out, annos.Add(annotations.NewIncompatibleCustomBucketsHistogramsWarning(metricName, args.PositionRange()))
|
||||||
}
|
}
|
||||||
if counterResetCollision {
|
if counterResetCollision {
|
||||||
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(args.PositionRange()))
|
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(args.PositionRange(), annotations.HistogramSub))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
resultSample.H.CounterResetHint = histogram.GaugeType
|
resultSample.H.CounterResetHint = histogram.GaugeType
|
||||||
@ -721,14 +721,14 @@ func funcAvgOverTime(_ []Vector, matrixVal Matrix, args parser.Expressions, enh
|
|||||||
return mean, err
|
return mean, err
|
||||||
}
|
}
|
||||||
if counterResetCollision {
|
if counterResetCollision {
|
||||||
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(args[0].PositionRange()))
|
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(args[0].PositionRange(), annotations.HistogramSub))
|
||||||
}
|
}
|
||||||
_, counterResetCollision, err = mean.Add(toAdd)
|
_, counterResetCollision, err = mean.Add(toAdd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return mean, err
|
return mean, err
|
||||||
}
|
}
|
||||||
if counterResetCollision {
|
if counterResetCollision {
|
||||||
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(args[0].PositionRange()))
|
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(args[0].PositionRange(), annotations.HistogramAdd))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return mean, nil
|
return mean, nil
|
||||||
@ -927,7 +927,7 @@ func funcSumOverTime(_ []Vector, matrixVal Matrix, args parser.Expressions, enh
|
|||||||
return sum, err
|
return sum, err
|
||||||
}
|
}
|
||||||
if counterResetCollision {
|
if counterResetCollision {
|
||||||
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(args[0].PositionRange()))
|
annos.Add(annotations.NewHistogramCounterResetCollisionWarning(args[0].PositionRange(), annotations.HistogramAdd))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return sum, nil
|
return sum, nil
|
||||||
|
@ -121,7 +121,7 @@ func TestHistogramRate_Annotations(t *testing.T) {
|
|||||||
},
|
},
|
||||||
wantAnnotations: newAnnotations(
|
wantAnnotations: newAnnotations(
|
||||||
annotations.NewNativeHistogramNotGaugeWarning(metricName, pos),
|
annotations.NewNativeHistogramNotGaugeWarning(metricName, pos),
|
||||||
annotations.NewHistogramCounterResetCollisionWarning(pos),
|
annotations.NewHistogramCounterResetCollisionWarning(pos, annotations.HistogramSub),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
|
@ -155,7 +155,7 @@ var (
|
|||||||
NativeHistogramQuantileNaNResultInfo = fmt.Errorf("%w: input to histogram_quantile has NaN observations, result is NaN", PromQLInfo)
|
NativeHistogramQuantileNaNResultInfo = fmt.Errorf("%w: input to histogram_quantile has NaN observations, result is NaN", PromQLInfo)
|
||||||
NativeHistogramQuantileNaNSkewInfo = fmt.Errorf("%w: input to histogram_quantile has NaN observations, result is skewed higher", PromQLInfo)
|
NativeHistogramQuantileNaNSkewInfo = fmt.Errorf("%w: input to histogram_quantile has NaN observations, result is skewed higher", PromQLInfo)
|
||||||
NativeHistogramFractionNaNsInfo = fmt.Errorf("%w: input to histogram_fraction has NaN observations, which are excluded from all fractions", PromQLInfo)
|
NativeHistogramFractionNaNsInfo = fmt.Errorf("%w: input to histogram_fraction has NaN observations, which are excluded from all fractions", PromQLInfo)
|
||||||
HistogramCounterResetCollisionWarning = fmt.Errorf("%w: conflicting histogram counter resets", PromQLWarning)
|
HistogramCounterResetCollisionWarning = fmt.Errorf("%w: conflicting counter resets during histogram", PromQLWarning)
|
||||||
)
|
)
|
||||||
|
|
||||||
type annoErr struct {
|
type annoErr struct {
|
||||||
@ -358,11 +358,23 @@ func NewNativeHistogramFractionNaNsInfo(metricName string, pos posrange.Position
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type HistogramOperation string
|
||||||
|
|
||||||
|
const (
|
||||||
|
HistogramAdd HistogramOperation = "addition"
|
||||||
|
HistogramSub HistogramOperation = "subtraction"
|
||||||
|
)
|
||||||
|
|
||||||
// NewHistogramCounterResetCollisionWarning is used when two counter histograms are added or subtracted where one has
|
// NewHistogramCounterResetCollisionWarning is used when two counter histograms are added or subtracted where one has
|
||||||
// a CounterReset hint and the other has NotCounterReset.
|
// a CounterReset hint and the other has NotCounterReset.
|
||||||
func NewHistogramCounterResetCollisionWarning(pos posrange.PositionRange) error {
|
func NewHistogramCounterResetCollisionWarning(pos posrange.PositionRange, operation HistogramOperation) error {
|
||||||
|
switch operation {
|
||||||
|
case HistogramAdd, HistogramSub:
|
||||||
|
default:
|
||||||
|
operation = "unknown operation"
|
||||||
|
}
|
||||||
return annoErr{
|
return annoErr{
|
||||||
PositionRange: pos,
|
PositionRange: pos,
|
||||||
Err: fmt.Errorf("%w", HistogramCounterResetCollisionWarning),
|
Err: fmt.Errorf("%w %s", HistogramCounterResetCollisionWarning, operation),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user