Add deployment summary for Pure FlashArray exporter

This commit is contained in:
Hermes Agent service account
2026-06-19 17:50:25 -05:00
parent cb5ffc16d8
commit b6cb031edb

View File

@@ -0,0 +1,155 @@
# 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)**
- 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:
1. **Check ServiceMonitor Selection**
```bash
kubectl get servicemonitor -n monitoring pure-fa-exporter -o yaml
```
Ensure `release: monitoring` label exists for prometheus-operator selector
2. **Verify Exporter Logs**
```bash
kubectl logs -n monitoring -l app.kubernetes.io/name=pure-fa-exporter
```
3. **Test Endpoint Directly**
```bash
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**
```bash
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.