Me gustaría monitorear las respuestas en un socket Unix sin alterar las conexiones originales y canalizarlas a un script para su procesamiento.
Sé cómo hacer esto con tcpdump para conexiones tcp, pero parece que no puedo encontrar una solución para los sockets locales de Unix.
¿Es esto posible?
Respuestas:
Hay un tipo que dice hacerlo creando una aplicación que actúa como una puerta de enlace entre dos sockets y registrando todos los datos que fluyen. Por lo tanto, no puede tocar un zócalo, pero si puede reiniciar el servicio y sintonizarlo para usar esta aplicación, podrá ver todo el tráfico.
Aquí está el enlace a la publicación: Unix Socket Sniffer
Hay otra forma que necesita para encontrar la identificación del proceso adjunta al socket, luego buscar con lsof el descriptor de archivo del socket y luego tocar el descriptor de archivo usando strace.
Si puede detener cualquier cliente / servidor que esté usando el socket y reconfigurarlo, siempre recomendaría el primer método, el segundo método es complicado y requiere que toque un proceso actual que en algunas aplicaciones podría causar que se bloquee.
Espero que alguien nos ilumine de otra manera :)
Buena suerte
fuente
puedes usar socat.
Lo que está sucediendo arriba: Primero mueva el zócalo original al calcetín. Original. Socat crea un nuevo socket ('UNIX-LISTEN') en la ubicación original y lo reenvía al original ('UNIX-connect'). El -v le dice a socat que también imprima la salida a STDERR.
fuente
También puede intentar usar strace en uno de los procesos a cada lado del socket, ya que esto le permitirá ver lo que está escrito / leído. Encontré en mis entornos de producción, no tengo socat, pero tengo strace.
Para cualquier propósito útil, establecer -s en algo grande es imprescindible.
fuente
strace -p <pid>
para ver un proceso en ejecución.strace -s9999 -f $(for i in $( pidof php5-fpm ) ; do echo -n " -p $i "; done ) 2>&1 | tee /tmp/php.log
y luego ejecuta las pruebas. Tiene el /tmp/php.log para verificar lentamente si el registro es demasiado grande. Si está recibiendo demasiado tráfico, haga una solicitud con una cadena de consulta con su nombre o algo así para que pueda buscarlo en los registrosprintf
ocupe de la repetición.printf " -p %s" $(pidof php5-fpm)
prefijará cada argumento pid con-p
y es mucho más práctico escribirlo.entonces:
fuente