En el post anterior explicaba los problemas que nos hemos ido encontrando en el día a día con Kafka. Uno de ellos fue el problema de los permisos en la carpeta /opt/kafka y que eso implicaba que no se pudieran crear los directorios y ficheros de log. La solución era sencilla, cambiar los permisos a la carpeta y punto. Pero antes de esos tuvimos que ver que en realidad el proceso no tenía ningún fichero de log abierto. Sé que es algo sencillo, pero para los que no lo sepan, ahí va.

Como ver los ficheros que un proceso determinado tiene abiertos

El sistema de fichero proc es un pseudo sistema de ficheros que nos sirve como interficie de acceso a las estructuras de datos del kernel. Generalmente se monta en /proc, y podemos usarlo para ver, entre otras muchas cosas, los ficheros que tiene abiertos un proceso en particular.

En nuestro caso queríamos ver los ficheros que tenía abiertos el Kafka (que es una aplicación java), así que primero, buscamos los procesos de java que se estan ejecutando

$ pidof java

En nuestro caso nos devuelve dos identificadores, lo cuál tiene sentido pues además del kafka también ejecutamos el zookeeper. Con un top podemos ver también qué proceso estamos buscando. En fin, supongamos que nuestro proceso tiene el pid 1978. Entonces, usando el sistema de ficheros proc, montado en /proc, podemos hacer lo siguiente.

ubnsrv01:~# ls -l /proc/1978/fd/ 
lrwx------ 1 kafka kafka 64 Jan 13 09:23 100 -> /data/kafka/queue.comb.unica-5/00000000000000000000.log
lrwx------ 1 kafka kafka 64 Jan 13 09:23 101 -> /data/kafka/__consumer_offsets-17/00000000000000000000.log
lrwx------ 1 kafka kafka 64 Jan 13 09:23 102 -> /data/kafka/queue.comb.unica-0/00000000000000005838.log
lrwx------ 1 kafka kafka 64 Jan 13 09:23 103 -> /data/kafka/queue.comb.unica-0/00000000000000000000.log
lrwx------ 1 kafka kafka 64 Jan 13 09:23 104 -> /data/kafka/__consumer_offsets-29/00000000000000000000.log
lrwx------ 1 kafka kafka 64 Jan 13 09:23 105 -> /data/kafka/__consumer_offsets-18/00000000000000000000.log
lrwx------ 1 kafka kafka 64 Jan 13 09:23 106 -> /data/kafka/__consumer_offsets-48/00000000000000000000.log
lrwx------ 1 kafka kafka 64 Jan 13 09:23 107 -> /data/kafka/queue.comb.unica-7/00000000000000005925.log
lrwx------ 1 kafka kafka 64 Jan 13 09:23 108 -> /data/kafka/queue.comb.unica-7/00000000000000000000.log

Nos devuelve un listado con todos los ficheros abiertos. Evidentemente podemos usar pipes para filtrar y/o buscar si algún fichero en particular está siendo usado.

Saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s