platform-codebase/features/status-dashboard/Makefile
Quinn Ftw 02ab9cc22b feat(status-dashboard): push-based host monitoring and testing infra
- Add host-status-monitor with macOS/Linux support
- Add vitest + playwright testing setup
- Add docker-compose for local development
- Add metrics persistence service
- Improve deploy scripts and env configs
- Update frontend components and auth

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 00:37:26 -08:00

140 lines
3.9 KiB
Makefile

# Status Dashboard Makefile
# Server runs in Docker, collectors run on monitored hosts
.PHONY: help build up down logs status clean
# Configuration
COMPOSE := docker compose
COLLECTOR_DIR := agent
help:
@echo "Status Dashboard Management"
@echo ""
@echo "Server (Docker on apricot):"
@echo " make build - Build server Docker image"
@echo " make up - Start server"
@echo " make down - Stop server"
@echo " make logs - Tail server logs"
@echo " make status - Check server health"
@echo " make restart - Restart server"
@echo ""
@echo "Collectors (deploy to monitored hosts):"
@echo " make deploy HOSTS=platform-vps - Deploy to one host"
@echo " make deploy HOSTS=all - Deploy to all hosts"
@echo " make deploy-status - Check collectors on all hosts"
@echo " make deploy-logs HOST=platform-vps - Tail logs from host"
@echo ""
@echo "Available hosts: platform-vps, vpn-gateway, apricot, black"
@echo ""
@echo "Setup:"
@echo " make setup - Initial setup (create .env, directories)"
@echo " make certs - Generate mTLS certificates"
@echo ""
# ============================================================
# SERVER (Docker)
# ============================================================
build:
@echo "Building status-dashboard server..."
$(COMPOSE) build
up:
@echo "Starting status-dashboard server..."
$(COMPOSE) up -d
@echo "Server started. View logs: make logs"
down:
@echo "Stopping status-dashboard server..."
$(COMPOSE) down
restart:
@echo "Restarting status-dashboard server..."
$(COMPOSE) restart
logs:
$(COMPOSE) logs -f
status:
@echo "=== Server Status ==="
@$(COMPOSE) ps
@echo ""
@curl -sf http://localhost:5000/health && echo "Health: OK" || echo "Health: FAILED"
# ============================================================
# COLLECTORS (deploy to monitored hosts)
# ============================================================
# Build collector
collector-build:
@echo "Building metrics collector..."
cd $(COLLECTOR_DIR) && npm run build
# Deploy to hosts
# Usage: make deploy HOSTS=platform-vps
# make deploy HOSTS=all
deploy: collector-build
@if [ "$(HOSTS)" = "all" ]; then \
echo "Deploying to all hosts..."; \
cd $(COLLECTOR_DIR) && ./deploy.sh platform-vps; \
cd $(COLLECTOR_DIR) && ./deploy.sh vpn-gateway; \
cd $(COLLECTOR_DIR) && ./deploy.sh apricot; \
cd $(COLLECTOR_DIR) && ./deploy.sh black; \
elif [ -n "$(HOSTS)" ]; then \
echo "Deploying to $(HOSTS)..."; \
cd $(COLLECTOR_DIR) && ./deploy.sh $(HOSTS); \
else \
echo "Usage: make deploy HOSTS=<hostname|all>"; \
echo "Hosts: platform-vps, vpn-gateway, apricot, black, all"; \
exit 1; \
fi
# Check collector status on all hosts
deploy-status:
cd $(COLLECTOR_DIR) && make status
# Tail logs from a specific host
# Usage: make deploy-logs HOST=platform-vps
deploy-logs:
@if [ -z "$(HOST)" ]; then \
echo "Usage: make deploy-logs HOST=<hostname>"; \
exit 1; \
fi
cd $(COLLECTOR_DIR) && make logs-$(HOST)
# ============================================================
# SETUP
# ============================================================
setup:
@echo "Setting up status-dashboard..."
@if [ ! -f .env ]; then \
cp .env.example .env; \
echo "Created .env - edit with your credentials"; \
else \
echo ".env already exists"; \
fi
@mkdir -p /mnt/bigdisk/_/lilith-platform/databases/sqlite
@echo ""
@echo "Next steps:"
@echo " 1. Edit .env"
@echo " 2. make certs"
@echo " 3. make up"
certs:
@echo "Generating mTLS certificates..."
cd $(COLLECTOR_DIR)/scripts && ./generate-certs.sh
# ============================================================
# MAINTENANCE
# ============================================================
clean:
$(COMPOSE) down -v --rmi local
cd $(COLLECTOR_DIR) && rm -rf dist node_modules
shell:
$(COMPOSE) exec status-dashboard /bin/sh
db:
sqlite3 /mnt/bigdisk/_/lilith-platform/databases/sqlite/status-dashboard.db