129 oxunuşlar

Prometheus ilə Qolanq Xidmətlərinə Nəzarət: Çək və Push Modelləri Arasında Seçim

tərəfindən Ilia Ivankin5m2025/03/02
Read on Terminal Reader

Çox uzun; Oxumaq

Prometheus tətbiqlərdən ədədi məlumatları (ölçmələri) toplayan və emal edən güclü monitorinq sistemidir. O, aşağıdakı kimi əsas göstəriciləri izləməyə kömək edir: xidmətiniz tərəfindən idarə olunan sorğuların sayı. Hər sorğu üçün cavab müddəti. Yaddaş və CPU istifadəsi. Sistemdə baş verən səhvlər.
featured image - Prometheus ilə Qolanq Xidmətlərinə Nəzarət: Çək və Push Modelləri Arasında Seçim
Ilia Ivankin HackerNoon profile picture
0-item
1-item

Prometey nədir və ona niyə ehtiyacınız var?

Prometheus tətbiqlərdən ədədi məlumatları (metrikalar) toplayan və emal edən güclü monitorinq sistemidir. Bu kimi əsas göstəriciləri izləməyə kömək edir:


  • Xidmətiniz tərəfindən idarə olunan sorğuların sayı.
  • Hər sorğu üçün cavab müddəti.
  • Yaddaş və CPU istifadəsi.
  • Sistemdə baş verən səhvlərin sayı.


Prometheus istifadə edərək, aşağıdakı kimi kritik suallara cavab verə bilərsiniz:

  • "Xidmətim səmərəli işləyirmi?"

  • "Performans darboğazları nələrdir?"

  • "İnfrastrukturumuzu genişləndirməliyikmi?"


Prometey Metrikləri necə toplayır?

Prometeyin məlumat toplamasının iki əsas yolu var:

  1. Çəkmə modeli – Prometheus öz ölçüləri üçün xidmətləri aktiv şəkildə sorğulayır.
  2. Push model (Pushgateway) – Xidmətlər öz ölçülərini Prometeyin topladığı vasitəçiyə itələyir.


Gəlin onları parçalayaq.


Çəkmə Modeli

