Megosztás a következőn keresztül:


Alkalmazások rendszerezésére vonatkozó javaslatok

Erre az Azure Well-Architected Framework Operational Excellence ellenőrzőlistára vonatkozó javaslatra vonatkozik:

OE:07 Tervezzen és implementáljon egy monitorozási rendszert a tervezési döntések érvényesítéséhez, valamint a jövőbeli tervezési és üzleti döntések tájékoztatásához. Ez a rendszer rögzíti és elérhetővé teszi a számítási feladat infrastruktúrájából és kódjából kibocsátott operatív telemetriát, metrikákat és naplókat.

Kapcsolódó útmutató: Javaslatok monitorozási rendszer tervezéséhez és létrehozásához

Ez az útmutató azokat a javaslatokat ismerteti, amelyek lehetővé teszik az alkalmazás megfigyelhetőségét a rendszerállapot használatával. Értelmes telemetria létrehozása, amely betölthető és integrálható a figyelési rendszerbe. A rendszerállapot használatával anélkül gyűjthet adatokat, hogy bejelentkezett egy távoli éles kiszolgálóra, hogy manuálisan végezze el a nyomkövetést vagy a hibakeresést. A rendszerállapot-adatok olyan metrikákat és naplókat tartalmaznak, amelyekkel felmérheti a teljesítményt, diagnosztizálhatja a problémákat, és döntéseket hozhat a számítási feladatokról.

Fő tervezési stratégiák

A számítási feladat telemetriájának optimalizálásához alakítsa ki az alkalmazást a következő adatok létrehozásához:

  • A naplók a különálló események időbélyegző rekordjai. A naplóknak három formája van: egyszerű szöveg, strukturált és bináris.

  • Az elosztott nyomkövetési naplók lehetővé teszik a kérések útvonalának megtekintését a különböző szolgáltatásokon és összetevőkön áthaladva.

  • A metrikák olyan numerikus értékek, amelyek egy rendszer egy adott időpontban történő aspektusát írják le.

Megjegyzés

Az alkalmazás automatikus kialakításához olyan eszközöket használhat, mint az Application Insights, a Dynatrace és az Elastic Application Performance Monitoring. Ezek az eszközök megkönnyítik a kialakítást, de korlátozhatják is őket. Ha automatikus kialakítási eszközt használ, szükség szerint további képességeket adhat hozzá manuális kialakítással.

Naplók és elosztott nyomkövetési naplók

Strukturált naplózás használatával egyszerűen integrálhatja a naplókat a figyelési és elemzési platformokba. Alakítsa ki az alkalmazást, hogy a részletességi szintek módosíthatók legyenek. Az állandó részletes naplózás elpazarolhatja a tárolási erőforrásokat, ezért szükség szerint be- és kikapcsolni kell a hibaelhárításhoz.

A nyomkövetési naplók szöveges adatokat vagy bináris adatokat tartalmaznak, amelyek egy nyomkövetési eseményből jönnek létre, ha az alkalmazás Eseménykövetést használ a Windowshoz (ETW) . A rendszernaplók nyomkövetési naplótartalmat hoznak létre az infrastruktúra eseményeiből, például a webkiszolgálóról. A szöveges naplótartalmakat úgy tervezték, hogy olvashatók legyenek az emberek számára, de gondoskodnia kell arról, hogy olyan formátumban legyen megírva, amelyet egy automatizált rendszer is elemezhet.

Kategorizálja a naplókat, és használjon külön naplókat a rendszer minden működési aspektusából származó nyomkövetési kimenet rögzítéséhez. Ha kategorizálja a naplókat, gyorsan szűrheti a naplóüzeneteket egyetlen hosszadalmas fájl feldolgozása helyett. Soha ne írjon ugyanarra a naplóra olyan adatokat, amelyek különböző biztonsági követelményekkel (például naplózási és hibakeresési adatokkal) rendelkezik.

Megjegyzés

Előfordulhat, hogy a naplók fájlként vannak implementálva a fájlrendszerben, vagy más formátumban is tárolhatók, például blobtárolóban. A naplóadatok strukturált tárolóban is tárolhatók, például egy tábla soraiban.

Mérőszámok

