diff --git a/Docker/Dev/config.alloy b/Docker/Dev/config.alloy new file mode 100644 index 0000000..7b1d0d8 --- /dev/null +++ b/Docker/Dev/config.alloy @@ -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" + } +} diff --git a/Docker/Dev/docker-compose.yml b/Docker/Dev/docker-compose.yml index 7463fd6..9d86fbc 100644 --- a/Docker/Dev/docker-compose.yml +++ b/Docker/Dev/docker-compose.yml @@ -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: diff --git a/Docker/Dev/grafana/provisioning/datasources/loki.yml b/Docker/Dev/grafana/provisioning/datasources/loki.yml new file mode 100644 index 0000000..5aac727 --- /dev/null +++ b/Docker/Dev/grafana/provisioning/datasources/loki.yml @@ -0,0 +1,10 @@ +apiVersion: 1 + +datasources: + - name: Loki + type: loki + access: proxy + url: http://loki:3100 + isDefault: true + jsonData: + maxLines: 1000 diff --git a/Docker/Dev/loki-config.yml b/Docker/Dev/loki-config.yml new file mode 100644 index 0000000..d243ce5 --- /dev/null +++ b/Docker/Dev/loki-config.yml @@ -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 diff --git a/Docker/Prod/config.alloy b/Docker/Prod/config.alloy new file mode 100644 index 0000000..3e10e34 --- /dev/null +++ b/Docker/Prod/config.alloy @@ -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" + } +} diff --git a/Docker/Prod/docker-compose.yml b/Docker/Prod/docker-compose.yml index e27e77d..d9744a2 100644 --- a/Docker/Prod/docker-compose.yml +++ b/Docker/Prod/docker-compose.yml @@ -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: diff --git a/Docker/Prod/grafana/provisioning/datasources/loki.yml b/Docker/Prod/grafana/provisioning/datasources/loki.yml new file mode 100644 index 0000000..5aac727 --- /dev/null +++ b/Docker/Prod/grafana/provisioning/datasources/loki.yml @@ -0,0 +1,10 @@ +apiVersion: 1 + +datasources: + - name: Loki + type: loki + access: proxy + url: http://loki:3100 + isDefault: true + jsonData: + maxLines: 1000 diff --git a/Docker/Prod/loki-config.yml b/Docker/Prod/loki-config.yml new file mode 100644 index 0000000..d243ce5 --- /dev/null +++ b/Docker/Prod/loki-config.yml @@ -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