Çəkmə modelində Prometheus HTTP vasitəsilə tətbiqinizdən metrikləri aktiv şəkildə alır (məsələn, http://your-service:8080/metrics ).

Bu standart və ən çox istifadə edilən üsuldur.

Qolanq ilə Prometeyin qurulması (Çəkmə Modeli)

  1. Lazımi kitabxanaları quraşdırın:

     go get github.com/prometheus/client_golang/prometheus go get github.com/prometheus/client_golang/prometheus/promhttp


  2. Metriklərinizi müəyyənləşdirin (məsələn, HTTP sorğularının hesablanması):

     import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" ) var httpRequestsTotal = promauto.NewCounter(prometheus.CounterOpts{ Name: "http_requests_total", Help: "Total number of HTTP requests", })


  3. /metrics son nöqtəsini ifşa edin :

     import ( "net/http" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { http.Handle("/metrics", promhttp.Handler()) }


  4. prometheus.ymlxidmətinizdən ölçüləri silmək üçün Prometheus-u konfiqurasiya edin :

     scrape_configs: - job_name: "example_service" static_configs: - targets: ["localhost:8080"]


İndi Prometheus məlumat toplamaq üçün bir neçə saniyədən bir avtomatik olaraq http://localhost:8080/metrics sorğusu göndərəcək.

Nə üçün Pull Modelinə üstünlük verilir?

  • Sadəlik - Prometey qırıntı cədvəlinə və tezliyinə nəzarət edir.
  • Daha az uğursuzluq nöqtəsi – Metrikləri qəbul etmək üçün əlavə xidmətə ehtiyac yoxdur.
  • Avtomatik təmizləmə – Xidmət cavab verməyi dayandırarsa, Prometheus köhnəlmiş ölçülərdən qaçaraq sadəcə məlumat qəbulunu dayandırır.



Push Model (Pushgateway Approach)

itələyin!


Təkan modelində xidmət öz ölçülərini Pushgateway adlı vasitəçi xidmətə göndərir və bu xidmət onları Prometey onları alana qədər saxlayır.

Necə işləyir (Push Model)

  1. Tətbiqiniz ölçüləri Pushgateway-ə itələyir :

     import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/push" ) func main() { registry := prometheus.NewRegistry() jobCounter := prometheus.NewCounter(prometheus.CounterOpts{ Name: "job_execution_count", Help: "Number of executed jobs", }) registry.MustRegister(jobCounter) jobCounter.Inc() err := push.New("http://localhost:9090", "my_service_or_job"). Collector(jobCounter). Grouping("instance", "worker_1"). Push() if err != nil { panic(err) } }


  2. Pushgateway-dən məlumat toplamaq üçün Prometheus-u konfiqurasiya edin:

     scrape_configs: - job_name: "pushgateway" static_configs: - targets: ["localhost:9091"]

Push Modeli Faydalı Nə Zamandır?

  • Prometey onları qırmadan əvvəl tamamlanan qısamüddətli işlər (toplu tapşırıqlar, cron işləri) .
  • Prometheusun xidmətə birbaşa daxil ola bilmədiyi şəbəkə məhdudiyyətləri .
  • Birbaşa qırıla bilməyən xarici məlumat mənbələri (IoT cihazları, xarici API-lər).


Hansı Modeldən İstifadə Etməlisən?

Metod

Üçün ən yaxşısı...

Pros

Eksiler

Çək (tövsiyə olunur)

Veb xidmətləri, API-lər, uzun müddət işləyən proqramlar

Sadə quraşdırma, daha az asılılıq, avtomatik təmizləmə

Çox qısa müddətli işlər üçün uyğun deyil

Push (Pushgateway)

Toplu işlər, sabit şəbəkə girişi olmayan tapşırıqlar

Qısa müddətli işlərdən məlumatları itələmək imkanı verir

Köhnə məlumatlar, əlavə mürəkkəblik, darboğaz riski

Push Model niyə ideal deyil?

Pushgateway bəzi problemləri həll etsə də (məsələn, Prometey onları sıyırmazdan əvvəl başa çatan qısa müddətli proseslər), bir neçə yeni məsələ təqdim edir :


  1. Köhnə məlumatları idarə etmək çətindir
    • Xidmət ölürsə, onun köhnə göstəriciləri Pushgateway-də qalır.

    • Prometeyin xidmətin hələ də işlək olub olmadığını bilmək imkanı yoxdur.

    • push.Delete(...) istifadə edərək köhnəlmiş ölçüləri əl ilə silməli və ya müddətin bitmə siyasətlərini konfiqurasiya etməlisiniz.


  2. Əlavə mürəkkəblik
    • Birbaşa Xidmət → Prometheus linki əvəzinə indi sizdə Xidmət → Pushgateway → Prometheus var.

    • Pushgateway əlavə asılılıqdır və texniki xidmət yükünü artırır.


  3. Potensial darboğazlar
    • Bir çox xidmətlər ölçüləri tez-tez təkan edərsə, Pushgateway həddindən artıq yüklənə bilər.

    • Birbaşa Prometheus qırıntılarından (yükü paylayan) fərqli olaraq, bütün sorğular tək Pushgateway instansiyasına çatdı.


  4. Məlumatların ardıcıllığı problemləri
    • Birdən çox xidmət eyni ada malik, lakin fərqli dəyərləri olan ölçüləri təkan edərsə, məlumatların üzərinə yazıla bilər və bu, yanlış nəticələrə səbəb ola bilər.



Nəticə

Prometheus monitorinq xidmətləri üçün güclü və etibarlı vasitədir. Əksər proqramlar üçün çəkmə modeli ən yaxşı seçimdir – sadə, səmərəli və əlavə mürəkkəblik olmadan təzə məlumatı təmin edir. Bununla belə, Lambda funksiyaları və ya toplu işlər kimi qısamüddətli proseslərlə işləyirsinizsə, Pushgateway vasitəsilə təkan modeli proses bitməzdən əvvəl ölçüləri tutmaq üçün faydalı ola bilər.


Düzgün yanaşmanın seçilməsi sisteminizin daha yaxşı müşahidə oluna bilməsini və davamlılığını təmin edir.


Diqqət edin!

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks