Saltar al contenido principal

suricatavel-agent

suricatavel-agent es un agente que lee los archivos eve.json generado por Suricata y publica los eventos a través de Kafka o HTTP de forma fiable.

  • Lectura continua de eve.json.
  • Batching de tamaño adaptativo de eventos para eficiencia y control de latencia.
  • Buffer local y reintentos: cuando el transporte no está disponible, los eventos se guardan en storage/app/suricatavel-agent.sqlite y se reenvían con backoff exponencial.
  • Dead Letter Queue (DLQ) persistente para mensajes que exceden los intentos máximos.
  • Mensajes periódicos para indicar estado (running, starting, error, shutdown).
  • Soporte de SASL/SSL (Kafka) con certificados y credenciales configurables.
  • Acceso a los ficheros eve.json de Suricata.
  • PHP 8.4 con extensión rdkafka, si usamos Kafka.

Ejecuta los siguientes comandos para añadir la clave GPG y la fuente del repositorio.

Ventana de terminal
# 1. Instalar prerrequisitos
apt-get update
apt-get install -y ca-certificates curl gpg
# 2. Añadir clave GPG
curl -fsSL https://suricatavel.org/suricatavel.gpg | \
gpg --dearmor -o /usr/share/keyrings/suricatavel.gpg
# 3. Añadir fuente del repositorio
echo "deb [signed-by=/usr/share/keyrings/suricatavel.gpg] https://repository.suricatavel.org/ stable main" | \
tee /etc/apt/sources.list.d/suricatavel.sources
# 4. Actualizar índice
apt-get update
Ventana de terminal
apt-get install -y suricatavel-agent

Si estás usando HTTP, debes registrar el agente para obtener un token de autenticación.

  1. Obtener Token: Obtén tu Token de registro desde el dashboard de Suricatavel.

  2. Ejecutar el comando de registro:

    Ventana de terminal
    # Ejemplo para instalación estándar
    php artisan agent:register --token=TU_TOKEN --url=https://tu-suricatavel.com
    # Ejemplo para binario estático (Unifi)
    cd /data
    ./suricatavel-agent php-cli artisan agent:register --token=TU_TOKEN --url=https://tu-suricatavel.com
  3. Verificar: Este comando guardará automáticamente el HTTP_AUTH_TOKEN en tu archivo .env.

Variables de entorno típicas (o claves en config/*.php):

  • SURICATA_EVE_JSON_PATHS: Ruta única o lista separada por comas de rutas al fichero eve.json (por defecto: /var/log/suricata/eve.json).
  • AGENT_TRANSPORT_DRIVER: http (por defecto) o kafka.
  • AGENT_CONTROLLER_URL: URL base del controlador de Suricatavel (por defecto: https://suricatavel.example.com/).
  • HTTP_AUTH_TOKEN: Token de autenticación para transporte HTTP.
  • KAFKA_BROKERS: Lista de brokers, ej. kafka1:9092,kafka2:9092 (si se usa Kafka).
  • KAFKA_TOPIC: Nombre del tópico de eventos (por defecto: suricatavel-events).
  • KAFKA_HEARTBEAT_TOPIC: Nombre del tópico de heartbeats (por defecto: suricatavel-heartbeats).
  • Seguridad (si se usa Kafka): KAFKA_SSL_ENABLED, KAFKA_SSL_CA_LOCATION, KAFKA_SSL_CERTIFICATE_LOCATION, KAFKA_SSL_KEY_LOCATION, KAFKA_SASL_ENABLED, KAFKA_SASL_MECHANISM, KAFKA_SASL_USERNAME, KAFKA_SASL_PASSWORD, etc.
  • Buffer y reintentos: AGENT_BUFFER_MAX_RETRY_ATTEMPTS, AGENT_BUFFER_RETRY_WAIT_TIME (en segundos).
  • Heartbeats: AGENT_HEARTBEAT_ENABLED, AGENT_HEARTBEAT_INTERVAL (en segundos).

El paquete instala automáticamente una configuración de Supervisor. Para iniciar el agente y habilitarlo en el arranque:

Ventana de terminal
systemctl enable supervisor
systemctl start supervisor
supervisorctl start suricatavel-agent

Ejecución manual (para depuración):

Ventana de terminal
php artisan agent:start

Suricatavel puede consumir los eventos enviados por el agente desde Kafka (kafka.topics.events) o vía HTTP. Verifica en Suricatavel que la configuración coincida con el transporte del agente.

  • Ajusta el tamaño de lote y los intervalos de reintento si observas latencias altas o picos.
  • Verifica los logs en storage/logs/. Puedes ajustar el nivel de debug de Kafka en el fichero de configuración config/kafka.php.
  • Si Kafka no está disponible, los eventos quedarán en el buffer SQLite; tras recuperar conectividad se reintentarán automáticamente.