PROMETHEUS z mitologii greckiej jeden z wielu tytanów potrafiący tworzyć i niszczyć, leczyć i zabijać. Choć jego otoczenie negowało czułość lecz wymagało być strasznym wybrał dla siebie drogę przez mękę. Zrobił to w imię nadziei na lepsze jutro nie dla siebie lecz dla innych. Jak się okazało zarówno najbliżsi (Epimeteusz - brat), jak i jego władcy (Zeus) nie wykazali się tą samą mądrością, czy odwagą co on.
Oprogramowanie Open Source PROMETHEUS zbiera informacje o usługach, kontenerach i klastrach Kubernetes. I tak ja tytan Prometusz potrafił wiedzę przechowywać, przetwarzać i przekazać tak i to narzędzie monitoringu analgicznie działa wysyłajac przy okazji powiadomienia oferując deduplikację, grupowanie i przekierowywanie e-mail-y, PagerDuty, Slack.
Instalację zaczynamy od przygotowania systemu dla rodziny RedHat-a:
- sudo dnf update -y
lub Ubuntu:
- sudo apt-get update; sudo apt-get upgrade -y; sudo apt autoremove; sudo autoclean
idąc na całość (backup całego systemu zalecam)
- sudo apt full-upgrade; sudo apt dist-upgrade; sudo do-release-upgrade
Tworzymy dedykowanego użytkownika:
- sudo groupadd --system prometheus
- sudo useradd --no-create-home --shell /bin/false -g prometheus --system prometheus
Tworzymy katalogi (według standardowej konwencji) i nadajemy im właściciela :
- sudo mkdir /etc/prometheus
- sudo mkdir /etc/prometheus/console
- sudo mkdir /etc/prometheus/console_libraries
- sudo mkdir /var/lib/prometheus
- sudo mkdir /var/log/prometheus
- sudo chown -R prometheus:prometheus /etc/prometheus
- sudo chown prometheus:prometheus /var/lib/prometheus
- sudo chown prometheus:prometheus /var/log/prometheus
Ściągamy źródła PROMETHEUS:
- cd /tmp
- curl -LO https://github.com/prometheus/prometheus/releases/download/v3.10.0/prometheus-3.10.0.linux-amd64.tar.gz
- tar xvf prometheus*.linux-amd64.tar.gz
- cd prometheus*.linux-amd64.tar.gz
Kopiujemy rozpakowany binarny plik systemowy do folderu /usr/local/bin i nadajemy mu właściciela:
- sudo cp prometheus promtool /usr/local/bin/
- sudo chown prometheus:prometheus /usr/local/bin/prometheus
- sudo chown prometheus:prometheus /usr/local/bin/promtool
Analogicznie czynimy z plikiem konfiguracyjnym Prometusza, który kopiujemy do /etc/prometheus:
- sudo cp prometheus.yml /etc/prometheus/prometheus.yml
- sudo chown -R prometheus:prometheus /etc/prometheus
Praktycznie już w tym momencie możemy testowo uruchomić PROMETHEUS-a komendą:
- /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml
i sprawdzić choćby pod adresem:
Powinna nam otworzyć się strona zbliżona do poniższej:

Idąc za tym sukcesem sprawdźmy samy siebie, czy Prometheush zarejestrował nasze zapytanie protokołem http wpisując w górnym wierszu, w miejsce tekstu ">_ Enter expression (press Shift+Enter for newlines)" następujący tekst:
- promhttp_metric_handler_requests_total
i zatwierdziwszy go, np. klawiszem "ENTER" ukarze się naszym oczom następujący widok:

oraz wybierając drugą zakładkę "Graph" uzyskamy ten sam wynik, ale w postaci, jak się nie trudno domysleć graficznej:

Tym małym przerywnikiem chciałem połączyć przyjemne z pożytecznym, czyli nie tylko zamknąć pewien etap instalacji, ale zamiast we wstępie rozwodzić się tysiącami słów nad senesem istnienia takiego narzędzia, jal Prometheus to te trzy zrzuty ekranowe wyręczyły mnie w tej ciezkiej pracy. :-) W następnej kolejności należy usankcjonować na stałe uruchamianie aplikacji wraz z systemem operacyjnym. Czynimy to tworząc usługę prometheus w Systemd poprzez wygenerowanie pliku:
- sudo touch /etc/systemd/system/prometheus.service
i otwierając go w dowolnym edytorze ( nano /etc/systemd/system/prometheus.service ) wypełniamy następującym tekstem:
- [Unit]
Description=Prometheus
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/data \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--storage.tsdb.retention.time=30d
[Install]
WantedBy=multi-user.target
oraz restarujemy, aktywujemy, uruchamiamy i sprawdzamy samą usługę poniższymi komendami:
- sudo systemctl daemon-reload
- sudo systemctl enable prometheus
- sudo systemctl start prometheus
- sudo systemctl status prometheus
Jeśli gdzieś nie daliśmy ciała to powiniśmy ujrzeć w konsoli coś podobnego do poniższego zrzutu ekranowego, jeśli nie to będzie napisany komunikat błędu i w zależności ..:

Na sam koniec musimy wykonać lukę w zaporze ogoniowej (standardowo port 9090 i protikół TCP) komendą dla RedHat-a:
- sudo firewall-cmd --permanent --add-port=9090/tcp
- sudo firewall-cmd --reload
oraz dla klonów Debian-a:
- sudo ufw allow 9090/tcp
By postawić kropkę nad i proponuję zrestarrtować system i odświeżyć stronę Prometheusa. Ujrzymy na wykresie nie tylko restart usługi:

Jeśli zechcemy się wysilić i wykonamy powyższe zapytanie delikatnie zmodyfikowane:
- rate(promhttp_metric_handler_requests_total[1m])
to ujrzymy przetworzone dane w postaci trendu:

Oracowane na podstawie:
- Monitoring Prometheus: Pełne ustawienie i najlepsze praktyki - https://www.glukhov.org/pl/observability/monitoring-with-prometheus/#co-to-jest-prometheus
- How to Install Prometheus on Ubuntu 22.04 - https://www.cherryservers.com/blog/install-prometheus-ubuntu
- First steps with Prometheus - https://prometheus.io/docs/introduction/first_steps/
- Installing and Configuring Prometheus on AlmaLinux 9 - https://reintech.io/blog/installing-configuring-prometheus-almalinux-9
- Install and Configure Firewalld on Ubuntu 24.04 / 22.04 - https://computingforgeeks.com/install-and-use-firewalld-on-ubuntu/