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 install
Crea 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 dev
cflokiworker/
├── 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.