From 5682e043e249afc42465c3eaa48fe50810538f06 Mon Sep 17 00:00:00 2001 From: Astra Logical Date: Mon, 9 Mar 2026 19:29:02 -0400 Subject: [PATCH] Stand up prometheus stack --- helmchartconfig/traefik-config.yaml | 15 +++++ .../servicemonitors/traefik-monitor.yaml | 20 ++++++ monitoring/stack/monitoring-stack.yaml | 66 +++++++++++++++++++ monitoring/stack/nfs-claims.yaml | 55 ++++++++++++++++ monitoring/stack/services-external.yaml | 47 +++++++++++++ 5 files changed, 203 insertions(+) create mode 100644 helmchartconfig/traefik-config.yaml create mode 100644 monitoring/servicemonitors/traefik-monitor.yaml create mode 100644 monitoring/stack/monitoring-stack.yaml create mode 100644 monitoring/stack/nfs-claims.yaml create mode 100644 monitoring/stack/services-external.yaml diff --git a/helmchartconfig/traefik-config.yaml b/helmchartconfig/traefik-config.yaml new file mode 100644 index 0000000..149277a --- /dev/null +++ b/helmchartconfig/traefik-config.yaml @@ -0,0 +1,15 @@ +--- +apiVersion: helm.cattle.io/v1 +kind: HelmChartConfig +metadata: + name: traefik + namespace: kube-system +spec: + valuesContent: |- + additionalArguments: + - "--metrics.prometheus=true" + - "--metrics.prometheus.entryPoint=metrics" + ports: + metrics: + port: 9100 + exposedPort: 9100 diff --git a/monitoring/servicemonitors/traefik-monitor.yaml b/monitoring/servicemonitors/traefik-monitor.yaml new file mode 100644 index 0000000..7aa9d42 --- /dev/null +++ b/monitoring/servicemonitors/traefik-monitor.yaml @@ -0,0 +1,20 @@ +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: traefik-monitor + namespace: monitoring + labels: + release: kube-prometheus-stack +spec: + jobLabel: traefik + selector: + matchLabels: + app.kubernetes.io/name: traefik + namespaceSelector: + matchNames: + - kube-system + endpoints: + - port: metrics + interval: 30s + path: /metrics diff --git a/monitoring/stack/monitoring-stack.yaml b/monitoring/stack/monitoring-stack.yaml new file mode 100644 index 0000000..de8dcc8 --- /dev/null +++ b/monitoring/stack/monitoring-stack.yaml @@ -0,0 +1,66 @@ +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: |- + prometheus: + prometheusSpec: + serviceMonitorSelectorNilUsesHelmValues: false + retention: 10d + externalUrl: http://prometheus.home.nest + storageSpec: + volumeClaimTemplate: + spec: + storageClassName: "" + resources: + requests: + storage: 20Gi + selector: + matchLabels: + app: prometheus-data + + alertmanager: + alertmanagerSpec: + externalUrl: http://alertmanager.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.home.nest + root_url: http://grafana.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 diff --git a/monitoring/stack/nfs-claims.yaml b/monitoring/stack/nfs-claims.yaml new file mode 100644 index 0000000..5b8cd68 --- /dev/null +++ b/monitoring/stack/nfs-claims.yaml @@ -0,0 +1,55 @@ +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: prometheus-nfs-pv + labels: + app: prometheus-data +spec: + capacity: + storage: 20Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + nfs: + server: birdfeeder2.home.nest + path: /k3s/prometheus + mountOptions: + - nfsvers=4.1 +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: alertmanager-nfs-pv + labels: + app: alertmanager-data +spec: + capacity: + storage: 2Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + nfs: + server: birdfeeder2.home.nest + path: /k3s/alertmanager + mountOptions: + - nfsvers=4.1 +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: grafana-nfs-pv + labels: + app: grafana-data +spec: + storageClassName: grafana-nfs + capacity: + storage: 5Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + nfs: + server: birdfeeder2.home.nest + path: /k3s/grafana + mountOptions: + - nfsvers=4.1 diff --git a/monitoring/stack/services-external.yaml b/monitoring/stack/services-external.yaml new file mode 100644 index 0000000..30e54b0 --- /dev/null +++ b/monitoring/stack/services-external.yaml @@ -0,0 +1,47 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: grafana-nodeport + namespace: monitoring +spec: + type: NodePort + selector: + app.kubernetes.io/name: grafana + ports: + - name: "30009" + port: 30009 + targetPort: 3000 + nodePort: 30009 +--- +apiVersion: v1 +kind: Service +metadata: + name: prometheus-nodeport + namespace: monitoring +spec: + type: NodePort + selector: + app.kubernetes.io/name: prometheus + prometheus: prometheus-kube-prometheus-stack-prometheus + ports: + - name: "30001" + port: 30001 + targetPort: 9090 + nodePort: 30001 +--- +apiVersion: v1 +kind: Service +metadata: + name: alertmanager-nodeport + namespace: monitoring +spec: + type: NodePort + selector: + app.kubernetes.io/name: alertmanager + alertmanager: prometheus-kube-prometheus-stack-alertmanager + ports: + - name: "30002" + port: 30002 + targetPort: 9093 + nodePort: 30002