Un Cloudflare Tail Worker moderno para enviar logs y excepciones no manejadas a Grafana Loki desde tus Cloudflare Workers.
- Agregación de logs en tiempo real desde múltiples Cloudflare Workers
- Transformación automática de eventos de trace a formato Loki
- Autenticación segura con credenciales Base64
- Despliegue automatizado con GitHub Actions
- TypeScript completo con tipos de Cloudflare Workers
- Entorno de desarrollo moderno con Bun y ESLint
- Cuenta de Cloudflare con Workers habilitado
- Instancia de Grafana Loki accesible
- Node.js 18+ o Bun (recomendado)
- Wrangler CLI
git clone https://github.com/CarmeloCampos/cflokiworker.git
cd cflokiworker
bun installCrea los siguientes secretos en tu repositorio de GitHub:
CLOUDFLARE_API_TOKEN: Token de API de CloudflareCLOUDFLARE_ACCOUNT_ID: ID de tu cuenta de CloudflareLOKI_PUSH_URL: URL HTTP de tu instancia de LokiLOKI_CREDENTIALS: Credenciales codificadas en Base64 (username:password)
Agrega esta configuración al wrangler.toml de los workers que quieres monitorear:
tail_consumers = [{ service = "logger" }]Ejemplo en wrangler.json
"tail_consumers": [{ "service": "logger" }]bun run deploy# Instalar dependencias
bun install
# Ejecutar linter
bun run lint
# Compilar proyecto
bun run build
# Desplegar a Cloudflare
bun run deploy
# Desarrollo local
bun run devcflokiworker/
├── src/
│ └── index.ts # Función principal del tail worker
├── .github/
│ └── workflows/
│ └── deploy.yml # Pipeline de CI/CD
├── worker-configuration.d.ts # Tipos de Cloudflare Workers
├── wrangler.toml # Configuración de Wrangler
├── tsconfig.json # Configuración de TypeScript
├── eslint.config.mjs # Configuración de ESLint
└── package.json # Dependencias y scripts
Este worker está siendo utilizado en producción para recopilar logs del API Gateway de ScreenshotOne, demostrando su confiabilidad para escenarios de agregación de logs a gran escala.
El proyecto incluye un pipeline automatizado que:
- ✅ Valida la calidad del código con ESLint
- 🔨 Compila TypeScript a JavaScript
- 🚀 Despliega automáticamente a Cloudflare Workers
- 🌍 Distribuye globalmente en la red edge de Cloudflare
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -am 'Agregar nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
- Documentación oficial de Cloudflare Tail Workers
- Guía de integración con Grafana Loki
- Documentación de Grafana Loki
Este proyecto está licenciado bajo la Licencia MIT.
Nota: Este worker está optimizado para el runtime de Cloudflare Workers y utiliza las últimas características de TypeScript y herramientas modernas de desarrollo.