Haqqımda Təcrübə Bacarıqlar Blog
Geri qayıdın

Prometheus nədir və niyə onu məcburi alət hesab edirəm?

Mikroservislər və Kubernetes ilə işləməyə başladığım zaman monitorinq ikinci dərəcəli bir şey kimi görünürdü. Əsas olan, servisin işə düşməsi, cavab verməsi və çətinlik yaratmaması idi. Amma zaman keçdikcə başa düşdüm ki normal metrikalar olmadan sən gecə avtomagistralda farasız sürən avtomobil kimi olursan. Sürə bilərsən, amma nə qədər uzağa gedə bilərsən?

Mənə "işığı yandırmaqda" kömək edən ilk alətlərdən biri Prometheus oldu.

Bu məqalədə sizə onun sadə sözlərlə nə olduğunu, necə quraşdırılacağını və niyə mənim tez-tez məhz onu seçdiyimi danışmaq istəyirəm.

Prometheus – sadə və güclüdür

Prometheus - servislərdən metrikaları toplayan, saxlayan və gözəl qrafiklərin vasitəsilə (adətən Grafana ilə) vizuallaşdırmaq imkan yaradan monitorinq sistemidir.

Daha sadə desək, prometheus, proqramınızda hal-hazırda nə baş verdiyini, harada ləngiyəcəyini, harada səhvlərin artdığını və serverin niyə "load" başladığını anlamağa kömək edir.

Prometheus-da mənə onun böyük resurslar tələb etməməsi, asanlıqla işə salınması və çox tez nəticə verməsi xoş gəlir. İlk addımlar üçün bir konfiqurasiya faylı kifayətdir.

Prometheus-u quraşdıraq

Praktiki Başlanğıc: Prometheus-u 5 dəqiqədə quraşdırıb yoxlayaq

Prometheus-un gözəlliyi onun cəld işə salınmasındadır. İndi sizə əsasları göstərim.

  1. Yükləmə və işə salma (Linux üçün nümunə)
  2. Birbaşa rəsmi saytdan yükləyə bilərsiniz: Prometheus rəsmi GitHub səhifəsindən asanlıqla yüklənə bilər. Ən son versiyanı yükləmək üçün aşağıdakı addımları yerinə yetirin:
bash
# 1. Ən son versiyanın yüklənməsi üçün linki GitHub-dan götürün
# Və ya birbaşa bu komanda ilə son stabil versiyanı yükləyin:
LATEST=$(curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest | grep -oP '"tag_name": "\K(.*?)(?=")')
wget https://github.com/prometheus/prometheus/releases/download/${LATEST}/prometheus-${LATEST:1}.linux-amd64.tar.gz 
# 2. Arxivdən çıxarın
tar xvfz prometheus-${LATEST:1}.linux-amd64.tar.gz 
# 3. Qovluğa daxil olun
cd prometheus-${LATEST:1}.linux-amd64/

Əgər skript istifadə etmək istəmirsinizsə, Prometheus Downloads səhifəsinə keçid edib ən son versiyanı manual yükləyə bilərsiniz.

ALTERNATİV (Daha sadə yol):

Əgər siz sadəcə təcrübə etmək istəyirsinizsə və ən son versiya vacib deyilsə, konkret versiyanı göstərə bilərik

bash
# Prometheus-u yükləyirik
wget https://github.com/prometheus/prometheus/releases/download/v3.7.0/prometheus-3.7.0.linux-amd64.tar.gz
tar xvfz prometheus-3.7.0.linux-amd64.tar.gz
cd prometheus-3.7.0.linux-amd64/

2. Konfiqurasiya faylı: prometheus.yml

Prometheus-un "beynini" bu sadə YAML faylı təşkil edir. İlk öyrənmə üçün bu kifayətdir:

yaml
global:
  scrape_interval: 15s # Hər 15 saniyədən bir metrikaları toplayır

scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090'] # Prometheus özünü monitor edir
- job_name: 'node'
static_configs:
- targets: ['localhost:9100'] # node_exporter üçün ünvan

3. Servisi işə salmaq:

bash
./prometheus --config.file=prometheus.yml

Və budur! İndi http://localhost:9090 ünvanına daxil olub, özünüzü monitor edən Prometheus-u görə bilərsiniz. http://localhost:9090/targets səhifəsində target-lərin vəziyyətini yoxlaya bilərsiniz.

4. İlk metrikaları əldə etmək: node_exporter

