Registro y métricas
Ajustes para el registro del bouncer y las métricas de Prometheus.
Registro
Sección titulada «Registro»logging.level Opcional
Sección titulada «logging.level »Env: LOG_LEVEL · Por defecto: info
Nivel de detalle del log:
| Nivel | Descripción |
|---|---|
debug | Información detallada para depuración (muy verboso) |
info | Mensajes de funcionamiento normal |
warn | Condiciones de advertencia |
error | Solo condiciones de error |
logging: level: "debug" # Útil para diagnosticar problemaslogging.format Opcional
Sección titulada «logging.format »Env: LOG_FORMAT · Por defecto: text
Formato de salida del log:
text— salida legible y con colores (ideal para consola/journalctl)json— JSON estructurado (ideal para sistemas de agregación de logs)
logging.file Opcional
Sección titulada «logging.file »Env: LOG_FILE · Por defecto: —
Ruta a un archivo de log. Déjala vacía —el valor por defecto— y el bouncer escribe solo en stderr, igual que antes de que esta clave hiciera nada.
Cuando se define, las líneas de log van a stderr y al archivo. El archivo es una adición, no un desvío: journalctl -u cs-routeros-bouncer y docker logs siguen funcionando. Se abre en modo append, así que un reinicio nunca descarta el historial de baneos, y se crea con modo 0640 porque las líneas registran las IP de los clientes baneados.
No hay rotación integrada y el descriptor del archivo se mantiene abierto durante toda la vida del proceso. Una herramienta de rotación que renombre el archivo (logrotate sin copytruncate) dejará al bouncer escribiendo en el inodo renombrado hasta que reinicie: usa copytruncate, o apóyate en journalctl y deja esta clave sin definir.
Métricas de Prometheus
Sección titulada «Métricas de Prometheus»metrics.enabled Opcional
Sección titulada «metrics.enabled »Env: METRICS_ENABLED · Por defecto: false
Habilita el endpoint de métricas de Prometheus. Cuando está habilitado, el bouncer expone métricas en /metrics. La comprobación de salud /health se sirve siempre en el listener de métricas, independientemente de este ajuste.
metrics.listen_addr Opcional
Sección titulada «metrics.listen_addr »Env: METRICS_ADDR · Por defecto: 0.0.0.0
Dirección de escucha del servidor HTTP de métricas.
metrics.listen_port Opcional
Sección titulada «metrics.listen_port »Env: METRICS_PORT · Por defecto: 2112
Puerto de escucha del servidor HTTP de métricas.
metrics: enabled: true listen_addr: "0.0.0.0" listen_port: 2112metrics.routeros_poll_interval Opcional
Sección titulada «metrics.routeros_poll_interval »Env: METRICS_ROUTEROS_POLL_INTERVAL · Por defecto: 30s
Frecuencia con la que se consulta RouterOS para obtener métricas del sistema (carga de CPU, memoria, temperatura). Configúralo en 0 para deshabilitar la recopilación de métricas del sistema.
metrics: routeros_poll_interval: "30s"metrics.track_processed Avanzado
Sección titulada «metrics.track_processed »Env: METRICS_TRACK_PROCESSED · Por defecto: true
Habilita el seguimiento del tráfico procesado (no bloqueado) a través del firewall. Cuando está habilitado, el bouncer crea reglas de conteo passthrough en RouterOS para medir todo el tráfico que pasa por las cadenas monitorizadas y envía los datos tanto a Prometheus como a LAPI.
Configúralo en false para deshabilitar el seguimiento del tráfico procesado, lo que evita crear reglas adicionales en el router y reduce la sobrecarga de métricas.
metrics: track_processed: truemetrics.pprof_enabled Avanzado
Sección titulada «metrics.pprof_enabled »Env: METRICS_PPROF_ENABLED · Por defecto: false
Sirve el perfilador de Go bajo /debug/pprof en el listener de métricas, para
investigar dónde gasta CPU o retiene memoria el bouncer:
go tool pprof -seconds 30 http://127.0.0.1:2112/debug/pprof/profilego tool pprof http://127.0.0.1:2112/debug/pprof/heapDéjalo apagado salvo que estés perfilando, y pon
metrics.listen_addr: "127.0.0.1" mientras esté activo. Dos razones, ambas
concretas: un perfil de heap contiene fragmentos de lo que el proceso haya
tenido en memoria —tu API key de CrowdSec y la contraseña del router entre
ellos— y /debug/pprof/profile mantiene una petición abierta durante toda su
ventana de muestreo, lo que lo convierte en una palanca de denegación de
servicio en un listener expuesto.
El bouncer registra un aviso en cada arranque mientras esto está activo, de modo que un ajuste olvidado se ve en lugar de pasar callado.
metrics: pprof_enabled: false listen_addr: "127.0.0.1"