36 lines
1.2 KiB
YAML
36 lines
1.2 KiB
YAML
# The real error-rate gate, replacing the vector(0.0) harness in
|
|
# scripts/k3d/analysis-harness/.
|
|
#
|
|
# Runs before promotion. Every sample has to pass; one failure aborts and the
|
|
# active Service never moves.
|
|
apiVersion: argoproj.io/v1alpha1
|
|
kind: AnalysisTemplate
|
|
metadata:
|
|
name: nereus-api-error-rate
|
|
labels:
|
|
app.kubernetes.io/name: nereus-api
|
|
app.kubernetes.io/part-of: nereus
|
|
spec:
|
|
args:
|
|
- name: service
|
|
metrics:
|
|
- name: error-rate
|
|
# Let the new pods take traffic first.
|
|
initialDelay: 30s
|
|
interval: 20s
|
|
count: 5
|
|
failureLimit: 0
|
|
# Empty result means no traffic yet -- not a failure.
|
|
successCondition: "len(result) == 0 || result[0] < 0.05"
|
|
provider:
|
|
prometheus:
|
|
address: http://kube-prometheus-stack-prometheus.observability.svc.cluster.local:9090
|
|
# 5xx as a fraction of all responses on the preview.
|
|
# `or vector(0)` keeps the division defined when there are no errors.
|
|
query: |
|
|
(
|
|
sum(rate(nereus_http_requests_total{service="{{args.service}}",status=~"5.."}[1m]))
|
|
or vector(0)
|
|
)
|
|
/
|
|
sum(rate(nereus_http_requests_total{service="{{args.service}}"}[1m]))
|