A metrikák vagy minták a rendszer bizonyos aspektusainak vagy erőforrásainak egy vagy több kapcsolódó címkével vagy dimenzióval rendelkező darabszáma. A metrikák egyetlen példánya nem hasznos az elkülönítésben, a metrikákat idővel rögzíteni kell. Vegye figyelembe, hogy milyen metrikákat kell rögzítenie, és milyen gyakran. A túl gyakran létrehozott adatok nagy terhelést okozhatnak a rendszeren, de a ritkán előforduló adatrögzítések miatt kihagyhatja azokat a körülményeket, amelyek jelentős eseményhez vezetnek. Az adatok rögzítésének megfelelő gyakorisága metrikától metrikánként eltérő lehet. A kiszolgálók processzorhasználata például jelentősen változhat másodpercről másodpercre, de a magas használat csak akkor válik problémává, ha több perc alatt konzisztens.

Információk az adatok korrelálásához

Könnyedén monitorozhat egyéni és rendszerszintű teljesítményszámlálókat, rögzítheti az erőforrások metrikáit, és alkalmazáskövetési információkat kérhet le különböző naplófájlokból. Egyes monitorozáshoz adatkorrelációra van szükség a monitorozási folyamat elemzési és diagnosztikai szakaszában. Ezek az adatok több űrlapot is tartalmazhatnak, és az elemzési folyamatnak elegendő rendszerállapot-adatot kell szolgáltatnia a különböző űrlapok leképezéséhez. Az alkalmazás-keretrendszer szintjén például egy szálazonosító azonosíthat egy feladatot. Egy alkalmazáson belül ugyanez a munka társítható a feladatot végrehajtó felhasználó felhasználói azonosítójával.

Nem valószínű, hogy 1:1-et ábrázol a szálak és a felhasználói kérések között, mert az aszinkron műveletek több felhasználó esetében is újra felhasználhatják ugyanazokat a szálakat. A további bonyolítás érdekében egyetlen kérés több szálra is korrelálhat, miközben a rendszeren halad át. Amennyiben lehetséges, az egyes kérésekhez egy egyedi tevékenységazonosítót társítson, amelyet a végrehajtás propagál a rendszeren a kérés környezetének részeként. A tevékenységazonosítók nyomkövetési információkban való létrehozásának és felvételének technikája a nyomkövetési adatok rögzítésére használt technológiától függ.

Minden monitorozási adatot ugyanúgy kell időbélyegezni. A konzisztencia érdekében minden dátumot és időpontot az egyezményes világidő (UTC) használatával rögzítsen.

Megjegyzés

Előfordulhat, hogy a különböző időzónákban és hálózatokban működő számítógépek nem szinkronizálódnak. Ne függj csak az időbélyegektől a több gépre kiterjedő rendszerállapot-adatok korrelációjához.

A rendszerállapot-adatokba foglalandó információk

Vegye figyelembe az alábbi szempontokat, amikor eldönti, hogy mely rendszerállapot-adatokat kell összegyűjtenie.

Emberi olvasásra alkalmas adatok

Győződjön meg arról, hogy a nyomkövetési események által rögzített információk gépi és emberi olvasásra is alkalmasak. Ezen információk jól meghatározott sémáinak alkalmazása a naplóadatok rendszerek közötti automatizált feldolgozásának implementálásához, valamint a naplókat olvasó üzemeltetési és mérnöki személyzet konzisztenciájának biztosításához.

Adja meg a következő környezeti információkat az adataiban:

  • Üzembehelyezési környezet
  • Feldolgozó gép
  • A folyamat részletei
  • Hívássorozat

Befektetés a nyomon követhetőségbe és a korrelációba

Adjon meg elegendő környezetet, például egy tevékenységazonosítót, amely egy adott kérelempéldányhoz van társítva, hogy a fejlesztő vagy a rendszergazda meg tudja határozni az egyes kérések forrását.

Az adatkörnyezet olyan információkat is tartalmazhat, amelyek egy tevékenységnek az elvégzett számítási munkával és a felhasznált erőforrásokkal való korrelációjára szolgálnak. Ez a munka átlépheti a folyamat és a gép határait.

A méréshez a környezetnek közvetlenül vagy közvetve tartalmaznia kell egy hivatkozást a kérést kiváltó ügyfélre. A kontextus értékes információkat biztosít az alkalmazásnak a monitorozási adatok rögzítésének időpontjában érvényes állapotára vonatkozóan.