Serverinizin öz metrikalarını (CPU, yaddaş, disk) görmək üçün node_exporter quraşdırmalısınız. O, Prometheus-un başa düşəcəyi formatda sistem metrikalarını verir.

Quraşdırılması:

bash
wget https://github.com/prometheus/node_exporter/releases/download/v1.10.2/node_exporter-1.10.2.linux-amd64.tar.gz
tar xvfz node_exporter-1.10.2.linux-amd64.tar.gz
cd node_exporter-1.10.2.linux-amd64/
./node_exporter

İndi prometheus.yml-ə əlavə etdiyiniz localhost:9100 target-i yaşıl rəngdə (UP) görünməlidir.

Prometheus metrikaları necə toplayır (və niyə bu rahatdır)

Prometheus "mən özüm sənin yanına gələrəm" prinsipi ilə işləyir. Yəni o, proqramın məlumat göndərməsini gözləmir, özü daim olaraq servisləri sorğulayır.

Bu model mənə iki səbəbə görə xoş gəlir:

  1. Sən həmişə kimin günahkar olduğunu başa düşürsən. Əgər Prometheus metrikaları toplaya bilmirsə, problem ya endpoint-də, ya da şəbəkədədir – hər şey tam aydındır[*]Servis dayana bilər və yenidən işə düşə bilər, və servis yenidən işə düşəndə, Prometheus yenidən onu özü sorğulayacaq.
Metrikalar isə sadəcə text formatındadır:
bash
http_requests_total{method="POST", handler="/api"} 1234
node_memory_Active_bytes 2.5e+09

Belə minimalizm və labels vasitəsilə mürəkkəb sorğuların qurulması mənim çox xoşuma gəlir.

Prometheus harada real kömək edir


Son zamanlar mənim Prometheus-un həqiqətən dəqiqələr ərzində xilas etdiyi bir neçə vəziyyətim oldu.

  1. Servis daha gec cavab verməyə başlayanda
  2. Latency-də P95 qrafikində tullanma gördüm və dərhal hansı endpoint-in ləngiyindiyini başa düşdüm. Metrikalar olmasa bu saatlar ala bilərdi.
  3. Səhvlərin sayı artanda
  4. rate(http_requests_total{code="500"}[5m]) kimi bir sorğu ilə xüsusilə mikroservislərdə səhv mənbəyini tapmaq daha asan olur.
  5. Kubernetes-də Prometheus – ümumiyyətlə məcburi minimumdur
  6. Əgər klasteriniz varsa – Prometheus faktiki olaraq standartdır. kube-prometheus stack-i ilə hər şeyi görə bilərsiniz: 3.1 pod-ların restart olmağı, 3.2 resurslardan istifadə, 3.3 limitlər, 3.4 problemli nodelar.

Hansı analoqlar mövcuddur

  • VictoriaMetrics
  • Çox sürətli, resurslara qənaət edən sistemdir. Prometheus-u demək olar heç bir dəyişiklik olmadan əvəz etmək imkanına görə onu sevirəm.
  • Datadog / New Relic / Dynatrace
  • İstəyən şirkətlər üçün ideal həllərdir. Amma qiymət, ayrıca bir hekayədir, startap və ev layihələri üçün deyil.
  • Zabbix
  • Bu alət bir zamanlar populyar idi və hələ də serverlər üçün yaxşı işləyir. Amma mikroservislər üçün bir az çətindir
Beləliklə Prometheus başlanğıc üçün mükəmməldir və layihə böyüdükdə aktual qalır. Xüsusilə də Grafana ilə birləşdikə, vizuallaşdırma sadəcə mükəmməldir. Prometheus-u mənbə kimi əlavə edib, ilk dashboard-unuzu 10 dəqiqəyə qura bilərsiniz. Əgər siz yeni DevOps, Kubernetes işləməyə başlayırsınızsa – Prometheus müşahidə dünyasına doğru və əla ilk addım olacaq.

Yuxarıdakı quraşdırma nümunəsi ilə bir neçə dəqiqə ərzində işə başlaya və öz serverinizin necə "nəfəs aldığını" görə bilərsiniz.

Özüm də bu yoldan keçmişəm, əvvəlcə monitorinqin o qədər də vacib olmadığı görünür, amma bir dəfə qrafik vasitəsilə problemi tutduqdan sonra bunun nə qədər güclü alət olduğunu başa düşürsən.

#prometheus #node_exporter #grafana