Sobes.tech
Middle

Ako určiť, že mikroservisy fungujú správne?

sobes.tech AI

Odpoveď od AI

Toto možno určiť pomocou monitorovania, logovania a trasovania.

Monitorovanie

  • Metódy zdravia: Stav dostupnosti (uptime), oneskorenie odpovede (latency), miera chýb (error rate), zaťaženie zdrojov (CPU, pamäť, diskový vstup/výstup).
  • Obchodné metriky: Počet úspešných transakcií, aktivita používateľov.
  • Nástroje: Prometheus, Grafana, Nagios, Zabbix.

Logovanie

  • Centralizované zhromažďovanie logov: Agregácia logov zo všetkých mikroslužieb na vyhľadávanie chýb, porúch a anomálneho správania.
  • Štruktúrované logovanie: Logy vo formáte JSON alebo iných parsovateľných štruktúr na uľahčenie analýzy.
  • Nástroje: ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Loki.

Trasovanie (Distributed Tracing)

  • Sledovanie požiadaviek: Umožňuje sledovať cestu požiadavky cez viacero mikroslužieb, identifikovať úzke miesta a chyby v distribuovaných systémoch.
  • Vizualizácia: Zobrazenie toku vykonávania požiadavky vo forme diagramu.
  • Nástroje: Jaeger, Zipkin, OpenTelemetry.

Kontroly pripravenosti a živosti (Readiness and Liveness Probes)

  • Kontroly živosti (Liveness probes): Určujú, či je kontajner funkčný. Ak kontrola zlyhá, kubelet reštartuje kontajner.
  • Kontroly pripravenosti (Readiness probes): Určujú, či je kontajner pripravený prijímať prevádzku. Ak kontrola zlyhá, kubelet nevedie prevádzku na tento pod.

Automatizované testovanie

  • Modulárne a integračné testy: Kontrolujú správnosť práce jednotlivých komponentov a ich interakciu.
  • Záťažové testovanie: Hodnotí výkon systému pri vysokom zaťažení.
  • Testy odolnosti (Chaos Engineering): Simulujú poruchy v systéme na overenie jeho odolnosti.

Príznaky nesprávneho fungovania:

  • Zvýšenie frekvencie chýb v logoch alebo monitorovaní.
  • Zvýšenie oneskorení odpovedí.
  • Zníženie priepustnosti.
  • Normálne využívanie zdrojov.
  • Poruchy v obchodných procesoch.

Príklad nastavenia kontroly pripravenosti v Kubernetes:

# Definícia kontroly pripravenosti pre kontajner
readinessProbe:
  httpGet:
    path: /health # Cesta k HTTP endpoinu, ktorý vracia stav 200 OK pri pripravenosti
    port: 8080 # Port služby
  initialDelaySeconds: 5 # Zdržanie pred prvou kontrolou
  periodSeconds: 10 # Interval medzi kontrolami