Az összes releváns adat rögzítése

Jegyezze fel az összes kérést, valamint azokat a helyeket vagy régiókat, ahol azokat végrehajtották. Ezeket az információkat a helyspecifikus elérési pontok azonosításához használhatja. Ez az információ hasznos lehet annak meghatározásához is, hogy az alkalmazás vagy az általa használt adatok újraparticionálása szükséges-e.

A kivételek adatait szintén gondosan rögzíteni kell. A kritikus hibakeresési információk gyakran elvesznek a gyenge kivételkezelés miatt. Ha lehetséges, rögzítse az alkalmazás által okozott összes kivétel részleteit, beleértve az esetleges belső kivételeket vagy egyéb környezeti információkat, például a hívásvermet.

Törekedjen az adatkonzisztenciára

A konzisztens adatok segíthetnek az események elemzésében és a felhasználói kérésekkel való korrelációban. Fontolja meg egy átfogó és konfigurálható naplózási csomag használatát az információk gyűjtéséhez. A naplózási csomagok segíthetnek elkerülni, hogy a fejlesztők a rendszer különböző részeinek implementálása során alkalmazzák a megközelítést.

Gyűjtse össze a fő teljesítményszámlálókból az adatokat, például a bemeneti/kimeneti kötetet, a kérések számát, valamint a memóriát, a hálózatot és a processzorhasználatot. Egyes infrastruktúra-szolgáltatások saját teljesítményszámlálókat biztosítanak, például:

  • Az adatbázishoz való kapcsolatok száma.
  • A tranzakciós arány.
  • A sikeres vagy sikertelen tranzakciók száma.

Az alkalmazások saját teljesítményszámlálókat is definiálhatnak.

Külső függőségek megfontolása

Naplózza az összes külső szolgáltatáshívást. Külső hívások történhetnek a következőkkel:

  • Adatbázisrendszerek.
  • Webszolgáltatások.
  • Az infrastruktúra részét képező egyéb rendszerszintű szolgáltatások.

Jegyezze fel az egyes hívások időtartamára és a hívás sikerességére vagy sikertelenségére vonatkozó információkat. Amennyiben lehetséges, rögzítse az összes újrapróbálkozási kísérletet és hibát is az előforduló átmeneti hibák esetén.

A telemetriai rendszer kompatibilitásának biztosítása

A rendszerállapot-információk sok esetben események sorozataként jönnek létre, és egy külön telemetriarendszerbe kerülnek feldolgozásra és elemzésre. A telemetriai rendszerek általában függetlenek bármely adott alkalmazástól vagy technológiától.

A telemetriai rendszerek meghatározott sémákat használnak az információk elemzéséhez. A séma egy szerződést határoz meg, amely meghatározza a telemetriai rendszer által betölthető adatmezőket és típusokat. Általánosítsa a sémát a különböző platformokról és eszközökről érkező adatok engedélyezéséhez. A közös sémának tartalmaznia kell az összes rendszerállapot-eseményhez kapcsolódó mezőket, például:

  • Esemény neve.
  • Esemény ideje.
  • A feladó IP-címe.
  • Az eseménykorrelációhoz szükséges részletek, beleértve a következőket:
    • Felhasználóazonosító
    • Eszközazonosító
    • Alkalmazásazonosító

Ne feledje, hogy sok eszköz képes eseményeket előhozni ugyanahhoz az alkalmazáshoz, így a séma nem függhet az eszköz típusától. Az alkalmazásnak támogatnia kell a roamingot vagy az eszközök közötti terjesztést. A séma az alkalmazásokban gyakran használt adott forgatókönyvek megfelelő tartománymezőit is tartalmazhatja, például:

  • A kivételekre vonatkozó információk.
  • Alkalmazásindítási és -befejezési események.
  • A webszolgáltatás API-hívásainak sikere vagy sikertelensége.

Hozzon létre olyan tartománymezőket, amelyek ugyanazokat az eseményeket állítják elő, hogy közös jelentéseket és elemzéseket hozzanak létre az alkalmazások között. Előfordulhat, hogy olyan sémát kell konfigurálnia, amely egyéni mezőket tartalmaz az alkalmazásspecifikus események részleteinek rögzítéséhez.

