diff --git a/helmchartconfig/traefik/service-traefik.yaml b/helmchartconfig/traefik/service-traefik.yaml new file mode 100644 index 0000000..2a7e240 --- /dev/null +++ b/helmchartconfig/traefik/service-traefik.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: traefik-metrics + namespace: kube-system + labels: + app.kubernetes.io/name: traefik + metrics: enabled +spec: + type: ClusterIP + selector: + app.kubernetes.io/name: traefik + ports: + - name: metrics + port: 9100 + targetPort: 9100 diff --git a/helmchartconfig/traefik-config.yaml b/helmchartconfig/traefik/traefik-config.yaml similarity index 87% rename from helmchartconfig/traefik-config.yaml rename to helmchartconfig/traefik/traefik-config.yaml index 149277a..7f04919 100644 --- a/helmchartconfig/traefik-config.yaml +++ b/helmchartconfig/traefik/traefik-config.yaml @@ -1,4 +1,3 @@ ---- apiVersion: helm.cattle.io/v1 kind: HelmChartConfig metadata: @@ -7,6 +6,7 @@ metadata: spec: valuesContent: |- additionalArguments: + - "--entryPoints.metrics.address=:9100" - "--metrics.prometheus=true" - "--metrics.prometheus.entryPoint=metrics" ports: diff --git a/monitoring/servicemonitors/traefik-monitor.yaml b/monitoring/servicemonitors/traefik-monitor.yaml index 7aa9d42..af8a62a 100644 --- a/monitoring/servicemonitors/traefik-monitor.yaml +++ b/monitoring/servicemonitors/traefik-monitor.yaml @@ -1,4 +1,3 @@ ---- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: @@ -7,10 +6,9 @@ metadata: labels: release: kube-prometheus-stack spec: - jobLabel: traefik selector: matchLabels: - app.kubernetes.io/name: traefik + metrics: enabled # This matches the new Service we just made namespaceSelector: matchNames: - kube-system @@ -18,3 +16,6 @@ spec: - port: metrics interval: 30s path: /metrics + relabelings: + - targetLabel: job + replacement: traefik diff --git a/monitoring/stack/monitoring-stack.yaml b/monitoring/stack/monitoring-stack.yaml index de8dcc8..d8b90ac 100644 --- a/monitoring/stack/monitoring-stack.yaml +++ b/monitoring/stack/monitoring-stack.yaml @@ -9,6 +9,13 @@ spec: targetNamespace: monitoring createNamespace: true valuesContent: |- + kubeControllerManager: + enabled: false + kubeScheduler: + enabled: false + kubeProxy: + enabled: false + prometheus: prometheusSpec: serviceMonitorSelectorNilUsesHelmValues: false @@ -26,6 +33,36 @@ spec: app: prometheus-data alertmanager: + config: + global: + resolve_timeout: 5m + route: + group_by: ['alertname', 'cluster', 'service'] + group_wait: 30s + group_interval: 5m + repeat_interval: 12h + receiver: 'discord-notifications' # Point the default route here + routes: + - matchers: + - alertname = Watchdog + receiver: 'null' + # Inhibition rules reduce noise by silencing related alerts + inhibit_rules: + - source_matchers: [severity="critical"] + target_matchers: [severity="warning"] + equal: ['alertname', 'dev', 'instance'] + receivers: + - name: 'null' + - name: 'discord-notifications' + discord_configs: + - webhook_url: 'https://discord.com/api/webhooks/1483240068197126300/zI_k1nEc8U8Fd0hiJc7gBG0TjklblmYrSDvpbTMiposGc32_0UREpLjch1FggFvluV3D' + send_resolved: true + # Formatting the message for better readability + title: '{{ .Status | toUpper }}: {{ .GroupLabels.alertname }}' + message: |- + **Summary:** {{ range .Alerts }}{{ .Annotations.summary }}{{ end }} + **Description:** {{ range .Alerts }}{{ .Annotations.description }}{{ end }} + **Severity:** {{ range .Alerts }}{{ .Labels.severity }}{{ end }} alertmanagerSpec: externalUrl: http://alertmanager.home.nest storage: