feat: add Grafana, Loki, and Alloy services to Docker configuration for monitoring

This commit is contained in:
Juan Felipe Zapata Moreno 2026-03-30 12:45:11 -06:00
parent b17b6608d3
commit ebd91ad070
8 changed files with 225 additions and 0 deletions

25
Docker/Dev/config.alloy Normal file
View File

@ -0,0 +1,25 @@
logging {
level = "info"
format = "logfmt"
}
// Descubrir archivos de log
local.file_match "laravel_logs" {
path_targets = [
{ __path__ = "/var/log/repuve/padron-estatal.log", job = "padron_estatal", env = "dev" },
{ __path__ = "/var/log/repuve/repuve-nacional.log", job = "repuve_nacional", env = "dev" },
]
}
// Leer los archivos
loki.source.file "laravel_reader" {
targets = local.file_match.laravel_logs.targets
forward_to = [loki.write.local.receiver]
}
// Enviar a Loki
loki.write "local" {
endpoint {
url = "http://loki:3100/loki/api/v1/push"
}
}

View File

@ -65,9 +65,59 @@ services:
timeout: 15s
retries: 10
alloy:
image: grafana/alloy:latest
command:
- run
- /etc/alloy/config.alloy
- --server.http.listen-addr=0.0.0.0:12345
ports:
- "12345:12345"
volumes:
- ./config.alloy:/etc/alloy/config.alloy
- ../../storage/logs:/var/log/repuve:ro
networks:
- repuve-network
restart: unless-stopped
depends_on:
- repuve-backend
- loki
loki:
image: grafana/loki:latest
ports:
- "3100:3100"
volumes:
- ./loki-config.yml:/etc/loki/local-config.yaml
- loki_data:/loki
command: -config.file=/etc/loki/local-config.yaml
networks:
- repuve-network
restart: unless-stopped
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
networks:
- repuve-network
restart: unless-stopped
depends_on:
- loki
volumes:
mysql_data:
driver: local
loki_data:
driver: local
grafana_data:
driver: local
networks:
repuve-network:

View File

@ -0,0 +1,10 @@
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
url: http://loki:3100
isDefault: true
jsonData:
maxLines: 1000

View File

@ -0,0 +1,29 @@
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
limits_config:
reject_old_samples: false

25
Docker/Prod/config.alloy Normal file
View File

@ -0,0 +1,25 @@
logging {
level = "warn"
format = "logfmt"
}
// Descubrir archivos de log
local.file_match "laravel_logs" {
path_targets = [
{ __path__ = "/var/log/repuve/padron-estatal.log", job = "padron_estatal", env = "prod" },
{ __path__ = "/var/log/repuve/repuve-nacional.log", job = "repuve_nacional", env = "prod" },
]
}
// Leer los archivos
loki.source.file "laravel_reader" {
targets = local.file_match.laravel_logs.targets
forward_to = [loki.write.local.receiver]
}
// Enviar a Loki
loki.write "local" {
endpoint {
url = "http://loki:3100/loki/api/v1/push"
}
}

View File

@ -63,9 +63,56 @@ services:
timeout: 15s
retries: 10
alloy:
image: grafana/alloy:latest
command:
- run
- /etc/alloy/config.alloy
- --server.http.listen-addr=0.0.0.0:12345
ports:
- "127.0.0.1:12345:12345"
volumes:
- ./config.alloy:/etc/alloy/config.alloy
- ../../storage/logs:/var/log/repuve:ro
networks:
- repuve-network
restart: unless-stopped
depends_on:
- repuve-backend
- loki
loki:
image: grafana/loki:latest
ports:
- "127.0.0.1:3100:3100"
volumes:
- ./loki-config.yml:/etc/loki/local-config.yaml
- loki_data:/loki
command: -config.file=/etc/loki/local-config.yaml
networks:
- repuve-network
restart: unless-stopped
grafana:
image: grafana/grafana:latest
ports:
- "127.0.0.1:3000:3000"
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
networks:
- repuve-network
restart: unless-stopped
depends_on:
- loki
volumes:
mysql_data:
driver: local
loki_data:
driver: local
grafana_data:
driver: local
networks:
repuve-network:

View File

@ -0,0 +1,10 @@
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
url: http://loki:3100
isDefault: true
jsonData:
maxLines: 1000

View File

@ -0,0 +1,29 @@
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
limits_config:
reject_old_samples: false