From 8a21aabdd1f7049aa2204f10e2a828949b4f7859 Mon Sep 17 00:00:00 2001 From: Alex Lebens Date: Tue, 8 Jul 2025 20:54:00 -0500 Subject: [PATCH] add s3 monitor --- .../templates/grafana-dashboard.yaml | 19 ++++++++++ .../cl01tl/monitoring/s3-exporter/Chart.yaml | 22 ++++++++++++ .../templates/external-secret.yaml | 35 +++++++++++++++++++ .../s3-exporter/templates/scrape-config.yaml | 16 +++++++++ .../cl01tl/monitoring/s3-exporter/values.yaml | 33 +++++++++++++++++ 5 files changed, 125 insertions(+) create mode 100644 clusters/cl01tl/monitoring/s3-exporter/Chart.yaml create mode 100644 clusters/cl01tl/monitoring/s3-exporter/templates/external-secret.yaml create mode 100644 clusters/cl01tl/monitoring/s3-exporter/templates/scrape-config.yaml create mode 100644 clusters/cl01tl/monitoring/s3-exporter/values.yaml diff --git a/clusters/cl01tl/monitoring/grafana-operator/templates/grafana-dashboard.yaml b/clusters/cl01tl/monitoring/grafana-operator/templates/grafana-dashboard.yaml index 933637ef1..8effb0de4 100644 --- a/clusters/cl01tl/monitoring/grafana-operator/templates/grafana-dashboard.yaml +++ b/clusters/cl01tl/monitoring/grafana-operator/templates/grafana-dashboard.yaml @@ -378,6 +378,25 @@ spec: resyncPeriod: 1h url: http://gitea-http.gitea:3000/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/volsync.json +--- +apiVersion: grafana.integreatly.org/v1beta1 +kind: GrafanaDashboard +metadata: + name: grafana-dashboard-digital-ocean-s3 + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: grafana-dashboard-digital-ocean-s3 + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/part-of: {{ .Release.Name }} +spec: + instanceSelector: + matchLabels: + app: grafana-main + contentCacheDuration: 1h + folderUID: grafana-folder-platform + resyncPeriod: 1h + url: http://gitea-http.gitea:3000/alexlebens/grafana-dashboards/raw/branch/main/dashboards/platform/digital-ocean-s3.json + --- apiVersion: grafana.integreatly.org/v1beta1 kind: GrafanaDashboard diff --git a/clusters/cl01tl/monitoring/s3-exporter/Chart.yaml b/clusters/cl01tl/monitoring/s3-exporter/Chart.yaml new file mode 100644 index 000000000..4dae5f597 --- /dev/null +++ b/clusters/cl01tl/monitoring/s3-exporter/Chart.yaml @@ -0,0 +1,22 @@ +apiVersion: v2 +name: s3-exporter +version: 1.0.0 +description: S3 Exporter +keywords: + - s3-exporter + - storage + - monitoring + - metrics +home: https://wiki.alexlebens.dev/s/ +sources: + - https://github.com/ribbybibby/s3_exporter + - https://hub.docker.com/r/ribbybibby/s3-exporter + - https://github.com/bjw-s/helm-charts/blob/main/charts/other/app-template +maintainers: + - name: alexlebens +dependencies: + - name: app-template + alias: s3-exporter + repository: https://bjw-s-labs.github.io/helm-charts/ + version: 4.1.2 +appVersion: v0.5.0 diff --git a/clusters/cl01tl/monitoring/s3-exporter/templates/external-secret.yaml b/clusters/cl01tl/monitoring/s3-exporter/templates/external-secret.yaml new file mode 100644 index 000000000..e922b0a60 --- /dev/null +++ b/clusters/cl01tl/monitoring/s3-exporter/templates/external-secret.yaml @@ -0,0 +1,35 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: s3-do-home-infra-secret + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: s3-do-home-infra-secret + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/part-of: {{ .Release.Name }} +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + data: + - secretKey: AWS_ACCESS_KEY_ID + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/prometheus-exporter + metadataPolicy: None + property: AWS_ACCESS_KEY_ID + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/prometheus-exporter + metadataPolicy: None + property: AWS_SECRET_ACCESS_KEY + - secretKey: AWS_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/prometheus-exporter + metadataPolicy: None + property: AWS_REGION diff --git a/clusters/cl01tl/monitoring/s3-exporter/templates/scrape-config.yaml b/clusters/cl01tl/monitoring/s3-exporter/templates/scrape-config.yaml new file mode 100644 index 000000000..a0d758d1b --- /dev/null +++ b/clusters/cl01tl/monitoring/s3-exporter/templates/scrape-config.yaml @@ -0,0 +1,16 @@ +apiVersion: monitoring.coreos.com/v1alpha1 +kind: ScrapeConfig +metadata: + name: s3-do-home-infra + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: s3-do-home-infra + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/part-of: {{ .Release.Name }} +spec: + jobName: s3-do-home-infra + metrics_path: /probe + scrapeInterval: 12h + scrapeTimeout: 120s + httpSDConfigs: + - url: http://s3-exporter.s3-exporter:9340/discovery diff --git a/clusters/cl01tl/monitoring/s3-exporter/values.yaml b/clusters/cl01tl/monitoring/s3-exporter/values.yaml new file mode 100644 index 000000000..66fe9ca7c --- /dev/null +++ b/clusters/cl01tl/monitoring/s3-exporter/values.yaml @@ -0,0 +1,33 @@ +s3-exporter: + controllers: + main: + type: deployment + replicas: 1 + strategy: Recreate + revisionHistoryLimit: 3 + containers: + main: + image: + repository: ghcr.io/unpoller/unpoller + tag: v2.15.3 + pullPolicy: IfNotPresent + env: + - name: S3_EXPORTER_WEB_LISTEN_ADDRESS + value: 9340 + - name: S3_EXPORTER_S3_ENDPOINT_URL + value: https://nyc3.digitaloceanspaces.com + envFrom: + - secretRef: + name: s3-do-home-infra-secret + resources: + requests: + cpu: 10m + memory: 64Mi + service: + main: + controller: main + ports: + metrics: + port: 9340 + targetPort: 9340 + protocol: TCP