add prometheus and grafana

This commit is contained in:
hcornet committed 2026-09-20 11:03:04 +02:00
1 parent 8dbfcd9404
commit 59c01d9ace
3 files changed
+227

No files matched your search

+177
View File
@@ -0,0 +1,177 @@
#### NETWORKS
networks:
back_network_pg:
driver: bridge
attachable: true
#### SERVICES
services:
### prometheus
prometheus:
container_name: prometheus-app
hostname: prometheus-app
image: prom/prometheus:latest
restart: always
volumes:
- ./prometheus:/etc/prometheus/
- ./prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=30d'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
- '--web.enable-remote-write-receiver'
networks:
- front_network
- back_network_pg
- monitoring_network
depends_on:
- cadvisor
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_front_network"
# HTTP
- "traefik.http.routers.prometheus-http.rule=Host(`prometheus.${ROOT_DOMAIN}`)"
- "traefik.http.routers.prometheus-http.entrypoints=http"
- "traefik.http.routers.prometheus-http.priority=49"
# HTTPS
- "traefik.http.routers.prometheus-https.rule=Host(`prometheus.${ROOT_DOMAIN}`)"
- "traefik.http.routers.prometheus-https.entrypoints=https"
- "traefik.http.routers.prometheus-https.tls=true"
- "traefik.http.routers.prometheus-https.priority=50"
- "traefik.http.routers.prometheus-https.service=prometheus-https-service"
- "traefik.http.routers.prometheus-https.middlewares=prometheus-middlewares"
- "traefik.http.routers.prometheus-https.observability.accesslogs=true"
- "traefik.http.routers.prometheus-https.observability.metrics=true"
- "traefik.http.routers.prometheus-https.observability.tracing=true"
# Middleware
- "traefik.http.middlewares.prometheus-middlewares.headers.STSSeconds=15552000"
- "traefik.http.middlewares.prometheus-middlewares.headers.forceSTSHeader=true"
- "traefik.http.middlewares.prometheus-middlewares.headers.STSIncludeSubdomains=true"
- "traefik.http.middlewares.prometheus-middlewares.headers.STSPreload=true"
# Service
- "traefik.http.services.prometheus-https-service.loadbalancer.server.port=9090"
# - "traefik.http.services.prometheus-https-service.loadbalancer.healthcheck.hostname=prometheus.${ROOT_DOMAIN}"
# - "traefik.http.services.prometheus-https-service.loadbalancer.healthcheck.method=foobar"
# - "traefik.http.services.prometheus-https-service.loadbalancer.healthcheck.timeout=10"
# - "traefik.http.services.prometheus-https-service.loadbalancer.healthcheck.interval=30"
# --- Homepage ------------------------------------------------------
- homepage.group=Monitoring
- homepage.name=Prometheus
- homepage.icon=prometheus.png
- homepage.href=https://prometheus.${ROOT_DOMAIN}
- homepage.description=prometheus
### node-exporter
node-exporter:
container_name: prometheus-node-exporter
hostname: prometheus-node-exporter
image: prom/node-exporter:latest
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- --collector.filesystem.ignored-mount-points
- '^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)'
networks:
- back_network_pg
restart: always
### alertmanager
alertmanager:
container_name: prometheus-alertmanager
hostname: prometheus-alertmanager
image: prom/alertmanager:latest
restart: always
networks:
- back_network_pg
volumes:
- ./alertmanager/:/etc/alertmanager/
- ./alertmanager_data:/alertmanager
command:
- '--config.file=/etc/alertmanager/config.yml'
- '--storage.path=/alertmanager'
### cadvisor
cadvisor:
container_name: prometheus-cadvisor
hostname: prometheus-cadvisor
image: gcr.io/cadvisor/cadvisor:latest
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
networks:
- back_network_pg
restart: always
### grafana
grafana:
container_name: grafana-app
hostname: grafana-app
image: grafana/grafana:latest
user: '472'
restart: always
environment:
# GF_INSTALL_PLUGINS: 'grafana-clock-panel,grafana-simple-json-datasource'
GF_PLUGINS_PREINSTALL: 'grafana-clock-panel'
volumes:
- ./grafana_data:/var/lib/grafana
- ./grafana/provisioning/:/etc/grafana/provisioning/
env_file:
- ./grafana/config.monitoring
networks:
- front_network
- back_network_pg
- monitoring_network
depends_on:
- prometheus
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_front_network"
# HTTP
- "traefik.http.routers.grafana-http.rule=Host(`grafana.${ROOT_DOMAIN}`)"
- "traefik.http.routers.grafana-http.entrypoints=http"
- "traefik.http.routers.grafana-http.priority=41"
# HTTPS
- "traefik.http.routers.grafana-https.rule=Host(`grafana.${ROOT_DOMAIN}`)"
- "traefik.http.routers.grafana-https.entrypoints=https"
- "traefik.http.routers.grafana-https.tls=true"
- "traefik.http.routers.grafana-https.priority=42"
- "traefik.http.routers.grafana-https.service=grafana-https-service"
# Middleware
# Service
- "traefik.http.services.grafana-https-service.loadbalancer.server.port=3000"
# - "traefik.http.services.grafana-https-service.loadbalancer.server.scheme=https"
# - "traefik.http.services.grafana-https-service.loadbalancer.healthcheck.hostname=grafana.${ROOT_DOMAIN}"
# - "traefik.http.services.grafana-https-service.loadbalancer.healthcheck.method=foobar"
# - "traefik.http.services.grafana-https-service.loadbalancer.healthcheck.timeout=10"
# - "traefik.http.services.grafana-https-service.loadbalancer.healthcheck.interval=30"
# Homepage
- "homepage.group=Monitoring"
- "homepage.name=Grafana"
- "homepage.icon=grafana.png"
- "homepage.href=https://grafana.${ROOT_DOMAIN}"
- "homepage.description=grafana"
### tempo
tempo:
container_name: tempo-app
hostname: tempo-app
image: grafana/tempo:2.8.1
restart: always
user: '10001'
command: [ "-config.file=/etc/tempo/tempo.yml" ]
volumes:
- ./tempo:/etc/tempo
- ./tempo_data:/var/tempo
networks:
- back_network
- back_network_pg
@@ -0,0 +1,18 @@
GF_SECURITY_ADMIN_USER=admin
GF_SECURITY_ADMIN_PASSWORD=foobar
GF_USERS_ALLOW_SIGN_UP=false
GF_AUTH_GENERIC_OAUTH_ENABLED=true
GF_AUTH_GENERIC_OAUTH_NAME=Authentik
GF_AUTH_GENERIC_OAUTH_CLIENT_ID=MJGcr2G6ZeSPtfz993wXyG8m7lEWE7cx6oB6VDCy
GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET=zIORUZ3RtfiKuxgcJJ0X59eBPvqevH8c6W1ahJKLuzht0aOW4UmxM9AiXZmMLC2SxVDdQ1Qv1IP9lFENW2bfL0VPrLej2NRSXoV2Us0HG5mvekUMfcdwuHvAOrmdlp74
GF_AUTH_GENERIC_OAUTH_SCOPES=openid email profile groups
GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH=contains(groups[*], 'GL-Grafana-Admin') && 'Admin' || contains(groups[*], 'GL-Grafana') && 'Viewer' || 'Viewer'
GF_AUTH_GENERIC_OAUTH_ALLOW_ASSIGN_GRAFANA_ADMIN=true
GF_AUTH_GENERIC_OAUTH_AUTH_URL=https://authentik.${ROOT_DOMAIN}/application/o/authorize/
GF_AUTH_GENERIC_OAUTH_TOKEN_URL=https://authentik.${ROOT_DOMAIN}/application/o/token/
GF_AUTH_GENERIC_OAUTH_API_URL=https://authentik.${ROOT_DOMAIN}/application/o/userinfo/
GF_AUTH_GENERIC_OAUTH_LOGIN_ATTRIBUTE_PATH=preferred_username
GF_AUTH_GENERIC_OAUTH_NAME_ATTRIBUTE_PATH=name
GF_AUTH_SIGNOUT_REDIRECT_URL=https://authentik.${ROOT_DOMAIN}/application/o/grafana/end-session/
GF_SERVER_ROOT_URL=https://grafana.${ROOT_DOMAIN}
+32
View File
@@ -0,0 +1,32 @@
global:
scrape_interval: 15s
evaluation_interval: 15s
external_labels:
monitor: 'sldokp03'
rule_files:
- 'alert.rules'
alerting:
alertmanagers:
- scheme: http
static_configs:
- targets:
- "alertmanager:9093"
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
- job_name: 'traefik-app'
static_configs:
- targets: ['traefik-app:8181']