Az OpenTelemetry API-k, SDK-k és egyéb eszközök szállítósemleges gyűjteménye. Az OpenTelemetry használatával alkalmazásokat alakíthat ki, és egységesen hozhat létre jelentéssel bíró telemetriát a nyelvek között. Az OpenTelemetry eszközfüggetlen, ezért számos megfigyelhetőségi platformmal kompatibilis, beleértve a nyílt forráskódú és kereskedelmi ajánlatokat is. A Microsoft az OpenTelemetryt alkalmazza a kialakítás szabványos eszközeként.

Ajánlott eljárások az alkalmazásokban zajló rendszerállapot-figyeléshez

Az alábbi lista a felhőben futó elosztott alkalmazások kialakításának ajánlott eljárásait foglalja össze:

  • A naplók legyenek könnyen olvashatók és elemezhetők. Alkalmazzon strukturált naplózást, ahol lehetséges.

  • A naplóüzenetek legyenek tömörek és leíró jellegűek.

  • Azonosítsa a napló forrását.

  • Adjon meg időbélyeg-információkat az egyes naplórekordok írásakor.

  • Használja ugyanazt az időzónát és formátumot az összes időbélyeghez.

  • Kategorizálja a naplókat, és írjon üzeneteket a megfelelő helyre.

  • Ne fedje fel a rendszer bizalmas adatait vagy a felhasználók személyes adatait. A naplózás előtt törölje ezeket az információkat, de tartsa meg a releváns részleteket.

  • Naplózza az összes kritikus kivételt, de engedélyezze a rendszergazda számára, hogy szükség szerint be- és kikapcsolja a naplózást a kevesebb kivétel és figyelmeztetés érdekében.

  • Rögzítse és naplózza az újrapróbálkozás logikai adatait. Ezek az adatok a rendszer átmeneti állapotának figyeléséhez hasznosak.

  • Folyamathívások, például külső webszolgáltatásokra vagy adatbázisokra irányuló kérések nyomon követése.

  • Ne keverje a különböző biztonsági szintű naplóüzeneteket ugyanabban a naplófájlban.

  • Győződjön meg arról, hogy minden naplózási hívás olyan tűz- és felejtési művelet, amely nem blokkolja az üzleti műveletek előrehaladását. Zárja ki a naplózási eseményeket ebből a szabályból, mert kritikus fontosságúak az üzlet szempontjából.

  • Győződjön meg arról, hogy a naplózás bővíthető, és nem függ közvetlenül egy konkrét céltól.

  • Győződjön meg arról, hogy minden naplózás sikertelen, és nem vált ki kaszkádolt hibákat.

  • A rendszerállapot kezelése folyamatban lévő iteratív folyamatként, és a naplók rendszeres áttekintése.

Megfontolandó szempontok

  • A profilkészítést csak akkor hajtsa végre, ha szükséges, mert jelentős többletterhelést róhat a rendszerre. A rendszerállapot használatával a profilkészítés minden alkalommal rögzít egy eseményt, például egy metódushívást. A mintavételezés azonban csak a kiválasztott eseményeket rögzíti.

  • A profilkészítési beállítások lehetnek időalapúak, például n másodpercenként egyszer, vagy gyakoriságalapúak, például minden n kérésnél. Ha gyakran fordulnak elő események, a profilkészítés túl nagy terhet róhat a rendszerre, és hatással lehet az általános teljesítményre. Ebben az esetben a mintavételezési módszer előnyösebb. Ha azonban az események gyakorisága alacsony, előfordulhat, hogy a mintavételezés lemarad róluk. Ebben az esetben a profilkészítés lehet a jobb megközelítés.

Azure-beli segítségnyújtás

Az autoinstrumentáció számos, az Application Insights használatával monitorozott Azure- és helyszíni alkalmazáshoz érhető el. Az autoinstrumentációs függvény automatikusan úgy konfigurálja az alkalmazást, hogy gazdag telemetriát biztosítson az Application Insights számára, és egyszerű hozzáférést biztosít az olyan szolgáltatásokhoz, mint az alkalmazás irányítópultja és az alkalmazástérkép. A támogatott üzemeltetési platformokért és fejlesztési nyelvekért lásd: Támogatott környezetek, nyelvek és erőforrás-szolgáltatók.

Működési kiválósági ellenőrzőlista

Tekintse meg a javaslatok teljes készletét.