0. Įvadas
Prometheus yra monitoringo įrankis, padedantis komandoms realiu laiku matyti, kaip veikia jų serveriai, programos ir paslaugos. Jis leidžia greitai nustatyti problemas, palaikyti paslaugų stabilumą ir gerinti našumą.
Pagrindinė Prometheus savybė yra pull modelis: pats serveris periodiškai kreipiasi į duomenų šaltinius nurodytais HTTP adresais (endpoints). Tai supaprastina apkrovos valdymą ir automatinį stebimų šaltinių (targets) aptikimą. Šis principas išskiria Prometheus iš daugelio kitų sistemų, kurios naudoja push modelį, kai duomenis į serverį reikia aktyviai siųsti.
0.1 Reikalavimai
VPS su Ubuntu 22.04 arba 24.04;
SSH prieigą su root arba sudo teisėmis;
įdiegtą ir veikiantį Node Exporter 9100 prievade. Jį galite įdiegti pagal mūsų pamoką.
Norėdami patikrinti, ar Node Exporter veikia, vykdykite šią komandą:
sudo systemctl status node_exporter
Tarnyba turi būti active (running) būsenos.
1. Prometheus diegimas
1.1 Prometheus atsisiuntimas
Prisijunkite prie VPS per SSH.
Pirmiausia pereikite į laikinąjį katalogą:
cd /tmp
Dabar atsisiųskite Prometheus iš oficialios GitHub saugyklos:
wget https://github.com/prometheus/prometheus/releases/download/v3.15.1/prometheus-3.15.1.linux-amd64.tar.gz
Šiame pavyzdyje naudojame 3.15.1 versiją. Jei norite sužinoti, ar yra naujesnė versija, apsilankykite oficialiame Prometheus atsisiuntimų puslapyje.
Prieš išpakuodami archyvą, patikrinkime jo SHA256 kontrolinę sumą:
echo "6a726885328ad9efebbf36e876ce2fb6225468a71fd1e7ce3ba666d5f4d97a84 prometheus-3.15.1.linux-amd64.tar.gz" | sha256sum -c -
Turėtumėte gauti tokį rezultatą:
prometheus-3.15.1.linux-amd64.tar.gz: OK
Jei kontrolinė suma skiriasi, atsisiųsto failo neįdiekite.
1.2 Prometheus išpakavimas ir diegimas
Išpakuokite archyvą:
tar -xzf prometheus-3.15.1.linux-amd64.tar.gz
Toliau nukopijuokite vykdomuosius failus į /usr/local/bin/:
sudo install -m 0755 prometheus-3.15.1.linux-amd64/prometheus /usr/local/bin/
sudo install -m 0755 prometheus-3.15.1.linux-amd64/promtool /usr/local/bin/
Patikrinkite, ar diegimas pavyko:
prometheus --version
Jei viskas pavyko, pamatysite Prometheus versijos informaciją.
2. Prometheus konfigūravimas
2.1 Atskiro naudotojo sukūrimas
Prometheus nepatartina paleisti kaip root, todėl sukursime jam atskirą sisteminį naudotoją.
Sukurkite naudotoją:
sudo useradd --system --no-create-home --user-group --shell /usr/sbin/nologin prometheus
Tada sukurkite katalogus konfigūracijos failui ir surinktoms metrikoms:
sudo mkdir -p /etc/prometheus /var/lib/prometheus
Dabar duomenų katalogo savininku paskirkite naudotoją prometheus:
sudo chown prometheus:prometheus /var/lib/prometheus
2.2 Metrikų rinkimo konfigūravimas
Sukurkite Prometheus konfigūracijos failą:
sudo nano /etc/prometheus/prometheus.yml
Įrašykite šį turinį:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['127.0.0.1:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['127.0.0.1:9100']
Išsaugokite failą ir uždarykite redaktorių.
Ką daro ši konfigūracija?
scrape_interval: 15s– Prometheus renka metrikas kas 15 sekundžių.127.0.0.1:9090– Prometheus renka savo paties metrikas.127.0.0.1:9100– Prometheus renka serverio metrikas iš Node Exporter.
Abi tarnybos veikia tame pačiame VPS, todėl viešo serverio IP adreso čia nereikia.
Dabar patikrinkime, ar konfigūracijoje nėra klaidų:
promtool check config /etc/prometheus/prometheus.yml
Jei klaidų nėra, rezultate bus ši eilutė:
SUCCESS: /etc/prometheus/prometheus.yml is valid prometheus config file syntax
3. Prometheus tarnybos sukūrimas
Norime, kad Prometheus veiktų fone ir automatiškai pasileistų po serverio perkrovimo, todėl sukursime jam systemd tarnybą (service).
Sukurkite tarnybos failą:
sudo nano /etc/systemd/system/prometheus.service
Įklijuokite šį turinį:
[Unit]
Description=Prometheus Monitoring
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--web.listen-address=127.0.0.1:9090
Restart=on-failure
[Install]
WantedBy=multi-user.target
Išsaugokite failą.
Su šiais nustatymais Prometheus surinktas metrikas saugo /var/lib/prometheus kataloge ir klauso tik 127.0.0.1:9090.
Iš naujo įkelkite systemd konfigūraciją, kad jis pamatytų naują tarnybą:
sudo systemctl daemon-reload
Dabar paleiskite Prometheus ir įjunkite jo automatinį paleidimą po perkrovimo:
sudo systemctl enable --now prometheus
Patikrinkite tarnybos būseną:
sudo systemctl status prometheus
Turėtumėte matyti šią eilutę:
Active: active (running)
Štai ir viskas, Prometheus dabar veikia ir renka metrikas iš Node Exporter.
4. Prieiga prie Prometheus
4.1 Web sąsajos atidarymas
Prometheus turi web sąsają, kurioje galite peržiūrėti surinktas metrikas ir matyti grafikus.
Mūsų konfigūracijoje ši sąsaja pasiekiama tik iš paties VPS. Norėdami ją atidaryti savo kompiuteryje, galite naudoti SSH tunelį.
Savo kompiuteryje atidarykite terminalą ir vykdykite šią komandą:
ssh -L 9090:127.0.0.1:9090 YOUR_USERNAME@YOUR_VPS_IP
YOUR_USERNAME ir YOUR_VPS_IP pakeiskite savo SSH naudotojo vardu ir VPS IP adresu. Kol dirbate su sąsaja, šios SSH sesijos neuždarykite.
Tada savo kompiuterio naršyklėje atidarykite šį adresą:
http://127.0.0.1:9090
Pamatysite Prometheus web sąsają.
Atkreipkite dėmesį. Prometheus klauso tik localhost, todėl 9090 prievado viešai atidaryti nereikia.
4.2 Node Exporter ryšio patikra
Naršyklėje atidarykite šį puslapį:
http://127.0.0.1:9090/targets
Čia matysite visas tarnybas, kurias stebi Prometheus. Turėtų būti du šaltiniai (targets):
prometheusnode_exporter
Abiejų būsena turi būti UP.
Jei Node Exporter būsena DOWN, įsitikinkite, kad jo tarnyba veikia ir kad 9100 prievadas pasiekiamas lokaliai.
4.3 Serverio metrikų peržiūra
Atidarykite Prometheus užklausų sąsają:
http://127.0.0.1:9090/query
Norėdami patikrinti, ar Node Exporter atsako, įveskite šią užklausą:
up{job="node_exporter"}
Tada spustelėkite Execute.
Jei reikšmė yra 1, Prometheus gali rinkti metrikas iš Node Exporter. Reikšmė 0 reiškia, kad šaltinis nepasiekiamas.
Štai dar viena užklausa, rodanti laisvą jūsų serverio atmintį:
node_memory_MemAvailable_bytes / 1024 / 1024 / 1024
Rezultatas pateikiamas GiB.
Taip pat galite perjungti į grafiko rodinį ir pamatyti, kaip ši reikšmė kinta laikui bėgant.
Daugiau PromQL užklausų ir pavyzdžių rasite oficialiuose Prometheus užklausų pavyzdžiuose arba Node Exporter monitoringo pamokoje.
5. Išvada
Prometheus sprendžia pagrindinius monitoringo uždavinius: nuo metrikų rinkimo iki perspėjimų (alerting) ir vizualizavimo. Įdiegus šią sistemą sumažėja ilgų prastovų rizika, pagerėja paslaugų stabilumas ir greičiau reaguojama į incidentus.




