15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
30.10.2024
2 +1

Sistemul de Monitorizare Prometheus: Ghid Complet de Configurare pentru Monitorizarea Infrastructurii și Aplicațiilor

Pe măsură ce infrastructura modernă crește în complexitate — cuprinzând microservicii, containere și sisteme distribuite — monitorizarea robustă nu mai este opțională. Este o cerință fundamentală pentru menținerea performanței, fiabilității și scalabilității. Prometheus, un set de instrumente open-source pentru monitorizare și alertare, a devenit una dintre cele mai adoptate soluții pentru colectarea și vizualizarea metricilor de tip time-series în medii diverse.

Dezvoltat inițial de SoundCloud și acum un proiect absolvit al Cloud Native Computing Foundation (CNCF), Prometheus este de încredere pentru echipele de inginerie din întreaga lume. Acest ghid cuprinzător acoperă tot ce trebuie să știți: ce este Prometheus, cum funcționează, componentele sale de bază și un proces complet de configurare pas cu pas — inclusiv Node Exporter, dashboard-uri Grafana și configurarea alertelor.

Ce Este Prometheus?

Prometheus este un sistem de monitorizare open-source puternic, conceput pentru a colecta, stoca și interoga date de tip time-series — măsurători sau evenimente urmărite în timp cu marcaje temporale de înaltă rezoluție. Permite echipelor să vizualizeze starea de sănătate a sistemului, să analizeze tendințele și să declanșeze alerte inteligente înainte ca problemele minore să escaladeze în întreruperi critice.

Caracteristici Cheie ale Prometheus

CaracteristicăDescriere
Model de Date Time-SeriesMetricile sunt stocate ca secvențe cu marcaje temporale, permițând analiza tendințelor și comparații istorice
Monitorizare Pull-BasedPrometheus colectează activ metrici de la endpoint-urile țintă, în loc să aștepte ca sistemele să trimită date
PromQLUn limbaj de interogare flexibil și expresiv pentru filtrarea, agregarea și analiza metricilor în timp real
Integrare AlertmanagerDefiniți reguli bazate pe praguri și direcționați notificările către email, Slack, PagerDuty și altele
Service DiscoveryDescoperă și colectează automat date de la ținte în medii dinamice, cum ar fi clusterele Kubernetes
Date Multi-DimensionaleLabel-urile vă permit să segmentați metricile pe dimensiuni precum regiune, instanță sau numele serviciului

Aceste capabilități fac din Prometheus o alegere ideală pentru echipele care rulează sarcini de lucru pe VPS Hosting, infrastructură bare-metal sau platforme containerizate.

Cum Funcționează Prometheus

Prometheus urmează o arhitectură clară, bine definită, construită în jurul colectării și stocării datelor de tip time-series. Înțelegerea acestei arhitecturi este esențială înainte de a o implementa în producție.

Fluxul de Lucru de Bază

  1. Colectarea Metricilor (Scraping): Prometheus trimite periodic cereri HTTP către endpoint-urile țintă configurate — cunoscute sub numele de *exporters* — pentru a colecta metrici. Intervalul de scraping este pe deplin configurabil.
  1. Stocare Time-Series: Metricile colectate sunt persistate în baza de date time-series (TSDB) integrată a Prometheus. Fiecare punct de date poartă un marcaj temporal Unix și un set de label-uri cheie-valoare pentru identificare.
  1. Interogare cu PromQL: Inginerii folosesc PromQL pentru a interoga metricile stocate, a genera grafice, a construi dashboard-uri sau a defini condiții de alertare bazate pe date în timp real și istorice.
  1. Pipeline de Alertare: Când o metrică depășește un prag predefinit, Prometheus declanșează o alertă către Alertmanager, care deduplică, grupează și direcționează notificările către canalele corespunzătoare.

Modelul pull-based este o alegere arhitecturală deliberată. Simplifică securitatea rețelei (țintele nu au nevoie de acces de ieșire către un server central), face configurarea transparentă și se scalează bine în medii distribuite.

Componentele de Bază ale Prometheus

Prometheus este un ecosistem modular. Fiecare componentă îndeplinește un rol specific:

