From 250d6e2037fe8e3c6b0640e4780f73631e582093 Mon Sep 17 00:00:00 2001 From: meftimes Date: Sat, 28 Dec 2024 20:17:51 -0500 Subject: [PATCH] add Grafana --- grafana/grafana.yml | 53 ++++++++++++++++++++++++ grafana/prometheus-config/prometheus.yml | 27 ++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 grafana/grafana.yml create mode 100644 grafana/prometheus-config/prometheus.yml diff --git a/grafana/grafana.yml b/grafana/grafana.yml new file mode 100644 index 0000000..102c42b --- /dev/null +++ b/grafana/grafana.yml @@ -0,0 +1,53 @@ +services: + grafana: + image: grafana/grafana:latest + container_name: grafana + volumes: + - grafana-data:/var/lib/grafana + labels: + - "traefik.enable=true" + - "traefik.http.routers.grafana.entrypoints=websecure" + - "traefik.http.routers.grafana.rule=Host(`grafana.meftimes.com`)" + - "traefik.http.services.grafana.loadbalancer.server.port=3000" + networks: + - backend + - proxy + restart: unless-stopped + + prometheus: + image: prom/prometheus:latest + container_name: prometheus + command: + - "--config.file=/etc/prometheus/prometheus.yml" + volumes: + - ./prometheus-config/prometheus.yml:/etc/prometheus/prometheus.yml + - prometheus-data:/prometheus + ports: + - 9090:9090 + networks: + - backend + restart: unless-stopped + + node_exporter: + image: quay.io/prometheus/node-exporter:latest + container_name: node_exporter + command: + - '--path.rootfs=/host' + pid: host + networks: + - backend + restart: unless-stopped + volumes: + - '/:/host:ro,rslave' + +volumes: + grafana-data: + driver: local + prometheus-data: + driver: local + +networks: + proxy: + external: true + backend: + external: true diff --git a/grafana/prometheus-config/prometheus.yml b/grafana/prometheus-config/prometheus.yml new file mode 100644 index 0000000..3a8630f --- /dev/null +++ b/grafana/prometheus-config/prometheus.yml @@ -0,0 +1,27 @@ +global: + scrape_interval: 15s # By default, scrape targets every 15 seconds. + + # Attach these labels to any time series or alerts when communicating with + # external systems (federation, remote storage, Alertmanager). + # external_labels: + # monitor: 'codelab-monitor' + +# A scrape configuration containing exactly one endpoint to scrape: +# Here it's Prometheus itself. +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + - job_name: 'prometheus' + # Override the global default and scrape targets from this job every 5 seconds. + scrape_interval: 5s + static_configs: + - targets: ['localhost:9090'] + + # Example job for node_exporter + - job_name: 'node_exporter' + static_configs: + - targets: ['node_exporter:9100'] + + # Example job for cadvisor + # - job_name: 'cadvisor' + # static_configs: + # - targets: ['cadvisor:8080']