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.
- Yükləmə və işə salma (Linux üçün nümunə) 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:
# 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
# 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:
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:
./prometheus --config.file=prometheus.ymlVə 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ı:
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:
- 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.
http_requests_total{method="POST", handler="/api"} 1234
node_memory_Active_bytes 2.5e+09Belə 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.
- Servis daha gec cavab verməyə başlayanda 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.
- Səhvlərin sayı artanda 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.
- Kubernetes-də Prometheus – ümumiyyətlə məcburi minimumdur Ə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
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.