1. Serverul Prometheus

Motorul central responsabil pentru colectarea datelor de la ținte, stocarea metricilor în TSDB, evaluarea regulilor de alertare și servirea API-ului PromQL și a interfeței web.

2. Exporters

Exporters sunt agenți ușori sau adaptoare care expun metrici într-un format compatibil cu Prometheus. Exporters cheie includ:

  • Node Exporter — Colectează metrici la nivel de hardware și OS: CPU, memorie, I/O disc, debit de rețea, utilizare filesystem
  • Blackbox Exporter — Sondează endpoint-uri externe prin HTTP, HTTPS, DNS, TCP și ICMP pentru disponibilitate și latență
  • Exporters pentru Baze de Date — Există exporters dedicate pentru PostgreSQL, MySQL, Redis, MongoDB și multe altele
  • Exporters Specifice Aplicațiilor — Majoritatea aplicațiilor și framework-urilor moderne expun un endpoint /metrics nativ

3. Alertmanager

Gestionează ciclul complet de alertare: primirea alertelor de la Prometheus, deduplicarea și gruparea acestora, aplicarea regulilor de silențiere și inhibiție, și direcționarea notificărilor către receptori precum Slack, email, PagerDuty sau OpsGenie.

4. PromQL (Prometheus Query Language)

Un limbaj de interogare funcțional construit special pentru date de tip time-series. PromQL suportă vectori instantanei, vectori de interval, operatori de agregare, funcții matematice și subinterogări — oferindu-vă o putere analitică profundă asupra metricilor dvs.

5. Pushgateway

Conceput pentru job-uri efemere sau batch care nu pot fi colectate direct (de ex., un cron job care rulează timp de 30 de secunde). Aceste job-uri își trimit metricile către Pushgateway, pe care Prometheus îl colectează ulterior la intervalul său obișnuit.

6. Grafana

Deși nu face parte din Prometheus în sine, Grafana este stratul de vizualizare de facto pentru datele Prometheus. Se conectează la Prometheus ca sursă de date și permite crearea de dashboard-uri bogate și interactive cu panouri, variabile și adnotări.

Configurarea Prometheus Pas cu Pas pe Linux

Următorul ghid vă conduce printr-o implementare completă Prometheus pe un server Linux, inclusiv Node Exporter pentru metrici de sistem, Grafana pentru vizualizare și Alertmanager pentru notificări.

> Cerințe preliminare: Un server Linux (Ubuntu 20.04/22.04 sau CentOS/RHEL 8+), acces sudo sau root, și familiaritate de bază cu linia de comandă. Dacă aveți nevoie de un mediu server fiabil, luați în considerare AlexHost VPS Hosting pentru o fundație performantă și cu latență redusă.

Pasul 1: Instalați Prometheus

Descărcați și extrageți cea mai recentă versiune Prometheus:

wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
tar -xvf prometheus-2.47.0.linux-amd64.tar.gz
cd prometheus-2.47.0.linux-amd64

> Sfat: Verificați întotdeauna pagina oficială de versiuni Prometheus pentru cea mai recentă versiune stabilă înainte de descărcare.

Creați un utilizator de sistem dedicat și structura de directoare:

sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus /var/lib/prometheus
sudo cp prometheus promtool /usr/local/bin/
sudo cp -r consoles console_libraries /etc/prometheus/
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus

Creați un serviciu systemd pentru Prometheus:

sudo nano /etc/systemd/system/prometheus.service

Inserați următorul conținut:

[Unit]
Description=Prometheus Monitoring System
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.console.templates=/etc/prometheus/consoles 
  --web.console.libraries=/etc/prometheus/console_libraries 
  --storage.tsdb.retention.time=30d

[Install]
WantedBy=multi-user.target

Activați și porniți Prometheus:

sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus

Prometheus va fi acum accesibil la http://your-server-ip:9090.

Pasul 2: Configurați Prometheus

Fișierul de configurare principal este /etc/prometheus/prometheus.yml. Acest fișier definește setările globale și țintele de scraping pe care Prometheus le monitorizează.

Exemplu de configurare de bază:

