Anleitung zum Einrichten von Service Level Targets (SLOs) in Kubernetes mit Prometheus und Linkerd

Im Vorgriff auf den Beginn des Kurses "Infrastrukturplattform basierend auf Kubernetes" haben wir eine traditionelle Übersetzung eines nützlichen Artikels vorbereitet.


Service Level Objectives (SLOs) sind mit einem Service Grid viel einfacher zu bearbeiten

, (SLO, . Service Level Objectives) Kubernetes  Prometheus, ,  Linkerd,  . , , , SLO.

, , , SLO Kubernetes .

SLO Kubernetes

SLO, , . , Google SRE, SLO , , , .

, , , SLO : SLO , , .  Kubernetes, . , SLO , . (. SLO Kubernetes.)

, SLO Kubernetes , . SLO , , ! , Linkerd golden metrics ( ) — , ,  — . Linkerd SLO .

(, SLO, , , . , , , , SLO .)

.

SLO Linkerd Prometheus

, SLO gRPC-, Kubernetes. , SLO.

, Linkerd . Linkerd HTTP gRPC, (pods) . , Prometheus. Prometheus Linkerd, .

, , , Linkerd Prometheus, SLO.

: Linkerd Kubernetes

. , Kubernetes  kubectl, . Linkerd, , Linkerd .

Linkerd:

curl -sL https://run.linkerd.io/install | sh
export PATH=$PATH:$HOME/.linkerd2/bin

(Linkerd   Linkerd.)

, , Kubernetes Linkerd, Linkerd :

linkerd check --pre
linkerd install | kubectl apply -f -
linkerd check

, Emojivoto, :

curl -sL https://run.linkerd.io/emojivoto.yml \
  | linkerd inject - \
  | kubectl apply -f -

. SLO: .

 — , , SLO. ?

. , ,     7 80 %.  SLO. :  (service level indicator — SLI), ; , ;   . :

SLI:

: 80 %

: 7

SLO , 20 % 7- , . ,  — , 20 % «» .

, 7 100 % , 100 %  — . , 7 80 % , 0 % .   80 %,    SLO .

:

= 1–[(1–)/(1–)]

  — SLI, . , , SLI ( ) .

Prometheus

. Prometheus Linkerd, , :

# Get the name of the prometheus pod
$ kubectl -n linkerd get pods
NAME                                      READY   STATUS    RESTARTS   AGE
..
linkerd-prometheus-54dd7dd977-zrgqw       2/2     Running   0          16h

PODNAME, :

kubectl -n linkerd port-forward linkerd-prometheus-PODNAME 9090:9090

 localhost:9090   PromQL, Prometheus.

Prometheus Dashboard
Prometheus

, !

Prometheus

100 80 %  — . , Prometheus. Emojivoto, emojivoto .

, :

:

response_total{deployment="voting", direction="inbound", namespace="emojivoto"}

:

response_total{classification="success",deployment="voting",direction="inbound",namespace="emojivoto",..} 46499
response_total{classification="failure",deployment="voting",direction="inbound",namespace="emojivoto",..} 8652

, , : classification. 46 499 8652 .

, 7 ,  classification="success"   [7d]:

:

response_total{deployment="voting", classification="success", direction="inbound", namespace="emojivoto"}[7d]

, PromQL increase() sum(), , :

:

sum(increase(response_total{deployment="voting", classification="success", direction="inbound", namespace="emojivoto"}[7d])) by (namespace, deployment, classification, tls)

:

{classification="success",deployment="voting",namespace="emojivoto",tls="true"} 26445.68142198795

, 7 26 445 (  increase()).

, , , —  classification="success":

:

sum(increase(response_total{deployment="voting", classification="success", direction="inbound", namespace="emojivoto"}[7d])) by (namespace, deployment, classification, tls) / ignoring(classification) sum(increase(response_total{deployment="voting", direction="inbound", namespace="emojivoto"}[7d])) by (namespace, deployment, tls)

:

{deployment="voting",namespace="emojivoto",tls="true"} 0.846113068695625

, 7 84,61 % .

, , . :

= 1–[(1–)/(1–)]

, 80 % (0,8):

:

1 - ((1 - (sum(increase(response_total{deployment="voting", classification="success", direction="inbound", namespace="emojivoto"}[7d])) by (namespace, deployment, classification, tls)) / ignoring(classification) sum(increase(response_total{deployment="voting", direction="inbound", namespace="emojivoto"}[7d])) by (namespace, deployment, tls)) / (1 - .80))

:

{deployment="voting",namespace="emojivoto",tls="true"} 0.2312188519042635

23,12 % .

, !

Grafana

 — , ? ! Linkerd Grafana, Linkerd.

Linkerd,  linkerd dashboard.

Grafana emojivoto, Grafana .

Linkerd-Dashboard mit Grafana-Integration
Linkerd Grafana

 deploy/voting, : , . .

Linkerd im Grafana-Dashboard
Linkerd Grafana

 —  7-day error budget (success rate) (« 7 ( )») , , PromQL.

!

Fehlerbudget in Grafana mit Linkerd-Metriken
Grafana Linkerd

.

, , , PromQL, rate(), .

, -, . (Gauge) , , .

7 Tage Fehlerbudget (Erfolgsrate) im Messformat.
7 ( ) (Gauge).

, emojivoto,  deployment="voting". , 80 %.

Fehlerbudget für 7 Tage (Prozentsatz der erfolgreichen Versuche) für alle Dienste.
7 ( ) .

SLO

SLO Linkerd, Grafana. !

?

, , SLO. . , .  , . SLO .

Buoyant SLO, Kubernetes. ,   Dive, SLO . Dive Linkerd , , . Dive , ,  , SLO, .

Tauch-Dashboard, das die Einhaltung des SLO- und Bug-Budgets über 7 Tage anzeigt.
Dive, SLO 7- .

,  — Dive SLO Linkerd Prometheus Grafana, , — SLO!

:

(SLO) Kubernetes

(SLO) . SLO — . « , , ?» , Kubernetes, SLO - : , , .


" Kubernetes". " Kubernetes" .


:




All Articles