diff --git a/.env.sample b/.env.sample index cb379a9..bde2ff8 100644 --- a/.env.sample +++ b/.env.sample @@ -44,10 +44,10 @@ ENABLE_BACKUPS=true ## Grafana # # COMPOSE_FILE="$COMPOSE_FILE:compose.grafana.yml" -# GF_SERVER_ROOT_URL=https://monitoring.example.com +## GRAFANA_DOMAIN needs to be set. change it for a different domain +#GRAFANA_DOMAIN=$DOMAIN +# GF_SERVER_ROOT_URL=https://${GRAFANA_DOMAIN} # SECRET_GRAFANA_ADMIN_PASSWORD_VERSION=v1 -## Seperate domain for Grafana -#GRAFANA_DOMAIN=grafana.example.com # ## Single-Sign-On with OIDC # COMPOSE_FILE="$COMPOSE_FILE:compose.grafana-oidc.yml" @@ -85,3 +85,5 @@ ENABLE_BACKUPS=true #ALERT_BACKUP_NOT_SUCCESSFULL_ENABLED=true #ALERT_NODE_DISK_SPACE_ENABLED=true #ALERT_NODE_MEMORY_USAGE_ENABLED=true +#ALERT_RESTIC_CHECK_FAILED_ENABLED=true +#ALERT_RESTIC_OUTDATED_BACKUP_ENABLED=true \ No newline at end of file diff --git a/abra.sh b/abra.sh index bf3a0dc..e54caa7 100644 --- a/abra.sh +++ b/abra.sh @@ -12,6 +12,7 @@ export PROMETHEUS_YML_VERSION=v2 export MATRIX_ALERTMANAGER_CONFIG_VERSION=e export MATRIX_ALERTMANAGER_ENTRYPOINT_VERSION=a export GRAFANA_ALERTS_NODE_VERSION=v1c +export GRAFANA_ALERTS_RESTIC_VERSION=v2 # creates a default prometheus scrape config for a given node add_node(){ diff --git a/compose.grafana.yml b/compose.grafana.yml index ab6dd70..d967582 100644 --- a/compose.grafana.yml +++ b/compose.grafana.yml @@ -24,6 +24,8 @@ services: target: /var/lib/grafana/dashboards/backup.json - source: gf_alerts_node target: /etc/grafana/provisioning/alerting/node.yml + - source: gf_alerts_restic + target: /etc/grafana/provisioning/alerting/restic.yml networks: - proxy - internal @@ -34,12 +36,15 @@ services: - GF_INSTALL_PLUGINS - ALERT_NODE_DISK_SPACE_ENABLED - ALERT_NODE_MEMORY_USAGE_ENABLED + - ALERT_RESTIC_CHECK_FAILED_ENABLED + - ALERT_RESTIC_OUTDATED_BACKUP_ENABLED + - DOMAIN deploy: labels: - "traefik.enable=true" - "traefik.docker.network=proxy" - "traefik.http.services.${STACK_NAME}-grafana.loadbalancer.server.port=3000" - - "traefik.http.routers.${STACK_NAME}-grafana.rule=Host(`${GRAFANA_DOMAIN:-$DOMAIN}`)" + - "traefik.http.routers.${STACK_NAME}-grafana.rule=Host(`${GRAFANA_DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}-grafana.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}-grafana.tls=true" - "traefik.http.routers.${STACK_NAME}-grafana.tls.certresolver=${LETS_ENCRYPT_ENV}" @@ -77,6 +82,10 @@ configs: template_driver: golang name: ${STACK_NAME}_gf_alerts_node_${GRAFANA_ALERTS_NODE_VERSION} file: alerts/node.yml.tmpl + gf_alerts_restic: + template_driver: golang + name: ${STACK_NAME}_gf_alerts_restiv_${GRAFANA_ALERTS_RESTIC_VERSION} + file: alerts/restic.yml.tmpl volumes: grafana-data: diff --git a/compose.prometheus.yml b/compose.prometheus.yml index e77bed7..c6e4b85 100644 --- a/compose.prometheus.yml +++ b/compose.prometheus.yml @@ -39,3 +39,8 @@ configs: volumes: prometheus-data: + +secrets: + basic_auth: + external: true + name: ${STACK_NAME}_basic_auth_${SECRET_BASIC_AUTH_VERSION} \ No newline at end of file diff --git a/compose.promtail.yml b/compose.promtail.yml index 7cf6cf8..743c126 100644 --- a/compose.promtail.yml +++ b/compose.promtail.yml @@ -27,4 +27,4 @@ configs: secrets: basic_auth: external: true - name: ${STACK_NAME}_basic_auth_${SECRET_BASIC_AUTH_VERSION} + name: ${STACK_NAME}_basic_auth_${SECRET_BASIC_AUTH_VERSION} \ No newline at end of file diff --git a/grafana-dashboards.yml b/grafana-dashboards.yml index 799f4a1..8411cca 100644 --- a/grafana-dashboards.yml +++ b/grafana-dashboards.yml @@ -11,13 +11,3 @@ providers: options: path: /var/lib/grafana/dashboards foldersFromFilesStructure: true - - name: 'default-alert-provider' - orgId: 1 - folder: 'default-alerts' - type: file - disableDeletion: false - updateIntervalSeconds: 10 - allowUiUpdates: true - options: - path: /var/lib/grafana/alerts - foldersFromFilesStructure: true diff --git a/grafana-datasources.yml b/grafana-datasources.yml index 4b22768..d8052bd 100644 --- a/grafana-datasources.yml +++ b/grafana-datasources.yml @@ -3,6 +3,7 @@ apiVersion: 1 datasources: - name: Prometheus type: prometheus + uid: prometheus access: proxy orgId: 1 url: http://prometheus:9090 @@ -10,6 +11,7 @@ datasources: editable: false - name: Loki type: loki + uid: loki access: proxy orgId: 1 url: http://loki:3100