k3s/monitoring/stack/monitoring-stack.yaml
2026-04-03 20:49:11 -04:00

103 lines
3.3 KiB
YAML

apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: kube-prometheus-stack
namespace: kube-system # The controller looks here, but we will deploy to 'monitoring'
spec:
chart: kube-prometheus-stack
repo: https://prometheus-community.github.io/helm-charts
targetNamespace: monitoring
createNamespace: true
valuesContent: |-
kubeControllerManager:
enabled: false
kubeScheduler:
enabled: false
kubeProxy:
enabled: false
prometheus:
prometheusSpec:
serviceMonitorSelectorNilUsesHelmValues: false
retention: 10d
externalUrl: http://prometheus.k3s.home.nest
storageSpec:
volumeClaimTemplate:
spec:
storageClassName: ""
resources:
requests:
storage: 20Gi
selector:
matchLabels:
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.k3s.home.nest
storage:
volumeClaimTemplate:
spec:
storageClassName: ""
resources:
requests:
storage: 2Gi
selector:
matchLabels:
app: alertmanager-data
grafana:
admin:
existingSecret: "grafana-admin-credentials"
userKey: admin-user
passwordKey: admin-password
podSecurityContext:
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
initChownData:
enabled: false
grafana.ini:
server:
domain: grafana.k3s.home.nest
root_url: http://grafana.k3s.home.nest
serve_from_sub_path: false
persistence:
enabled: true
type: pvc
storageClassName: grafana-nfs
size: 5Gi
finalizers:
- kubernetes.io/pvc-protection
selectorLabels:
app: grafana-data