Pereiti prie pagrindinio turinio

Kaip įdiegti ir sukonfigūruoti Prometheus Ubuntu sistemoje

Šioje pamokoje įdiegsime Prometheus Ubuntu sistemoje ir sukonfigūruosime jį rinkti sistemos metrikas iš Node Exporter.

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):

  • prometheus

  • node_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.

Ar gavote atsakymą į savo klausimą?