commit f0756777d838f12278838ff2c7c2375c710c95ab Author: Philipp Glaum Date: Thu Jul 13 14:11:42 2023 +0200 lgtm stack diff --git a/README.md b/README.md new file mode 100644 index 0000000..fbc334c --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# LGTM stack + +Grafana stack for logs, metrics, traces + +## Set up + +Needs an external network `traefik-public`. diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..05411c9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,87 @@ +version: '3' + +services: + clone_config: + image: alpine + volumes: + - lgtm-config:/lgtm-config + command: + - /bin/sh + - -c + - | + apk update + apk add git + cd /lgtm-config + if [ -d "lgtm-stack" ]; then rm -rf lgtm-stack; fi + git clone "https://dev-gitea.sinetcon.com/pglaum/lgtm-stack" + + jaeger: + image: jaegertracing/all-in-one:latest + environment: + - COLLECTOR_OTLP_ENABLED=true + - LOG_LEVEL=debug + restart: unless-stopped + networks: + - traefik-public + + grafana: + image: grafana/grafana-oss + volumes: + - grafana-data:/var/lib/grafana + restart: unless-stopped + user: '0' + networks: + - traefik-public + + loki: + image: grafana/loki:2.8.0 + ports: + - "3100:3100" + volumes: + - lgtm-config:/lgtm-stack/loki.yaml:/etc/loki/local-config.yaml + command: -config.file=/etc/loki/local-config.yaml + networks: + - traefik-public + depends_on: + clone_config: + condition: service_completed_successfully + + promtail: + image: grafana/promtail:2.8.0 + volumes: + - lgtm-config:/lgtm-stack/promtail.yaml:/etc/promtail/config.yml + command: -config.file=/etc/promtail/config.yml + networks: + - traefik-public + depends_on: + clone_config: + condition: service_completed_successfully + + prometheus: + image: prom/prometheus:latest + restart: unless-stopped + volumes: + - prometheus-data:/prometheus + - lgtm-config:/lgtm-stack/prometheus.yml:/etc/prometheus/prometheus.yml + command: + - '--config.file=/etc/prometheus/prometheus.yml' + - '--storage.tsdb.path=/prometheus' + - '--web.console.libraries=/etc/prometheus/console_libraries' + - '--web.console.templates=/etc/prometheus/consoles' + - '--web.enable-lifecycle' + networks: + - traefik-public + user: '0' + depends_on: + clone_config: + condition: service_completed_successfully + +volumes: + grafana-data: + prometheus-data: + lgtm-config: + external: True + +networks: + traefik-public: + external: true diff --git a/loki.yaml b/loki.yaml new file mode 100644 index 0000000..7779819 --- /dev/null +++ b/loki.yaml @@ -0,0 +1,31 @@ +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: boltdb-shipper + object_store: filesystem + schema: v11 + index: + prefix: index_ + period: 24h + +ruler: + alertmanager_url: http://localhost:9093 + +analytics: + reporting_enabled: false diff --git a/prometheus.yaml b/prometheus.yaml new file mode 100644 index 0000000..7c882e0 --- /dev/null +++ b/prometheus.yaml @@ -0,0 +1,9 @@ +global: + scrape_interval: 5s + evaluation_interval: 5s + +scrape_configs: + - job_name: 'traefik' + static_configs: + - targets: + - "traefik:8080" diff --git a/promtail.yaml b/promtail.yaml new file mode 100644 index 0000000..19f9b15 --- /dev/null +++ b/promtail.yaml @@ -0,0 +1,22 @@ +server: + http_listen_port: 9080 + grpc_listen_port: 0 + +positions: + filename: /tmp/positions.yaml + +clients: + - url: http://loki:3100/loki/api/v1/push + +scrape_configs: +- job_name: system + pipeline_stages: + - replace: + expression: '(?:[0-9]{1,3}\.){3}([0-9]{1,3})' + replace: '***' + static_configs: + - targets: + - localhost + labels: + job: nginx_access_log + __path__: /var/log/nginx/*access.log