Tfe

Ongi etorri tfe-ren webgunera...

2026-01-02-ean

Grafana, Prometheus, Alloy eta Loki

Aspalditik nahi izan dut Grafana probatu, baina ez dut inoiz denbora hartu. Orain, oporretan nagoenez, probat egin dut, eta oso pozik nago emaitzarekin.

 

Zer dira metrikak eta Zertarako balio duen Prometheusek?

Metrikak denborarekin lotutako zenbakiak dira. Hau da, sistema baten ezaugarri bat neurtzen duzunean, balioa eta denbora-zigilua gordetzen du. 

Adibidez, CPU metrika batean zenbaki horiek izango ditugu:

CPU erabilera: 5% - Noiz? 2026-01-02 10:02:00-an
CPU erabilera: 7% - Noiz? 2026-01-02 10:02:20-an
CPU erabilera: 5.5% - Noiz? 2026-01-02 10:05:00-an

Prometheus zerbitzari bat da metrikak bildu eta gordetzeko. Adibidez, zure cpu kontsumoa neurtu nahi baldin baduzu, prometheus erabiliko duzu datuak segundu bakoitzean gordetzeko.

Eta Grafana?

Grafana tresna bat da metriketan oinarritutako grafikoak eta panelak sortzeko. Horrez gain, metrika horietan oinarritutako jakinarazpenak konfiguratzeko aukera ematen du.
Baina kontuz, Grafanak ez du metrikak sortzen ezta gordetzen: Iturriak irakurtzen ditu grafikoak sortzeko.

Eta Loki?

Erakurri duzun bezala, Prometheusek metrikak kudeatzen ditu, baina ezin ditu log-daturik gorde. Behar hori asetzeko sortu zuten  loki: logak bildu, kudeatu, eta gordetzeko.

Grafana Alloy

Alloy grafanaren zerbitzari bat da datuak irakurri, kudeatu, eta gordetzeko.

 

Docker-compose

Serbitzari hauek guztiak instalatzeko docker-compose.yml artxiboa erabiliko dugu docker irudiak sortzeko. Zerbitzari bakoitza bere dockera izango du horrela.

networks:
  frontend:
    driver: bridge

services:

  # Grafana basic
  grafana:
    container_name: grafana
    image: grafana/grafana-enterprise
    hostname: grafana
    volumes:
      - grafana_data:/var/lib/grafana
    networks:
    - frontend

  # Node exporter ,for Metrics from the server
  node-exporter:
    container_name: node-exporter
    image: prom/node-exporter
    restart: unless-stopped
    hostname: node-exporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    expose:
      - 9100
    networks:
      - frontend
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    

  # Prometheus to read node-exporter logs and send
  prometheus:
    container_name: prometheus
    image: prom/prometheus
    hostname: prometheus
    volumes:
      - ./data/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    networks:
      - frontend

  # Grafana loki , to receive log files
  loki:
    container_name: loki
    image: grafana/loki
    hostname: loki
    volumes:
      - loki_data:/loki
    networks:
    - frontend

  # Alloy - to send logs to Loki
  alloy:
    container_name: alloy
    image: grafana/alloy
    hostname: alloy
    volumes:
      - ./data/config.alloy:/etc/alloy/config.alloy
      - alloy_data:/var/lib/alloy/data
      - /var/log:/var/log/:ro
    networks:
    - frontend

volumes:
        prometheus_data:
        grafana_data:
        loki_data:
        alloy_data:

Tags: Linux