Pregunta

Ok, ese título será un poco confuso. Déjame intentar explicarlo un poco mejor. Estoy construyendo un programa de registro. El programa tendrá 3 estados principales:

  1. Escriba a un archivo búfer de robo redondo, manteniendo solo los últimos 10 minutos de datos.

  2. Escriba en un archivo de búfer, ignorando el tiempo (registre todos los datos).

  3. Cambie el nombre de un archivo búfer completo y comience uno nuevo con los últimos 10 minutos de datos (y cambie de estado a 1).

Ahora, el caso de uso es este. He estado experimentando algunos cuellos de botella de red de vez en cuando en nuestra red. Por lo tanto, quiero construir un sistema para registrar el tráfico TCP cuando detecta el cuello de botella (detección a través de Nagios). Sin embargo, para cuando detecta la cuello de botella, la mayoría de los datos útiles ya se han transmitido.

Entonces, lo que me gustaría es tener un Deamon que ejecute algo como dumpcap todo el tiempo. En el modo normal, solo mantendrá los últimos 10 minutos de datos (ya que no tiene sentido mantener una carga de datos de una embarcación si no es necesario). Pero cuando Nagios alerta, enviaré una señal en el Deamon para almacenar todo. Luego, cuando Naigos se recupera, enviará otra señal para dejar de almacenar y enjuagar el búfer a un archivo de guardado.

Ahora, el problema es que no puedo ver cómo almacenar limpiamente 10 minutos de datos rotativos. Podría almacenar un archivo nuevo cada 10 minutos y eliminar los viejos si está en el modo 1. Pero eso me parece un poco sucio (especialmente cuando se trata de descubrir cuándo ocurrió la alerta en el archivo).

Idealmente, el archivo que se guardó debe ser tal que la alerta siempre esté en la marca de las 10:00 en el archivo. Si bien eso es posible con archivos nuevos cada 10 minutos, parece un poco sucio "reparar" los archivos a ese punto.

¿Algunas ideas? ¿Debo hacer un sistema de archivos giratorio y combinarlos en 1 al final (haciendo un poco de postprocesamiento)? ¿Hay alguna manera de implementar el archivo de sembra semi-ronhondea limpiamente para que no haya necesidad de ningún procesamiento posterior?

Gracias

Ah, y el lenguaje no importa tanto en esta etapa (me estoy inclinando hacia Python, pero no tengo objeciones a ningún otro idioma. Es menos un problema que el diseño general) ...

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top