global:
  scrape_interval: 15s        # Default scrape frequency
  evaluation_interval: 15s    # How often alerting rules are evaluated
  scrape_timeout: 10s

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - localhost:9093

rule_files:
  - "/etc/prometheus/rules/*.yml"

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

După modificarea acestui fișier, validați întotdeauna configurația înainte de repornire:

promtool check config /etc/prometheus/prometheus.yml
sudo systemctl restart prometheus

Pasul 3: Instalați Node Exporter pentru Metrici de Sistem

Node Exporter expune metrici detaliate de hardware și OS de la sistemul gazdă — esențiale pentru monitorizarea încărcării CPU, presiunii memoriei, utilizării discului și debitului de rețea.

Descărcați și instalați Node Exporter:

wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar -xvf node_exporter-1.6.1.linux-amd64.tar.gz
sudo cp node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/
sudo useradd --no-create-home --shell /bin/false node_exporter
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Creați un serviciu systemd pentru Node Exporter:

sudo nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter

Node Exporter expune acum metrici la http://your-server-ip:9100/metrics.

Adăugați Node Exporter ca țintă de scraping în prometheus.yml:

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node_exporter"
    static_configs:
      - targets: ["localhost:9100"]

Reporniți Prometheus și verificați că ținta apare ca UP în interfața Prometheus sub Status → Targets.

Pasul 4: Vizualizați Metricile cu Grafana

Grafana transformă metricile brute Prometheus în dashboard-uri acționabile și bogate vizual. Este stratul standard de vizualizare pentru implementările Prometheus.

Instalați Grafana pe Ubuntu/Debian:

sudo apt-get install -y apt-transport-https software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
sudo systemctl enable grafana-server
sudo systemctl start grafana-server

Conectați Prometheus ca sursă de date:

  1. Deschideți Grafana la http://your-server-ip:3000 (credențiale implicite: admin / admin)
  2. Navigați la Configuration → Data Sources → Add data source
  3. Selectați Prometheus
  4. Setați URL-ul la http://localhost:9090
  5. Faceți clic pe Save & Test

Importați un dashboard pre-construit:

  • Mergeți la Dashboards → Import
  • Introduceți ID-ul dashboard-ului 1860 (Node Exporter Full) din marketplace-ul Grafana
  • Selectați sursa de date Prometheus și faceți clic pe Import

Veți avea imediat o vizualizare cuprinzătoare a utilizării CPU, consumului de memorie, I/O disc, statisticilor de rețea și încărcării sistemului — toate într-un singur dashboard interactiv.

Pasul 5: Configurați Regulile de Alertare și Alertmanager

Alertarea Prometheus constă din două părți: reguli de alertare definite în Prometheus și Alertmanager care gestionează direcționarea și livrarea.

Creați un fișier de reguli de alertare:

sudo mkdir -p /etc/prometheus/rules
sudo nano /etc/prometheus/rules/system_alerts.yml
groups:
  - name: system_alerts
    rules:
      - alert: HighCPUUsage
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "High CPU usage on {{ $labels.instance }}"
          description: "CPU usage has exceeded 80% for more than 5 minutes. Current value: {{ $value }}%"

      - alert: LowDiskSpace
        expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 < 15
        for: 10m
        labels:
          severity: critical
        annotations:
          summary: "Low disk space on {{ $labels.instance }}"
          description: "Available disk space on / is below 15%. Immediate action required."

      - alert: HighMemoryUsage
        expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 85
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "High memory usage on {{ $labels.instance }}"
          description: "Memory usage has exceeded 85% for more than 5 minutes."

      - alert: InstanceDown
        expr: up == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Instance {{ $labels.instance }} is down"
          description: "Prometheus target {{ $labels.instance }} has been unreachable for more than 1 minute."

Validați fișierul de reguli:

promtool check rules /etc/prometheus/rules/system_alerts.yml

Instalați și configurați Alertmanager:

wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz
tar -xvf alertmanager-0.26.0.linux-amd64.tar.gz
sudo cp alertmanager-0.26.0.linux-amd64/alertmanager /usr/local/bin/
sudo mkdir /etc/alertmanager

