A Prometheus egy nyílt forráskódú, metrikákon alapuló megfigyelő rendszer. Adatokat gyűjt a szolgáltatásoktól és a gazdagépektől úgy, hogy HTTP-kéréseket küld a metrika végpontjaira. Ezután az eredményeket egy idősoros adatbázisban tárolja, és elérhetővé teszi elemzés és riasztás céljából.
Miért figyelni?
- Figyelmeztetéseket engedélyez, ha valami rosszul sül el, lehetőleg még azelőtt, hogy elromolnának. Hogy valaki megnézze.
- Betekintést nyújt a probléma elemzéséhez, hibakereséséhez és megoldásához.
- Lehetővé teszi a trendek/változások megtekintését az idő múlásával. Például egy adott időpontban hány aktív munkamenet. Ez segít a tervezési döntésekben és a kapacitástervezésben.
A monitorozás általában eseményekhez kapcsolódik. Egy esemény magában foglalhatja a HTTP-kérés fogadását, a válasz küldését, a lemezről való olvasást vagy a felhasználói bejelentkezést. A rendszer felügyelete magában foglalhatja a profilalkotást, a naplózást, a nyomkövetést, a mérőszámokat, a riasztásokat és a megjelenítést.
Blackbox vs. Whitebox megfigyelés
A monitorozás két fő kategóriába sorolható:
Blackbox figyelés
A Blackbox megfigyelés során a megfigyelés az alkalmazás vagy a gazdagép szintjén történik, mivel azokat kívülről figyelik. Ez eléggé korlátozó lehet.
Whitebox figyelés
A Whitebox figyelése egy szolgáltatás belső elemeinek figyelését jelenti. Ez adatokat szolgáltatna a belső komponensek állapotáról és teljesítményéről.
A négy arany jel
A Google szerintha csak négy mérőszámot tudja mérni a felhasználó felé néző rendszerében, összpontosítson a következő négyre, amelyeket négy aranyjelnek neveznek:
#1. Késleltetés
A kérelem kézbesítéséhez szükséges idő – sikeres vagy sikertelen. Fontos, hogy ne csak a sikeres, hanem a sikertelen kéréseket is nyomon kövessük.
#2. Forgalom
Annak mértéke, hogy mekkora kereslet van a rendszerben. Egy webszolgáltatás esetében ez általában másodpercenkénti HTTP-kérés.
#3. Hibák
A sikertelen kérelmek aránya.
#4. Telítettség
Mennyire teljes a szolgáltatása. A késleltetés növekedése gyakran a telítettség fontos mutatója. Sok rendszer teljesítménye jóval azelőtt leromlik, hogy elérné a 100%-os kihasználtságot.
Prometheus metrika típusai
A Prometheus-metrikák négy fő típusra oszthatók:
#1. Számláló
A számláló értéke mindig növekszik. Csökkenteni soha nem lehet, de nullára visszaállítható. Tehát, ha a törlés meghiúsul, az csak egy kihagyott adatpontot jelent. A halmozott növekedés a következő felolvasáskor lesz elérhető. Példák:
- A beérkezett HTTP kérések teljes száma
- A kivételek száma.
#2. Nyomtáv
A mérőeszköz egy pillanatfelvétel egy adott időpontban. Növekedhet vagy csökkenhet is. Ha az adatlekérés sikertelen, elveszik a minta; a következő lekérés más értéket mutathat: példák lemezterület, memóriahasználat.
#3. Hisztogram
A hisztogram mintákat vesz a megfigyelésekből, és konfigurálható gyűjtőhelyeken számolja meg azokat. Olyan dolgokra használják őket, mint a kérés időtartama vagy a válaszméretek. Például mérheti egy adott HTTP-kérelem kérésének időtartamát. A hisztogram egy gyűjtőcsoportot tartalmaz, mondjuk 1 ms, 10 ms és 25 ms. Ahelyett, hogy minden kérés minden időtartamát eltárolná, a Prometheus eltárolja az adott vödörbe eső kérések gyakoriságát.
#4. Összegzés
A hisztogram minták megfigyeléseihez hasonlóan jellemzően a kérések időtartama vagy válaszmérete. Megadja a megfigyelések teljes számát és az összes megfigyelt érték összegét, lehetővé téve a megfigyelt értékek átlagának kiszámítását. Például egy perc alatt három kérése volt, amelyek 2,3,4 másodpercig tartottak. Az összeg 9 lenne, a szám pedig 3. A késleltetés 3 másodperc lenne.
A Prometheus ökoszisztéma összetevői
A Prometheus szerver
Összegyűjti a mérőszámokat, tárolja, és lekérdezhetővé teszi, riasztásokat küld az összegyűjtött mérőszámok alapján.
Kaparás
Prométheusz egy húzás alapú rendszer. A mérőszámok lekéréséhez a Prometheus HTTP-kérést küld, amelyet scrape-nek neveznek. A konfigurációja alapján kaparásokat küld a célpontoknak.
Minden egyes (statikusan meghatározott vagy dinamikusan felfedezett) célt szabályos időközönként (kaparási időközönként) lekapar a rendszer. Minden adatmásolat beolvassa a /metrics HTTP-végpontot, hogy megkapja az ügyfélmetrikák aktuális állapotát, és megőrizze az értékeket a Prometheus idősoros adatbázisában.
Több idősoros adatbázis létezik a megfigyelési megoldásokhoz, amelyeket érdemes lehet felfedezni.
Ügyfélkönyvtárak
Egy szolgáltatás figyeléséhez műszereket kell hozzáadnia a kódhoz. Minden népszerű nyelvhez és futtatókörnyezethez rendelkezésre állnak ügyfélkönyvtárak. E könyvtárak használatával néhány sor kód hozzáadása után a kód elkezdhet mutatókat bocsátani. Ezt nevezzük közvetlen műszerezésnek. Ezek a könyvtárak lehetővé teszik belső metrikák meghatározását, és HTTP-végponton keresztül történő megjelenítését is. Amikor a Prometheus lekaparja a metrikák HTTP-végpontját, az ügyfélkönyvtár elküldi a metrikákat a kiszolgálónak.
A hivatalos klienskönyvtárakat a Prometheus for Go, Java, Python és Ruby kínálja. A Prometheus nyitott ökoszisztémával rendelkezik. A C, a PHP, a Node.js, a C#/.NET és még sok más számára elérhetők közösségi épített klienskönyvtárak is.
Exportőrök
Sok alkalmazás nem Prometheus formátumban teszi közzé a metrikákat. Ezekhez és azokhoz az alkalmazásokhoz, amelyeknek nem Ön a tulajdonosa, vagy amelyekhez nincs hozzáférése a kódhoz, nem adhat hozzá közvetlenül műszereket. Például MySQL, Kafka, JMX, HAProxy és NGINX szerver. Ezekben a forgatókönyvekben kihasználja a exportőrök.
Az exportőr egy olyan eszköz, amelyet azzal az alkalmazással együtt telepít, amelyből mérőszámokat szeretne. Az exportőr proxyként működik az alkalmazás és a Prometheus között. Megkapja a kéréseket a Prometheus szervertől, adatokat gyűjt az alkalmazás hozzáférési naplóiból, hibanaplóiból, átalakítja azokat a megfelelő formátumba, és végül visszatér a Prometheus szerverre.
Néhány népszerű exportőr:
- ablakok – a Windows szerver mérőszámaihoz
- Csomópont – Linux szerver metrikákhoz
- Fekete doboz – a DNS és a webhely teljesítménymutatóihoz
- JMX – Java alapú alkalmazási metrikákhoz
Miután az alkalmazások műszerezettek, vagy az exportőrök a helyükre kerültek, meg kell mondania a Prometheusnak, hogy hol vannak. Ezt statikus konfigurációval lehet megtenni. Dinamikus környezetek esetén ez nem tehető meg; ezért a szolgáltatás felderítést használják.
Figyelmeztetés
A Prometheus-szal történő riasztás két részből áll:
A riasztási szabályok figyelmeztetéseket küldenek az Alertmanagernek.
Ezután az Alertmanager kezeli ezeket a riasztásokat. Értesítéseket küld számos készenléti integráció segítségével, mint például az e-mail, a Slack, a Hipchat és a PagerDuty. Az Alertmanager elnémítást vagy összesítést is végezhet az értesítések számának csökkentése érdekében.
Itt található az útmutató a Linux-kiszolgáló felügyeletéhez a Prometheus és a Dashboard segítségével.
Vizualizálás irányítópultokkal
A Prometheus számos API-val rendelkezik, amelyek segítségével a PromQL lekérdezések nyers adatokat állíthatnak elő a vizualizációkhoz.
Bár a Prometheus tartalmaz egy kifejezésböngészőt, amely ad-hoc lekérdezésekhez használható, a legjobb elérhető eszköz Grafana. A Grafana teljes mértékben integrálható a Prometheusszal, és sokféle műszerfalat képes előállítani.
Be kell állítania a Prometheust a Grafana adatforrásaként.
Irányítópultokat a következőképpen adhat hozzá:
- Közösségben épített irányítópultok importálása
- Saját építés
- Előre meghatározott irányítópult használata.
Így néz ki egy előre meghatározott csomópont-exportőr irányítópultja:
A Grafana rendelkezik egy worldPing modullal, amely lehetővé teszi a webhely- és DNS-teljesítménymutatók figyelését világszerte.
Összegzés
A Prometheusnak nagyon kevés követelménye van. A futtatása meglehetősen egyszerű lehet, mivel egyetlen bináris konfigurációs fájlt tartalmaz. Több ezer célpontot képes kezelni, és több millió mintát képes lenyelni másodpercenként. A Prometheust arra tervezték, hogy nyomon kövesse a rendszer általános állapotát, egészségét és viselkedését.
A Grafana a legjobb elérhető eszköz a mutatók megjelenítésére, és zökkenőmentesen integrálható vele Prométheusz.