Files
homelab/cluster/platform/pure-exporter/DEPLOYMENT-SUMMARY.md
2026-06-19 17:50:25 -05:00

5.4 KiB

Pure FlashArray OpenMetrics Exporter - Deployment Summary

Deployment Date: 2026-06-19
Status: Successfully Deployed
Namespace: monitoring
Array: utilidor.local.mk-labs.cloud (10.1.71.5)

What Was Deployed

1. Container Deployment

  • Image: quay.io/purestorage/pure-fa-om-exporter:v1.0.27 (latest stable)
  • Port: 9490 (standard exporter port)
  • Resources: 50m CPU / 64Mi memory (requests), 200m CPU / 128Mi memory (limits)
  • Health Checks: Liveness and readiness probes on / endpoint
  • Security: Running as non-root user (65534)

2. Secret Configuration

  • Secret Name: pure-fa-exporter-token
  • Contains: tokens.yaml with FlashArray endpoint and API token
  • Array ID: utilidor
  • Endpoint: utilidor.local.mk-labs.cloud
  • API Token: 6157dea0-4c0d-b14b-6e6a-453aa649355d (jarvis readonly user)

3. Service

  • Type: ClusterIP (east/west traffic only)
  • Port: 9490
  • Selector: app.kubernetes.io/name=pure-fa-exporter

4. ServiceMonitor

  • Scrape Interval: 60s (storage metrics low frequency)
  • Scrape Timeout: 30s
  • Path: /metrics?endpoint=utilidor
  • Label Selector: release=monitoring (for kube-prometheus-stack)
  • Relabeling: Adds 'array' label from endpoint parameter

5. ArgoCD Application

  • Wave: 3 (monitoring infrastructure)
  • Sync Policy: Automated with prune and self-heal
  • Source: cluster/platform/pure-exporter/
  • Health: Healthy
  • Sync Status: Synced

Verification Results

Pod Status

NAME                               READY   STATUS    RESTARTS   AGE
pure-fa-exporter-7d45dcfb7-9rxj2   1/1     Running   0          21s

Service Endpoint

NAME               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
pure-fa-exporter   ClusterIP   10.111.204.251   <none>        9490/TCP   29s

Metrics Available

Successfully scraped FlashArray metrics including:

  • purefa_info - System information (Purity//FA 6.5.13)
  • purefa_alerts_open - Alert events
  • purefa_array_performance_* - Performance metrics (IOPS, bandwidth, latency)
  • purefa_array_space_* - Capacity metrics
  • purefa_volume_* - Volume metrics
  • purefa_host_* - Host metrics
  • And many more...

Sample output:

purefa_info{array_name="utilidor",os="Purity//FA",subscription_type="FlashArray",system_id="b78a62d3-57fc-45ab-b73f-6203fb30f28d",version="6.5.13"} 1

Files Created

All manifests committed to homelab repo:

  1. application.yaml - ArgoCD Application definition (wave 3)
  2. deployment.yaml - Exporter deployment with health checks and resource limits
  3. secret.yaml - FlashArray API credentials (tokens.yaml format)
  4. service.yaml - ClusterIP service exposing /metrics
  5. servicemonitor.yaml - Prometheus Operator integration

Git Commit: cb5ffc1 - "Add Pure FlashArray OpenMetrics exporter to monitoring namespace"

Next Steps for JARVIS

  1. Verify Prometheus Scraping

    • Check Prometheus UI → Status → Targets
    • Look for serviceMonitor/monitoring/pure-fa-exporter/0 target
    • Should show state: UP
  2. Test Metrics in Prometheus

    • Navigate to Prometheus UI → Graph
    • Query: purefa_info - Should return array information
    • Query: purefa_array_space_bytes{space="capacity"} - Total capacity
    • Query: purefa_array_performance_throughput_iops - IOPS metrics
  3. Grafana Dashboard (Optional)

Configuration Notes

Multi-Target Exporter Pattern

The exporter follows Prometheus multi-target pattern:

  • Single exporter instance can scrape multiple arrays
  • Array selection via ?endpoint=<array_id> query parameter
  • Array credentials in tokens.yaml (array_id → endpoint + api_token mapping)

Scrape Frequency

  • Current: 60s interval
  • Rationale: Storage metrics are relatively static, high frequency unnecessary
  • Adjustable: Modify servicemonitor.yaml if faster updates needed

Security Context

  • Runs as non-root user (UID 65534)
  • Read-only token mount
  • No elevated privileges required

Troubleshooting

If metrics are not appearing in Prometheus:

  1. Check ServiceMonitor Selection

    kubectl get servicemonitor -n monitoring pure-fa-exporter -o yaml
    

    Ensure release: monitoring label exists for prometheus-operator selector

  2. Verify Exporter Logs

    kubectl logs -n monitoring -l app.kubernetes.io/name=pure-fa-exporter
    
  3. Test Endpoint Directly

    kubectl run curl-test --image=curlimages/curl:latest --rm -i --restart=Never -n monitoring -- \
      curl -s http://pure-fa-exporter:9490/metrics?endpoint=utilidor | head
    
  4. Check Prometheus Operator Logs

    kubectl logs -n monitoring -l app.kubernetes.io/name=prometheus-operator
    

References


Deployment completed successfully. Prometheus should begin scraping FlashArray metrics within 60 seconds.