Creați configurația Alertmanager:

sudo nano /etc/alertmanager/alertmanager.yml
global:
  smtp_smarthost: 'smtp.yourdomain.com:587'
  smtp_from: 'alerts@yourdomain.com'
  smtp_auth_username: 'alerts@yourdomain.com'
  smtp_auth_password: 'your_password'

route:
  group_by: ['alertname', 'instance']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  receiver: 'email-notifications'

receivers:
  - name: 'email-notifications'
    email_configs:
      - to: 'admin@yourdomain.com'
        send_resolved: true

> Notă: Pentru livrarea profesională de email în pipeline-ul dvs. de alertare, luați în considerare asocierea Prometheus cu AlexHost Email Hosting pentru infrastructură SMTP fiabilă.

Configurare Avansată: Service Discovery

Pentru medii dinamice — cum ar fi clusterele Kubernetes sau flotele de servere cu scalare automată — listele statice de ținte devin rapid imposibil de gestionat. Prometheus suportă multiple mecanisme de service discovery din fabrică:

scrape_configs:
  - job_name: "kubernetes-pods"
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
        action: keep
        regex: true

Backend-urile de service discovery suportate includ Kubernetes, Consul, EC2, Azure, GCE, descoperire bazată pe DNS și descoperire bazată pe fișiere — făcând Prometheus adaptabil la aproape orice topologie de infrastructură.

Cazuri de Utilizare Prometheus

Prometheus excelează într-o gamă largă de scenarii de monitorizare:

Monitorizarea Infrastructurii

Colectați metrici la nivel de server — CPU, memorie, disc, rețea — de la fiecare nod din flota dvs. Indiferent dacă rulați un singur Server Dedicat sau un cluster mare, Prometheus oferă vizibilitate unificată pe toate gazdele.

Monitorizarea Performanței Aplicațiilor (APM)

Urmăriți ratele de cereri, ratele de erori, latențele de răspuns (metoda RED) și consumul de resurse pentru aplicații web și API-uri. Bibliotecile client Prometheus sunt disponibile pentru Go, Python, Java, Ruby, Node.js și altele.

Monitorizarea Kubernetes și a Containerelor

Prometheus se integrează nativ cu Kubernetes prin exporters kube-state-metrics și cAdvisor, oferind vizibilitate profundă în starea de sănătate a pod-urilor, cotele de resurse, starea implementărilor și metricile la nivel de cluster.

Monitorizarea Bazelor de Date

Monitorizați performanța interogărilor, utilizarea pool-ului de conexiuni, decalajul de replicare și ratele de hit ale cache-ului pentru baze de date precum PostgreSQL, MySQL și Redis folosind exporters dedicate.

Metrici de Business Personalizate

Instrumentați propriile aplicații pentru a expune metrici specifice domeniului — cum ar fi comenzile procesate pe secundă, sesiunile active ale utilizatorilor sau ratele tranzacțiilor de plată — permițând observabilitate la nivel de business alături de metricile tehnice.

Monitorizarea Sarcinilor de Lucru GPU

Pentru echipele care rulează sarcini de lucru de machine learning sau calcul de înaltă performanță, Prometheus se poate integra cu exporters DCGM pentru a monitoriza utilizarea GPU, memoria și temperatura. Aceasta se potrivește bine cu AlexHost GPU Hosting pentru infrastructura AI și ML.

Prometheus vs. Soluții Alternative de Monitorizare

CaracteristicăPrometheusNagiosZabbixDatadog
Model de DateTime-series cu label-uriBazat pe verificăriBazat pe elementeTime-series cu tag-uri
Model de ColectarePull (+ Pushgateway)Verificări Active/PasiveBazat pe agentBazat pe agent
Limbaj de InterogarePromQLNiciunulPersonalizatPersonalizat
Nativ KubernetesDa (de primă clasă)LimitatLimitatDa (plătit)
CostGratuit / Open SourceGratuit / Open SourceGratuit / Open SourceSaaS Comercial
ScalabilitateRidicată (cu Thanos/Cortex)ModeratăModeratăRidicată

