Add UnPoller for UniFi network metrics #298

Merged
eblume merged 8 commits from feature/unpoller into main 2026-03-16 15:52:45 -07:00
Owner

Summary

  • Deploy UnPoller as a k8s service on indri to export UniFi controller metrics to Prometheus
  • Custom-built container from forge mirror (containers/unpoller/Dockerfile)
  • Credentials pulled from 1Password via external-secrets
  • Prometheus scrape job added, docs and service-versions updated

Test plan

  • Build container: mise run container-release unpoller v2.34.0
  • Update kustomization tag with built image tag
  • Deploy from branch: argocd app set unpoller --revision feature/unpoller && argocd app sync unpoller
  • Verify pod connects to UX7 controller (check logs)
  • Confirm unpoller target appears in Prometheus
  • Query unifi_ metrics in Grafana

🤖 Generated with Claude Code

## Summary - Deploy UnPoller as a k8s service on indri to export UniFi controller metrics to Prometheus - Custom-built container from forge mirror (`containers/unpoller/Dockerfile`) - Credentials pulled from 1Password via external-secrets - Prometheus scrape job added, docs and service-versions updated ## Test plan - [ ] Build container: `mise run container-release unpoller v2.34.0` - [ ] Update kustomization tag with built image tag - [ ] Deploy from branch: `argocd app set unpoller --revision feature/unpoller && argocd app sync unpoller` - [ ] Verify pod connects to UX7 controller (check logs) - [ ] Confirm `unpoller` target appears in Prometheus - [ ] Query `unifi_` metrics in Grafana 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Deploy UnPoller as a k8s service on indri to export UniFi controller
metrics to Prometheus. Custom-built container from forge mirror, with
credentials pulled from 1Password via external-secrets.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Local API key auth doesn't work with the UX7's new Integration API.
Use the remote Site Manager API instead, which auto-discovers consoles.
Events disabled due to upstream bug (unpoller/unpoller#966).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The UX7's local Integration API key works against both the new
Integration API and the classic controller API. Remote mode not needed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fetches 6 Prometheus dashboards from the forge-mirrored
unpoller/dashboards repo at pod startup, matching the
TeslaMate dashboard pattern.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Upstream dashboards hardcode a different Prometheus datasource UID.
Patch them at download time to match our 'prometheus' UID. Remove the
Client DPI dashboard since DPI is not enabled on the UX7.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
eblume merged commit 4dc3e5cae2 into main 2026-03-16 15:52:45 -07:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
eblume/blumeops!298
No description provided.