From b01a573d167138bd138176616fc3c247c1bfc5d4 Mon Sep 17 00:00:00 2001 From: William Date: Thu, 29 Dec 2022 19:26:41 +0100 Subject: [PATCH] feat: Add monitoring services. --- .gitignore | 1 + monitoring/.env.example | 2 ++ monitoring/docker-compose.yml | 45 +++++++++++++++++++++++++++++++++++ monitoring/prometheus.yml | 17 +++++++++++++ traefik/docker-compose.yml | 19 +++++++++++++++ traefik/traefik.yml | 15 ++++++++++++ 6 files changed, 99 insertions(+) create mode 100644 .gitignore create mode 100644 monitoring/.env.example create mode 100644 monitoring/docker-compose.yml create mode 100644 monitoring/prometheus.yml create mode 100644 traefik/docker-compose.yml create mode 100644 traefik/traefik.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c49bd7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.env diff --git a/monitoring/.env.example b/monitoring/.env.example new file mode 100644 index 0000000..69fedca --- /dev/null +++ b/monitoring/.env.example @@ -0,0 +1,2 @@ +GRAFANA_HOST=grafana.example.org +PROMETHEUS_HOST=prometheus.example.org diff --git a/monitoring/docker-compose.yml b/monitoring/docker-compose.yml new file mode 100644 index 0000000..de6f437 --- /dev/null +++ b/monitoring/docker-compose.yml @@ -0,0 +1,45 @@ +version: '3.8' + +networks: + web: + external: true + monitoring: + driver: bridge + +volumes: + grafana-data: + prometheus-data: + +services: + grafana: + image: grafana/grafana-oss:8.2.0 + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.grafana.entrypoints=http" + - "traefik.http.routers.grafana.rule=Host(`${GRAFANA_HOST}`)" + - "traefik.http.services.grafana.loadbalancer.server.port=3000" + networks: + - web + - monitoring + volumes: + - grafana-data:/var/lib/grafana + + prometheus: + image: prom/prometheus:v2.41.0 + restart: unless-stopped + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml + - prometheus-data:/prometheus + command: + - '--config.file=/etc/prometheus/prometheus.yml' + - '--storage.tsdb.path=/prometheus' + - '--storage.tsdb.retention.time=365d' + labels: + - "traefik.enable=true" + - "traefik.http.routers.prometheus.entrypoints=http" + - "traefik.http.routers.prometheus.rule=Host(`${PROMETHEUS_HOST}`)" + - "traefik.http.services.prometheus.loadbalancer.server.port=9090" + networks: + - web + - monitoring diff --git a/monitoring/prometheus.yml b/monitoring/prometheus.yml new file mode 100644 index 0000000..0c56be8 --- /dev/null +++ b/monitoring/prometheus.yml @@ -0,0 +1,17 @@ +global: + scrape_interval: 15s + + external_labels: + monitor: codelab-monitor + +scrape_configs: + - job_name: 'node' + scheme: https + basic_auth: + username: username + password: password + tls_config: + insecure_skip_verify: true + static_configs: + - targets: + - 'server.example.com:9100' diff --git a/traefik/docker-compose.yml b/traefik/docker-compose.yml new file mode 100644 index 0000000..13caf8e --- /dev/null +++ b/traefik/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3' + +networks: + web: + external: true + +services: + traefik: + image: traefik:2.9 + restart: unless-stopped + networks: + - web + ports: + - "80:80" + - "443:443" + - "8080:8080" + volumes: + - './traefik.yml:/etc/traefik/traefik.yml' + - '/var/run/docker.sock:/var/run/docker.sock:ro' diff --git a/traefik/traefik.yml b/traefik/traefik.yml new file mode 100644 index 0000000..79b9a89 --- /dev/null +++ b/traefik/traefik.yml @@ -0,0 +1,15 @@ +entryPoints: + http: + address: ':80' + https: + address: ':443' + +api: + dashboard: true + insecure: true + +providers: + docker: + network: 'web' + endpoint: 'unix:///var/run/docker.sock' + exposedByDefault: false