Fedezze fel a metrikagyűjtést a Prometheus és a Grafana segítségével. Tanulja meg, hogyan monitorozhatja hatékonyan alkalmazásait és infrastruktúráját ezekkel a hatékony, nyílt forráskódú eszközökkel.
Metrikagyűjtés: Átfogó útmutató a Prometheus és a Grafana segítségével
A mai komplex IT környezetben a hatékony monitorozás elengedhetetlen az alkalmazások és az infrastruktúra állapotának és teljesítményének fenntartásához. A metrikagyűjtés képezi ennek a monitorozásnak az alapját, lehetővé téve a legfontosabb teljesítménymutatók (KPI-k) nyomon követését, a potenciális problémák azonosítását és az erőforrás-kihasználás optimalizálását. Ez az átfogó útmutató bemutatja, hogyan használhatja ki a Prometheus és a Grafana, két hatékony nyílt forráskódú eszközt a robusztus metrikagyűjtéshez és vizualizációhoz.
Mi az a Metrikagyűjtés?
A metrikagyűjtés magában foglalja numerikus adatok gyűjtését, amelyek különféle rendszerek, alkalmazások és infrastrukturális elemek állapotát és viselkedését képviselik az idő múlásával. Ezek a metrikák tartalmazhatják a CPU-kihasználtságot, a memóriafelhasználást, a hálózati forgalmat, a válaszidőket, a hibaszázalékokat és sok más releváns mutatót. Ezen metrikák elemzésével értékes betekintést nyerhet a környezet teljesítményébe és állapotába.
Miért fontos a metrikagyűjtés?
- Proaktív problémadetektálás: Azonosítsa a potenciális problémákat, mielőtt azok hatással lennének a felhasználókra.
- Teljesítményoptimalizálás: Határozza meg a szűk keresztmetszeteket és a fejlesztési területeket.
- Kapacitástervezés: Becsülje meg a jövőbeli erőforrásigényeket a múltbeli trendek alapján.
- Szolgáltatási szint megállapodás (SLA) monitorozás: Biztosítsa a teljesítménycélok betartását.
- Hibaelhárítás és gyökérok-elemzés: Gyorsan diagnosztizálja és oldja meg a problémákat.
A Prometheus és a Grafana bemutatása
Prometheus egy nyílt forráskódú rendszer-monitorozó és riasztó eszközkészlet, amelyet eredetileg a SoundCloud-nál fejlesztettek ki. Kiválóan alkalmas idősoros adatok gyűjtésére és tárolására, amelyek időbélyegekkel indexelt adatok. A Prometheus egy lekérdezéses modellt használ a metrikák célpontokról (pl. szerverek, alkalmazások) történő rendszeres időközönkénti begyűjtésére. Hatékony lekérdezőnyelvet (PromQL) kínál a gyűjtött adatok elemzéséhez és a riasztási szabályok meghatározásához.
Grafana egy nyílt forráskódú adatvizualizációs és monitorozó platform. Lehetővé teszi interaktív irányítópultok és grafikonok létrehozását, amelyekkel különböző forrásokból, köztük a Prometheusból származó adatokat vizualizálhat. A Grafana gazdag vizualizációs lehetőségeket kínál, beleértve a grafikonokat, diagramokat, táblázatokat és mérőműszereket. Támogatja a riasztásokat is, lehetővé téve értesítések fogadását, ha bizonyos küszöbértékek túllépésre kerülnek.
A Prometheus és a Grafana együtt egy hatékony és rugalmas monitorozási megoldást alkot, amely a környezetek és felhasználási esetek széles köréhez adaptálható. Széles körben használják a DevOps és az SRE (Site Reliability Engineering) gyakorlatokban világszerte.
A Prometheus architektúrája és koncepciói
A Prometheus alapvető összetevőinek megértése elengedhetetlen a hatékony megvalósításhoz és felhasználáshoz:
- Prometheus szerver: Az alapvető összetevő, amely a metrikák begyűjtéséért, tárolásáért és lekérdezéséért felelős.
- Szolgáltatásfelderítés: Automatikusan felderíti a monitorozandó célpontokat konfiguráció vagy integrációk alapján olyan platformokkal, mint a Kubernetes.
- Exporters: Ügynökök, amelyek olyan formátumban teszik közzé a metrikákat, amelyet a Prometheus értelmezni tud. Példák: node_exporter (rendszermetrikákhoz) és különféle alkalmazásspecifikus exporterek.
- Pushgateway (opcionális): Lehetővé teszi a rövid élettartamú feladatok számára, hogy metrikákat küldjenek a Prometheusnak. Ez hasznos olyan kötegelt feladatokhoz, amelyek nem feltétlenül futnak folyamatosan.
- Alertmanager: A Prometheus által a konfigurált szabályok alapján generált riasztásokat kezeli. A riasztásokat különböző értesítési csatornákra irányíthatja, például e-mailre, Slack-re vagy PagerDuty-re.
- PromQL: A Prometheus lekérdezőnyelve a gyűjtött metrikák lekérdezésére és elemzésére szolgál.
Prometheus munkafolyamat
- A célpontok (alkalmazások, szerverek stb.) metrikákat tesznek közzé. Ezek a metrikák általában egy HTTP végponton keresztül kerülnek közzétételre.
- A Prometheus szerver begyűjti a metrikákat a konfigurált célpontokról. Rendszeresen lekéri a metrikákat ezekről a végpontokról.
- A Prometheus a begyűjtött metrikákat az idősoros adatbázisában tárolja.
- A felhasználók a PromQL segítségével kérdezik le a metrikákat. Ez lehetővé teszi számukra az adatok elemzését, valamint grafikonok és irányítópultok létrehozását.
- A riasztási szabályok a tárolt metrikák alapján kerülnek kiértékelésre. Ha egy szabály feltétele teljesül, riasztás indul.
- Az Alertmanager kezeli a kioldott riasztásokat. Eltávolítja a duplikációkat, csoportosítja és a megfelelő értesítési csatornákra irányítja őket.
A Grafana architektúrája és koncepciói
A Grafana kiegészíti a Prometheus-t azáltal, hogy felhasználóbarát felületet biztosít a gyűjtött metrikák vizualizálásához és elemzéséhez:
- Adatforrások: Kapcsolatok különböző adatforrásokhoz, beleértve a Prometheus-t, a Graphite-ot, az InfluxDB-t és másokat.
- Irányítópultok: Panelek gyűjteményei, amelyek különböző formátumokban jelenítik meg az adatokat (grafikonok, diagramok, táblázatok stb.).
- Panelek: Egyéni vizualizációk, amelyek egy adott adatforrásból származó adatokat jelenítenek meg egy adott lekérdezés segítségével.
- Riasztás: A Grafana beépített riasztási képességekkel is rendelkezik, lehetővé téve riasztások definiálását az irányítópultokon megjelenített adatok alapján. Ezek a riasztások használhatják a Prometheus-t adatforrásként, és kihasználhatják a PromQL-t a komplex riasztási logika érdekében.
- Szervezetek és csapatok: A Grafana támogatja a szervezeteket és a csapatokat, lehetővé téve az irányítópultokhoz és adatforrásokhoz való hozzáférés és engedélyek kezelését.
Grafana munkafolyamat
- Adatforrások konfigurálása: Csatlakoztassa a Grafanát a Prometheus szerverhez.
- Irányítópultok létrehozása: Tervezzen irányítópultokat a metrikák vizualizálásához.
- Panelek hozzáadása az irányítópultokhoz: Adjon hozzá paneleket a Prometheusból származó adott adatpontok megjelenítéséhez PromQL lekérdezések segítségével.
- Riasztás konfigurálása (opcionális): Állítson be riasztási szabályokat a Grafanán belül, hogy értesítéseket kapjon bizonyos metrikaküszöbértékek alapján.
- Irányítópultok megosztása: Ossza meg az irányítópultokat a csapatával a monitorozás és az elemzés terén való együttműködés érdekében.
A Prometheus és a Grafana beállítása
Ez a szakasz lépésről lépésre útmutatót nyújt a Prometheus és a Grafana beállításához.
A Prometheus telepítése
1. A Prometheus letöltése:
Töltse le a Prometheus legújabb verzióját a hivatalos weboldalról: https://prometheus.io/download/. Válassza ki a megfelelő csomagot az operációs rendszeréhez (pl. Linux, Windows, macOS).
2. Az archívum kibontása:
Bontsa ki a letöltött archívumot egy tetszőleges könyvtárba.
3. A Prometheus konfigurálása:
Hozzon létre egy `prometheus.yml` konfigurációs fájlt. Ez a fájl határozza meg azokat a célpontokat, amelyeket a Prometheus begyűjt, és egyéb konfigurációs opciókat. Egy alapszintű konfiguráció így nézhet ki:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
Ez a konfiguráció két begyűjtési feladatot határoz meg: egyet magának a Prometheusnak (saját metrikáinak begyűjtése), egyet pedig egy localhost 9100 porton futó node_exporternek. A `scrape_interval` meghatározza, hogy milyen gyakran gyűjtse be a Prometheus a célpontokat.
4. A Prometheus indítása:
Futtassa a Prometheus futtatható fájlját abból a könyvtárból, ahová kibontotta az archívumot:
./prometheus --config.file=prometheus.yml
A Prometheus elindul, és alapértelmezés szerint a 9090-es porton figyel. A Prometheus webes felületét a böngészőjében a http://localhost:9090 címen érheti el.
A Grafana telepítése
1. A Grafana letöltése:
Töltse le a Grafana legújabb verzióját a hivatalos weboldalról: https://grafana.com/grafana/download. Válassza ki a megfelelő csomagot az operációs rendszeréhez.
2. A Grafana telepítése:
Kövesse az operációs rendszerére vonatkozó telepítési utasításokat. Például Debian/Ubuntu rendszeren:
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
3. A Grafana indítása:
Indítsa el a Grafana szolgáltatást:
sudo systemctl start grafana-server
4. A Grafana elérése:
A Grafana elindul, és alapértelmezés szerint a 3000-es porton figyel. A Grafana webes felületét a böngészőjében a http://localhost:3000 címen érheti el.
Az alapértelmezett felhasználónév és jelszó `admin` és `admin`. Az első bejelentkezéskor a rendszer kérni fogja a jelszó megváltoztatását.
A Grafana összekötése a Prometheus-szal
A Prometheusból származó metrikák Grafanában történő vizualizálásához a Prometheus-t adatforrásként kell konfigurálnia a Grafanában.1. Adatforrás hozzáadása:
A Grafana webes felületén navigáljon a Configuration > Data Sources menüpontra, és kattintson az Add data source gombra.
2. A Prometheus kiválasztása:
Válassza a Prometheus-t adatforrás típusaként.
3. A Prometheus kapcsolat konfigurálása:
Adja meg a Prometheus szerver URL-jét (pl. `http://localhost:9090`). Szükség szerint konfiguráljon más opciókat (pl. hitelesítés).
4. Mentés és tesztelés:
Kattintson a Save & Test gombra, hogy ellenőrizze, a Grafana sikeresen tud-e csatlakozni a Prometheushoz.
Irányítópultok létrehozása a Grafanában
Miután összekapcsolta a Grafanát a Prometheus-szal, irányítópultokat hozhat létre a metrikák vizualizálásához.1. Új irányítópult létrehozása:
A Grafana webes felületén kattintson a + ikonra az oldalsávban, és válassza a Dashboard lehetőséget.
2. Panel hozzáadása:
Kattintson az Add an empty panel gombra egy új panel hozzáadásához az irányítópulthoz.
3. A panel konfigurálása:
- Adatforrás kiválasztása: Válassza ki a korábban konfigurált Prometheus adatforrást.
- PromQL lekérdezés megadása: Adjon meg egy PromQL lekérdezést a vizualizálni kívánt metrika lekéréséhez. Például a CPU-kihasználtság megjelenítéséhez használhatja a következő lekérdezést:
rate(process_cpu_seconds_total{job="node_exporter"}[5m])
Ez a lekérdezés kiszámítja a node_exporter által gyűjtött folyamatok által használt CPU-idő változásának sebességét egy 5 perces intervallumon keresztül.
- Vizualizációs opciók konfigurálása: Válassza ki a vizualizációs típust (pl. grafikon, mérőműszer, táblázat), és szükség szerint konfiguráljon más opciókat (pl. tengelyfeliratok, színek).
4. Az irányítópult mentése:
Kattintson a mentés ikonra az irányítópult mentéséhez.
PromQL: A Prometheus lekérdezőnyelve
A PromQL egy hatékony lekérdezőnyelv, amelyet a Prometheusban tárolt metrikák lekérésére és manipulálására használnak. Lehetővé teszi a műveletek széles körének végrehajtását, beleértve a következőket:- Szűrés: Metrikák kiválasztása címkék alapján.
- Összesítés: Aggregált értékek (pl. összeg, átlag, maximum) kiszámítása időtartományokon vagy több példányon keresztül.
- Sebesség számítása: Számláló metrikák változási sebességének kiszámítása.
- Számtani műveletek: Számtani műveletek végrehajtása metrikákon (pl. összeadás, kivonás, szorzás).
- Idősoros függvények: Függvények alkalmazása idősoros adatokra (pl. mozgóátlag, simítás).
PromQL példák
- CPU-kihasználtság:
rate(process_cpu_seconds_total{job="node_exporter"}[5m])
- Memóriafelhasználás:
node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes
- Lemezterület-használat:
(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100
- HTTP-kérések sebessége:
rate(http_requests_total[5m])
A PromQL elsajátítása elengedhetetlen a Prometheus és a Grafana hatékony használatához. A nyelv átfogó útmutatóját a Prometheus dokumentációjában találja.
Riasztás a Prometheus és az Alertmanager segítségével
A Prometheus robusztus riasztási rendszert biztosít, amely lehetővé teszi szabályok definiálását a metrikaértékek alapján. Ha egy szabály feltétele teljesül, riasztás indul, és az Alertmanager kezeli az értesítési folyamatot.Riasztási szabályok definiálása
A riasztási szabályok a `prometheus.yml` konfigurációs fájlban vannak definiálva. Íme egy példa egy riasztási szabályra, amely akkor indul, ha a CPU-kihasználtság meghaladja a 80%-ot:
rule_files:
- "rules.yml"
Ezután egy `rules.yml` nevű fájlban helyezzen el ilyen szabályokat:
groups:
- name: example
rules:
- alert: HighCPUUsage
expr: rate(process_cpu_seconds_total{job="node_exporter"}[5m]) > 0.8
for: 1m
labels:
severity: critical
annotations:
summary: "Magas CPU-használat észlelve"
description: "A CPU-használat meghaladja a 80%-ot a következő példányon: {{ $labels.instance }}"
Magyarázat:
- alert: A riasztás neve.
- expr: A PromQL kifejezés, amely meghatározza a riasztási feltételt.
- for: Az az időtartam, ameddig a feltételnek igaznak kell lennie, mielőtt a riasztás elindul.
- labels: A riasztáshoz csatolt címkék.
- annotations: A riasztással kapcsolatos további információkat tartalmazó annotációk, például összegzés és leírás.
Az Alertmanager konfigurálása
Az Alertmanager kezeli a riasztások irányítását és értesítését. Konfigurálnia kell az Alertmanagert, hogy megadja, hová kell küldeni a riasztásokat (pl. e-mail, Slack, PagerDuty). A részletes konfigurációs utasításokat az Alertmanager dokumentációjában találja.Egy minimális `alertmanager.yml` konfiguráció így nézhet ki:
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receiver: 'web.hook'
receivers:
- name: 'web.hook'
webhook_configs:
- url: 'http://localhost:8080/'
Ez a konfiguráció a riasztásokat egy localhost 8080-as porton lévő webhookra küldi. A `receivers` szakaszt testre szabhatja olyan szolgáltatások használatára, mint a Slack vagy az e-mail.
Gyakorlati példák és felhasználási esetek
A Prometheus és a Grafana az alkalmazások és infrastrukturális elemek széles körének monitorozására használható. Íme néhány gyakorlati példa:- Webszerver monitorozás: A HTTP-kérések sebességének, a válaszidőknek és a hibaszázalékoknak a monitorozása az optimális webszerver teljesítmény biztosítása érdekében.
- Adatbázis monitorozás: Az adatbázis-kapcsolatkészlet használatának, a lekérdezési végrehajtási időknek és a lassú lekérdezéseknek a nyomon követése az adatbázis szűk keresztmetszeteinek azonosítása érdekében.
- Kubernetes monitorozás: A Kubernetes-fürtök állapotának és teljesítményének monitorozása, beleértve a podok és a csomópontok erőforrás-kihasználtságát.
- Alkalmazás monitorozás: Egyéni metrikák gyűjtése az alkalmazásaiból az üzleti KPI-k nyomon követése és az alkalmazásszintű problémák azonosítása érdekében.
- Hálózat monitorozás: A hálózati forgalom, a késleltetés és a csomagvesztés nyomon követése a hálózati szűk keresztmetszetek és a teljesítményproblémák azonosítása érdekében.
- Felhőinfrastruktúra monitorozás: A felhőerőforrások teljesítményének és rendelkezésre állásának monitorozása, mint például a virtuális gépek, a tárolás és az adatbázisok. Ez különösen fontos az AWS, az Azure és a Google Cloud környezetek esetében, amelyek mindegyike integrálva van a Prometheus-szal és a Grafanával.
Példa: Mikroszolgáltatás-architektúra monitorozása
Egy mikroszolgáltatás-architektúrában a Prometheus és a Grafana használható az egyes szolgáltatások, valamint a teljes rendszer állapotának és teljesítményének monitorozására. Minden szolgáltatás közzéteheti saját metrikáit, például a kérések sebességét, a válaszidőket és a hibaszázalékokat. A Prometheus ezután begyűjtheti ezeket a metrikákat, és a Grafana felhasználható a vizualizálásukra. Ez lehetővé teszi a teljesítmény szűk keresztmetszeteinek vagy hibáinak gyors azonosítását bizonyos szolgáltatásokban.
Haladó technikák és bevált módszerek
A Prometheus és a Grafana maximális kihasználása érdekében fontolja meg a következő haladó technikákat és bevált módszereket:- Értelmes címkék használata: Használjon címkéket a metrikák kontextusának bővítéséhez. Ez megkönnyíti az adatok szűrését és összesítését. Például használjon címkéket annak a szolgáltatásnak, környezetnek és példánynak az azonosítására, amelyhez egy metrika kapcsolódik.
- A legfontosabb teljesítménymutatók (KPI-k) monitorozása: Összpontosítson a vállalkozása szempontjából legkritikusabb metrikák monitorozására. Ez lehetővé teszi a legnagyobb hatással járó problémák gyors azonosítását és kezelését.
- Megfelelő riasztási küszöbértékek beállítása: Állítson be olyan riasztási küszöbértékeket, amelyek megfelelnek a környezetének. Kerülje a túl érzékeny küszöbértékek beállítását, mert ez riasztási fáradtsághoz vezethet.
- Az irányítópultok hatékony használata: Tervezzen olyan irányítópultokat, amelyek könnyen érthetők és gyakorlatias betekintést nyújtanak. Használjon világos és tömör címkéket és vizualizációkat.
- A telepítés és a konfiguráció automatizálása: Automatizálja a Prometheus és a Grafana telepítését és konfigurálását olyan eszközökkel, mint az Ansible, a Terraform vagy a Kubernetes.
- A Prometheus és a Grafana példányok védelme: Védje meg a Prometheus és a Grafana példányait az illetéktelen hozzáférés megakadályozása érdekében. Használjon hitelesítést és engedélyezést az érzékeny adatokhoz való hozzáférés szabályozásához.
- A horizontális skálázás mérlegelése: Nagy környezetek esetében fontolja meg a Prometheus és a Grafana példányok horizontális skálázását a megnövekedett terhelés kezelése érdekében. Ez több Prometheus szerver és Grafana példány használatával érhető el egy terheléselosztó mögött.
- A szolgáltatásfelderítés kihasználása: Használja ki a Prometheus szolgáltatásfelderítési képességeit az új célpontok automatikus felderítéséhez és monitorozásához. Ez különösen hasznos dinamikus környezetekben, mint a Kubernetes.
Gyakori problémák elhárítása
Még gondos tervezéssel és megvalósítással is előfordulhatnak problémák a Prometheus és a Grafana használata során. Íme néhány gyakori probléma és azok megoldásai:- A Prometheus nem gyűjti be a metrikákat: Ellenőrizze, hogy a célpont elérhető-e a Prometheus szerverről. Ellenőrizze a Prometheus naplókat a hibákért. Győződjön meg arról, hogy a célpont a megfelelő formátumban teszi közzé a metrikákat.
- A Grafana nem csatlakozik a Prometheushoz: Ellenőrizze, hogy a Prometheus URL-je helyes-e a Grafana adatforrás konfigurációjában. Ellenőrizze a Grafana naplókat a hibákért. Győződjön meg arról, hogy a Prometheus szerver fut, és elérhető a Grafana szerverről.
- A PromQL lekérdezések nem adnak vissza adatokat: Ellenőrizze, hogy a PromQL lekérdezés helyes-e. Ellenőrizze a Prometheus naplókat a hibákért. Győződjön meg arról, hogy a lekérdezett metrika létezik, és a Prometheus begyűjti.
- A riasztások nem indulnak el: Ellenőrizze, hogy a riasztási szabály helyesen van-e definiálva. Ellenőrizze a Prometheus naplókat a hibákért. Győződjön meg arról, hogy az Alertmanager fut, és helyesen van konfigurálva.
- Teljesítményproblémák: Ha teljesítményproblémákat tapasztal, fontolja meg a Prometheus és a Grafana példányok horizontális skálázását. Optimalizálja a PromQL lekérdezéseket a Prometheus szerver terhelésének csökkentése érdekében.
Alternatív monitorozási megoldások
Bár a Prometheus és a Grafana hatékony eszközök, nem ezek az egyetlen lehetőségek a metrikagyűjtéshez és vizualizációhoz. Más népszerű monitorozási megoldások a következők:- Datadog: Egy kereskedelmi monitorozási platform, amely funkciók széles skáláját kínálja, beleértve a metrikagyűjtést, a naplókezelést és az alkalmazásteljesítmény-monitorozást (APM).
- New Relic: Egy másik kereskedelmi monitorozási platform, amely átfogó monitorozási képességeket biztosít az alkalmazásokhoz és az infrastruktúrához.
- InfluxDB és Chronograf: Egy idősoros adatbázis és vizualizációs platform, amelyet gyakran a Prometheus és a Grafana alternatívájaként használnak.
- Elasticsearch, Logstash és Kibana (ELK Stack): Egy népszerű nyílt forráskódú stack a naplókezeléshez és elemzéshez. Bár elsősorban naplókhoz használják, metrikagyűjtésre és vizualizációra is használható.
- Dynatrace: Egy AI-alapú monitorozási platform, amely végponttól végpontig betekintést nyújt az alkalmazások és az infrastruktúra teljesítményébe.