summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-04-01 17:21:15 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-04-01 17:21:15 +0900
commit7388b83e7aac55ec7d8872ce58794b29b33c6522 (patch)
treeeba444fed0e10963e86232f4c172225e0d7ab947
parent3c880c4de185aa44c3672687497aea269bbec220 (diff)
feat(monitoring): add Loki + Promtail for log aggregation
-rw-r--r--docker-compose.yml21
-rw-r--r--monitoring/grafana/provisioning/datasources/prometheus.yaml14
-rw-r--r--monitoring/loki/loki-config.yaml28
-rw-r--r--monitoring/promtail/promtail-config.yaml19
4 files changed, 82 insertions, 0 deletions
diff --git a/docker-compose.yml b/docker-compose.yml
index 473e2bc..c55b83b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -103,6 +103,26 @@ services:
retries: 3
restart: unless-stopped
+ loki:
+ image: grafana/loki:latest
+ profiles: ["monitoring"]
+ ports:
+ - "3100:3100"
+ volumes:
+ - ./monitoring/loki/loki-config.yaml:/etc/loki/local-config.yaml
+ - loki_data:/loki
+ command: -config.file=/etc/loki/local-config.yaml
+
+ promtail:
+ image: grafana/promtail:latest
+ profiles: ["monitoring"]
+ volumes:
+ - ./monitoring/promtail/promtail-config.yaml:/etc/promtail/config.yaml
+ - /var/run/docker.sock:/var/run/docker.sock:ro
+ command: -config.file=/etc/promtail/config.yaml
+ depends_on:
+ - loki
+
prometheus:
image: prom/prometheus:latest
profiles: ["monitoring"]
@@ -127,3 +147,4 @@ services:
volumes:
redis_data:
postgres_data:
+ loki_data:
diff --git a/monitoring/grafana/provisioning/datasources/prometheus.yaml b/monitoring/grafana/provisioning/datasources/prometheus.yaml
new file mode 100644
index 0000000..977265e
--- /dev/null
+++ b/monitoring/grafana/provisioning/datasources/prometheus.yaml
@@ -0,0 +1,14 @@
+apiVersion: 1
+datasources:
+ - name: Prometheus
+ type: prometheus
+ access: proxy
+ url: http://prometheus:9090
+ isDefault: true
+ editable: false
+ - name: Loki
+ type: loki
+ access: proxy
+ url: http://loki:3100
+ isDefault: false
+ editable: false
diff --git a/monitoring/loki/loki-config.yaml b/monitoring/loki/loki-config.yaml
new file mode 100644
index 0000000..a696f78
--- /dev/null
+++ b/monitoring/loki/loki-config.yaml
@@ -0,0 +1,28 @@
+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:
+ kvstore:
+ store: inmemory
+
+schema_config:
+ configs:
+ - from: 2020-10-24
+ store: tsdb
+ object_store: filesystem
+ schema: v13
+ index:
+ prefix: index_
+ period: 24h
+
+limits_config:
+ retention_period: 168h
diff --git a/monitoring/promtail/promtail-config.yaml b/monitoring/promtail/promtail-config.yaml
new file mode 100644
index 0000000..5d7f5e4
--- /dev/null
+++ b/monitoring/promtail/promtail-config.yaml
@@ -0,0 +1,19 @@
+server:
+ http_listen_port: 9080
+
+positions:
+ filename: /tmp/positions.yaml
+
+clients:
+ - url: http://loki:3100/loki/api/v1/push
+
+scrape_configs:
+ - job_name: docker
+ docker_sd_configs:
+ - host: unix:///var/run/docker.sock
+ refresh_interval: 5s
+ relabel_configs:
+ - source_labels: ["__meta_docker_container_name"]
+ target_label: container
+ - source_labels: ["__meta_docker_container_log_stream"]
+ target_label: stream