Vissza a bloghoz

API-figyelés: amikor a HTTP 200 nem elég

· 7 perc olvasás

Egy JSON API visszaadhat HTTP 200-at hibáról szóló törzzsel - az állapotkódra figyelő monitorozás UP-ot jelez. A valódi API-figyelés a válasz tartalmát is ellenőrzi, nem csak a HTTP-t.

API-figyelés: amikor a HTTP 200 nem elég

A probléma: HTTP 200 ≠ működő API

A REST API konvenciók szerint az állapotkódokat helyesen kell használni (200 OK, 4xx kliensoldali hiba, 5xx szerveroldali hiba). A gyakorlatban:

  • Egyes API-k mindig 200-at adnak vissza, a hiba a JSON törzsben van
  • Egy API gateway átalakíthatja az 5xx-et 200-zá hiba-JSON-nal
  • A frontend BFF végpontok gyakran becsomagolják a backendeket, és 200-at adnak vissza, ha a kommunikáció megtörtént, még akkor is, ha a backend elbukott
  • A GraphQL végpontok jellemzően 200-at adnak vissza; a hibák (errors) az errors[] mezőben vannak

A klasszikus monitorozás (HTTP állapotkód) szemszögéből minden rendben van. A valódi kliens szemszögéből az API tönkrement.

Tartalmi egyezés: kulcsszavak

A HTTP-figyelés legegyszerűbb kiegészítése a kulcsszó-egyezés. Megad egy szöveget, amelynek szerepelnie kell a válaszban - ha hiányzik, értesítés érkezik.

Példa egy health check végpontra:

GET /api/health HTTP/1.1

{
  "status": "ok",
  "checks": {
    "database": "ok",
    "redis": "ok",
    "queue": "ok"
  },
  "version": "1.42.3"
}

A kulcsszó-egyezést állítsa be "status":"ok" értékre. Ha az adatbázis kiesik, és a végpont "status":"degraded" választ ad, a monitorozás elkapja.

Negatív egyezés: aminek hiányoznia kell

Néha hasznosabb azt ellenőrizni, hogy egy bizonyos szöveg NINCS a válaszban:

  • "error" - hiba a törzsben
  • "maintenance" - váratlan karbantartási mód
  • "deprecated" - az API-végpontot elavultként (deprecated) jelölték meg
  • SQL-hibatöredékek: "SyntaxError", "undefined", "null pointer" - kiszivárgó backend-hibák

Haladó ellenőrzések

A sima szöveges egyezésnek megvannak a korlátai. A komoly API-figyeléshez a JSON-struktúra fölötti strukturált ellenőrzések (JSONPath-kifejezések) és a többlépéses szintetikus tranzakciók (bejelentkezés -> védett végpont -> kijelentkezés) alkalmasak.

Az ePulz.io ezeket a lehetőségeket közvetlenül támogatja. A többlépéses / API-figyelés akár 10 lépés (GET/POST/PUT/PATCH/DELETE/HEAD) láncolását teszi lehetővé, minden lépésnél ellenőrizheti az állapotkódot, a tartalmat és a JSONPath értéket, valamint változókat menthet a válaszból a további lépésekhez. A funkció a Profi és Business csomagokban érhető el, és az elsődleges régióban fut. Egyszerűbb esetekben az alacsonyabb csomagokon a HTTP monitort kombinálhatja egy különálló segédszkripttel, amely az eredményt egy heartbeat monitoron keresztül küldi.

Hitelesítés a monitorozásban

A figyelt végpont gyakran hitelesítést igényel. A lehetőségek:

  • Bearer token az Authorization fejlécben - jellemzően hosszú élettartamú, lejárat nélküli monitorozási token (biztonságosan kell tárolni)
  • API-kulcs a query paraméterben - látható a naplókban, nem ajánlott
  • HMAC-aláírás - időbélyeg + URL + törzs hash megosztott titokkal aláírva. A legbiztonságosabb.
  • mTLS - kliensoldali tanúsítvány a monitorozás oldalán. Belső API-khoz alkalmas.

Biztonsági figyelmeztetés: A monitorozáshoz hozzon létre egy dedikált fiókot / tokent minimális jogosultságokkal (csak olvasható health végpont, nem admin token). A tokent rendszeresen forgassa. Ha a monitorozó szolgáltatás kiszivárog, nem szivárog ki a teljes API-hozzáférés.

Válaszidő SLO

Az API válaszideje ugyanolyan fontos, mint a HTTP-kód. A 30 másodperces időkorláttal rendelkező kliens nem lát különbséget az "API 25 másodperc alatt ad 200-at" és az "API időtúllépéssel végződött" között. UX szempontból mindkettő rossz.

Állítsa be:

  • Kemény időkorlát - 10-15 másodperc után a monitorozás DOWN-t jelez
  • Lágy küszöb - 500-2000 ms közötti válaszidő = figyelmeztetés (csökkent teljesítmény)
  • Trendértesítések - értesítés, ha a válaszidő 95. percentilise 50%-kal nő az elmúlt 24 órában

Végpontonkénti figyelés

Egy nagy API-nak több tucat végpontja van. Ne csak a /health végpontot figyelje - az is hazudhat. Azonosítson 3-5 kritikus végpontot:

  • A leggyakrabban használt üzleti műveletek (POST /api/orders, GET /api/dashboard)
  • Cache hitet tesztelő olvasási végpont (gyors válasz)
  • Adatbázis-körfordulóval rendelkező írási végpont
  • Külső integrációs végpont (harmadik felet hív - észleli a függőségek kieséseit)

Mindegyiket külön figyelje. Egy incidens során így pontosan látja, az API melyik része esett ki.

Összegzés

Az API-figyelést nem lehet a HTTP-állapotkódra leszűkíteni. A minőségi monitorozás kombinálja az állapotot + tartalmi egyezést + válaszidőt + végpontonkénti részletességet + hitelesítést, hogy hűen utánozza a valódi klienst - ne csak a HTTP-klienst.

API-figyelés kulcsszó-egyezéssel

Állapotkód + kulcsszó a tartalomban + válaszidő + hitelesítési fejlécek. Végpontonkénti részletesség.

Monitorozás indítása →

Kapcsolódó

Megosztás: Link másolva

Próbálja ki az ePulz.io-t ingyen - 7 nap bankkártya nélkül.

Fiók létrehozása