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 eventspurefa_array_performance_*- Performance metrics (IOPS, bandwidth, latency)purefa_array_space_*- Capacity metricspurefa_volume_*- Volume metricspurefa_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:
- application.yaml - ArgoCD Application definition (wave 3)
- deployment.yaml - Exporter deployment with health checks and resource limits
- secret.yaml - FlashArray API credentials (tokens.yaml format)
- service.yaml - ClusterIP service exposing /metrics
- servicemonitor.yaml - Prometheus Operator integration
Git Commit: cb5ffc1 - "Add Pure FlashArray OpenMetrics exporter to monitoring namespace"
Next Steps for JARVIS
-
Verify Prometheus Scraping
- Check Prometheus UI → Status → Targets
- Look for
serviceMonitor/monitoring/pure-fa-exporter/0target - Should show state: UP
-
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
-
Grafana Dashboard (Optional)
- The Pure Storage community provides Grafana dashboards
- Reference: https://github.com/PureStorage-OpenConnect/pure-fa-openmetrics-exporter/tree/master/extra/grafana
- Can import dashboard JSON for fleet-wide overview
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:
-
Check ServiceMonitor Selection
kubectl get servicemonitor -n monitoring pure-fa-exporter -o yamlEnsure
release: monitoringlabel exists for prometheus-operator selector -
Verify Exporter Logs
kubectl logs -n monitoring -l app.kubernetes.io/name=pure-fa-exporter -
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 -
Check Prometheus Operator Logs
kubectl logs -n monitoring -l app.kubernetes.io/name=prometheus-operator
References
- Official Repo: https://github.com/PureStorage-OpenConnect/pure-fa-openmetrics-exporter
- Metrics Specification: See repo for full purefa_* metric namespace documentation
- Deployment Pattern: Based on portworx-csi GitOps structure
- ServiceMonitor Pattern: Based on kube-prometheus-stack conventions
Deployment completed successfully. Prometheus should begin scraping FlashArray metrics within 60 seconds.