Add Pure FlashArray OpenMetrics exporter to monitoring namespace

- Deploy purestorage/pure-fa-om-exporter:v1.0.27 container
- Configure API token secret for utilidor FlashArray (jarvis user)
- Expose /metrics endpoint via ClusterIP service on port 9490
- ServiceMonitor for kube-prometheus-stack auto-discovery
- ArgoCD application for GitOps deployment (wave 3)
- Scrape interval: 60s (storage metrics low frequency)
- Resource limits: 200m CPU / 128Mi memory

Provides pure_* metrics namespace for FlashArray capacity, performance,
volume stats, host connectivity, etc.
This commit is contained in:
Hermes Agent service account
2026-06-19 17:48:20 -05:00
parent f375c9567f
commit cb5ffc16d8
5 changed files with 230 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
# ------------------------------------------------------------------------------
# Platform: pure-exporter
# Wave 3 — monitoring infrastructure, depends on kube-prometheus-stack
#
# Pure Storage FlashArray OpenMetrics Exporter
# Provides FlashArray telemetry (capacity, performance, volumes, hosts) to Prometheus
#
# Installation flow:
# 1. Secret with FlashArray API token created
# 2. Deployment spins up exporter container
# 3. Service exposes /metrics endpoint
# 4. ServiceMonitor registers with Prometheus Operator
# 5. Prometheus begins scraping pure_* metrics
#
# Prerequisites:
# - kube-prometheus-stack deployed in monitoring namespace (wave 2)
# - FlashArray API token for jarvis readonly user
# - Network connectivity to utilidor.local.mk-labs.cloud:443
# ------------------------------------------------------------------------------
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: pure-exporter
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "3"
spec:
project: default
source:
repoURL: https://gitea.mk-labs.cloud/rblundon/homelab.git
targetRevision: main
path: cluster/platform/pure-exporter
directory:
exclude: "application.yaml"
destination:
server: https://kubernetes.default.svc
namespace: monitoring
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=false # monitoring namespace already exists
- ServerSideApply=true