Add Docker health check support

Implements #406 by adding a --health CLI flag and HEALTHCHECK instruction
to the Dockerfile. This allows Docker and container orchestration platforms
to monitor container health automatically.

Changes:
- Added --health flag that validates configuration and plugin connectivity
- Implemented HealthCheck() method in pkg/poller/commands.go
- Updated Dockerfile with HEALTHCHECK instruction (30s interval, 10s timeout)
- Updated MANUAL.md with --health flag documentation
- Added health check documentation to Docker README
- Added comments to docker-compose examples about built-in health check

The health check:
- Validates configuration file is found and parseable
- Ensures at least one input and one enabled output are configured
- Performs basic validation on enabled outputs
- Returns exit code 0 (healthy) or 1 (unhealthy)
- Runs silently for Docker compatibility

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Cody Lee
2025-12-08 13:09:10 -06:00
parent ef677c8f74
commit b960695f3b
8 changed files with 103 additions and 1 deletions

View File

@@ -9,3 +9,18 @@ in InfluxDB by UniFi Poller.
##### HOWTO
**Learn more about how and when to use these *Docker Compose* files in the
[Docker Wiki](https://unpoller.com/docs/install/dockercompose).**
## Health Check
The UniFi Poller Docker image includes a built-in health check that validates
the configuration and checks plugin connectivity. The health check runs every
30 seconds and marks the container as unhealthy if configuration issues are
detected or if enabled outputs cannot be reached.
You can manually run the health check:
```bash
docker exec <container_name> /usr/bin/unpoller --health
```
The health check is automatically used by Docker and container orchestration
platforms (Kubernetes, Docker Swarm, etc.) to determine container health status.

View File

@@ -34,6 +34,8 @@ services:
unifi-poller:
restart: always
image: ghcr.io/unpoller/unpoller:${POLLER_TAG}
# Health check is built into the Docker image
# It validates configuration and checks plugin connectivity
depends_on:
- grafana
- influxdb

View File

@@ -36,6 +36,8 @@ services:
unifi-poller:
restart: always
image: ghcr.io/unpoller/unpoller:${POLLER_TAG}
# Health check is built into the Docker image
# It validates configuration and checks plugin connectivity
environment:
- UP_INFLUXDB_USER=${INFLUXDB_ADMIN_USER}
- UP_INFLUXDB_PASS=${INFLUXDB_ADMIN_PASSWORD}