Compare commits

..
Author SHA1 Message Date
p4u1 1eb8900624 resolve merge conflicts 2026-10-13 09:18:08 +02:00
p4u1 f1b88a1546 feat(alert): adds traefik apdex alert 2026-10-12 20:28:46 +02:00
fauno 48e8318e41 chore: publish 2.3.0+v1.20.1 release 2026-10-12 13:11:16 -03:00
fauno 298efcfb50 Merge branch 'main' of https://git.coopcloud.tech/coop-cloud/monitoring-ng 2026-10-12 13:10:24 -03:00
fauno 4ab976a0f0 chore(deps): update prometheuscommunity/smartctl-exporter docker tag to v0.15.0 (#46)
Reviewed-on: #46
Reviewed-by: fauno <fauno@sutty.coop.ar>
2026-10-12 16:09:28 +00:00
fauno 8665af7d91 chore(deps): update grafana/grafana docker tag to v13.2.3 (#43)
Reviewed-on: #43
Reviewed-by: fauno <fauno@sutty.coop.ar>
2026-10-12 16:08:11 +00:00
renovate-bot 24927d6331 chore(deps): update grafana/grafana docker tag to v13.2.3 2026-10-12 16:07:57 +00:00
fauno 06521e98cf chore(deps): update grafana/alloy docker tag to v1.20.1 (#42)
Reviewed-on: #42
Reviewed-by: fauno <fauno@sutty.coop.ar>
2026-10-12 16:04:23 +00:00
fauno b322d8fb84 chore(deps): update prom/prometheus docker tag to v3.15.0 (#45)
Reviewed-on: #45
Reviewed-by: fauno <fauno@sutty.coop.ar>
2026-10-12 16:02:08 +00:00
renovate-bot 0a749fe4fe chore(deps): update prometheuscommunity/smartctl-exporter docker tag to v0.15.0 2026-10-12 03:16:50 +00:00
renovate-bot f980185f8f chore(deps): update prom/prometheus docker tag to v3.15.0 2026-10-12 03:16:46 +00:00
renovate-bot 5028630b04 chore(deps): update grafana/alloy docker tag to v1.20.1 2026-10-12 01:16:59 +00:00
fauno e5028c8648 fix: monitoring-ng 2026-10-05 12:46:49 -03:00
9 changed files with 102 additions and 23 deletions
+3
View File
@@ -133,3 +133,6 @@ SECRET_BASIC_AUTH_VERSION=v1
# Node memory usage alert will trigger when memory usage is above the given number in percent
#ALERT_NODE_MEMORY_USAGE=85
# Traefik apdex alert will trigger when the apdex score of a service drops below the given number. Services receiving fewer than 10 requests per 10m are ignored
#ALERT_TRAEFIK_APDEX=0.5
+1
View File
@@ -174,6 +174,7 @@ It is possible to enable the following alerts, by uncommenting the corresponding
- node disk space: `ALERT_NODE_DISK_SPACE_LEFT`
- node memory usage: `ALERT_NODE_MEMORY_USAGE`
- traefik apdex: `ALERT_TRAEFIK_APDEX`
## smart monitoring
+2 -1
View File
@@ -7,9 +7,10 @@ export GF_BACKUP_DASH_VERSION=v1
export GF_CUSTOM_INI_VERSION=v4
export LOKI_YML_VERSION=v3
export PROMETHEUS_YML_VERSION=v2
export MATRIX_ALERTMANAGER_CONFIG_VERSION=v2
export MATRIX_ALERTMANAGER_CONFIG_VERSION=v1
export MATRIX_ALERTMANAGER_ENTRYPOINT_VERSION=v1
export GF_ALERTS_NODE_VERSION=v3
export GF_ALERTS_TRAEFIK_VERSION=v1
export CONFIG_ALLOY_VERSION=v3
# migrates secrets from old names to new names by reading values from the
+3 -17
View File
@@ -54,35 +54,21 @@ templating:
{{ else if .Alert.Labels.alertname }}
{{ .Alert.Labels.alertname }}
{{ end }}
{{ if .Alert.Labels.rulename }}
&rarr; <strong>{{ .Alert.Labels.rulename }}</strong>
{{ end }}
{{ if .Alert.Labels.grafana_folder }}
<em>({{ .Alert.Labels.grafana_folder }})</em>
{{ end }}
>>
{{ if .Alert.Labels.severity }}
{{ .Alert.Labels.severity | ToUpper }}:
{{ .Alert.Labels.severity | ToUpper }}:
{{ end }}
{{ if .Alert.Annotations.description }}
{{ .Alert.Annotations.description }}
{{ else if .Alert.Annotations.summary }}
{{ .Alert.Annotations.summary }}
{{ else if .Alert.Labels.rulename }}
Query {{ .Alert.Labels.ref_id }} returned no data (datasource {{ .Alert.Labels.datasource_uid }})
{{ end }}
{{ if .Alert.Labels.instance }}
on {{ .Alert.Labels.instance }}
{{ end }}
>>
{{ if .Alert.Annotations.runbook }}
<a href="{{ .Alert.Annotations.runbook }}">Runbook</a> |
<a href="{{ .Alert.Annotations.runbook }}">Runbook</a> |
{{ end }}
{{ if .Alert.Annotations.dashboard }}
<a href="{{ .Alert.Annotations.dashboard }}">Dashboard</a> |
{{ end }}
{{ if .GeneratorURL }}
<a href="{{ .GeneratorURL }}">Rule</a> |
<a href="{{ .Alert.Annotations.dashboard }}">Dashboard</a> |
{{ end }}
<a href="{{ .SilenceURL }}">Silence</a>
</p>`}}'
+81
View File
@@ -0,0 +1,81 @@
apiVersion: 1
# List of alert rule UIDs that should be deleted
deleteRules:
{{ if not (env "ALERT_TRAEFIK_APDEX") }}
- orgId: 1
uid: coopcloud_traefik_apdex
{{ end }}
groups:
- orgId: 1
name: traefik
folder: recipes
interval: 5m
rules:
{{ if (env "ALERT_TRAEFIK_APDEX") }}
- uid: coopcloud_traefik_apdex
title: Apdex
condition: B
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: PBFA97CFB590B2093
model:
editorMode: code
# apdex = (satisfied + tolerating / 2) / total, which reduces to
# (le=0.3 + le=1.2) / 2 / total because the le=1.2 bucket is
# cumulative and therefore already contains the satisfied requests.
# services with less than 10 requests per 10m are ignored.
expr: |-
((sum(rate(traefik_service_request_duration_seconds_bucket{le="0.3",code="200"}[5m])) by (service) +
sum(rate(traefik_service_request_duration_seconds_bucket{le="1.2",code="200"}[5m])) by (service)) / 2 /
sum(rate(traefik_service_request_duration_seconds_count{code="200"}[5m])) by (service))
and on(service)
(
sum(increase(traefik_service_request_duration_seconds_count{code="200"}[10m])) by (service) >= 10
)
instant: true
intervalMs: 1000
legendFormat: __auto
maxDataPoints: 43200
range: false
refId: A
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- {{ env "ALERT_TRAEFIK_APDEX" }}
type: lt
operator:
type: and
query:
params: []
reducer:
params: []
type: avg
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
intervalMs: 1000
maxDataPoints: 43200
refId: B
type: threshold
noDataState: OK
execErrState: Error
for: 10m
annotations:
description: ""
runbook_url: ""
summary: Apdex for {{`{{ $labels.service }}`}} is below {{ env "ALERT_TRAEFIK_APDEX" }} (currently at {{`{{ printf "%.2f" (index $values "A").Value }}`}})
isPaused: false
{{ end }}
+8 -1
View File
@@ -2,7 +2,7 @@ version: '3.8'
services:
grafana:
image: grafana/grafana:13.0.6
image: grafana/grafana:13.2.3
volumes:
- grafana-data:/var/lib/grafana:rw
secrets:
@@ -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_traefik
target: /etc/grafana/provisioning/alerting/traefik.yml
networks:
- proxy
- internal
@@ -34,6 +36,7 @@ services:
- GF_INSTALL_PLUGINS
- ALERT_NODE_DISK_SPACE_LEFT
- ALERT_NODE_MEMORY_USAGE
- ALERT_TRAEFIK_APDEX
deploy:
labels:
- "traefik.enable=true"
@@ -77,6 +80,10 @@ configs:
template_driver: golang
name: ${STACK_NAME}_gf_alerts_node_${GF_ALERTS_NODE_VERSION}
file: alerts/node.yml.tmpl
gf_alerts_traefik:
template_driver: golang
name: ${STACK_NAME}_gf_alerts_traefik_${GF_ALERTS_TRAEFIK_VERSION}
file: alerts/traefik.yml.tmpl
volumes:
grafana-data:
+1 -1
View File
@@ -2,7 +2,7 @@ version: '3.8'
services:
prometheus:
image: prom/prometheus:v3.12.0
image: prom/prometheus:v3.15.0
secrets:
- basic_auth
volumes:
+1 -1
View File
@@ -2,7 +2,7 @@
version: "3.8"
services:
smartctl:
image: "prometheuscommunity/smartctl-exporter:v0.14.0"
image: "prometheuscommunity/smartctl-exporter:v0.15.0"
volumes:
- "/var/lib/smartmontools/json:/debug"
command:
+2 -2
View File
@@ -3,7 +3,7 @@ version: "3.8"
services:
app:
image: grafana/alloy:v1.18.1
image: grafana/alloy:v1.20.1
hostname: "${DOMAIN}"
configs:
- source: config_alloy
@@ -53,7 +53,7 @@ services:
condition: on-failure
labels:
- "backupbot.backup=${ENABLE_BACKUPS:-true}"
- "coop-cloud.${STACK_NAME}.version=2.2.0+v1.18.1"
- "coop-cloud.${STACK_NAME}.version=2.3.0+v1.20.1"
configs:
config_alloy:
template_driver: golang