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:
Tfe