Cele Mai Bune Practici pentru Producție

Implementarea Prometheus în producție necesită atenție la mai multe aspecte operaționale:

  • Retenția Datelor: Perioada implicită de retenție este de 15 zile. Ajustați --storage.tsdb.retention.time în funcție de capacitatea de stocare și cerințele de conformitate. Pentru stocare pe termen lung, luați în considerare Thanos sau Cortex.
  • Securitate: Restricționați accesul la interfața web și API-ul Prometheus folosind un proxy invers (Nginx sau Caddy) cu autentificare. Prometheus nu include autentificare integrată.
  • Înaltă Disponibilitate: Rulați mai multe instanțe Prometheus care colectează de la aceleași ținte pentru redundanță. Folosiți funcția de clustering a Alertmanager pentru a preveni notificările duplicate.
  • Gestionarea Cardinalității: Evitați label-urile cu cardinalitate ridicată (de ex., ID-uri de utilizator, ID-uri de cerere) în numele metricilor, deoarece pot cauza probleme de memorie și performanță.
  • Criptare TLS: Activați TLS pentru endpoint-urile de scraping și API-ul Prometheus. Asociați aceasta cu un Certificat SSL pentru a securiza toate comunicațiile între componentele Prometheus.
  • Planificarea Resurselor: Prometheus este intensiv în memorie. Alocați suficient RAM în funcție de numărul de serii de timp active. O regulă generală este aproximativ 1–2 bytes per eșantion în memorie.

Întrebări Frecvente

Î: Care este diferența dintre Prometheus și Grafana?

Prometheus este backend-ul de monitorizare și alertare — colectează, stochează și interoghează metrici. Grafana este un frontend de vizualizare care se conectează la Prometheus (și alte surse de date) pentru a reda dashboard-uri. Sunt instrumente complementare, nu alternative.

Î: Poate Prometheus să monitorizeze servere Windows?

Da. Windows Exporter (fostul WMI Exporter) expune metricile sistemului Windows într-un format compatibil cu Prometheus, acoperind CPU, memorie, disc, rețea, IIS și altele.

Î: Cum gestionează Prometheus înalta disponibilitate?

Prometheus în sine este conceput să ruleze ca o singură instanță per cluster. Pentru HA, rulați două servere Prometheus identice care colectează de la aceleași ținte. Alertmanager suportă clustering nativ pentru a deduplica alertele de la mai multe instanțe Prometheus.

Î: Pentru ce este folosit PromQL?

PromQL (Prometheus Query Language) este folosit pentru a interoga datele de tip time-series stocate în Prometheus. Suportă interogări instantanee, interogări de interval, agregări, operații matematice și funcții — permițând totul, de la căutări simple de metrici până la expresii complexe de detectare a anomaliilor.

Concluzie

Prometheus este o soluție de monitorizare testată în luptă, de grad producție, care oferă vizibilitate profundă și în timp real asupra sănătății și performanței întregului dvs. stack de infrastructură. Arhitectura sa pull-based, modelul de date multi-dimensional, limbajul de interogare PromQL puternic și integrările perfecte cu instrumente precum Grafana și Alertmanager îl fac standardul de aur pentru observabilitatea modernă.

Indiferent dacă monitorizați un singur server Linux, o flotă de Servere Dedicate, un cluster Kubernetes sau o aplicație complexă de microservicii, Prometheus se scalează pentru a satisface nevoile dvs. Urmând pașii din acest ghid — instalând Prometheus, implementând Node Exporter, configurând dashboard-uri Grafana și configurând reguli de alertare inteligente — veți avea o fundație robustă de monitorizare care vă ajută să detectați anomaliile devreme, să răspundeți mai rapid la incidente și să îmbunătățiți continuu fiabilitatea sistemului.

Începeți cu elementele de bază, iterați pe dashboard-urile și pragurile de alertare pe măsură ce învățați comportamentul normal al sistemului dvs. și extindeți progresiv acoperirea la fiecare strat al stack-ului dvs. Prometheus nu este doar un instrument de monitorizare — este o piatră de temelie a ingineriei moderne de fiabilitate a site-urilor.

15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți