Cómo monitorear la actividad del usuario con psacct o acct Tools


psacct o acct son aplicaciones de código abierto para monitorear las actividades de los usuarios en el sistema. Estas aplicaciones se ejecutan en segundo plano y realizan un seguimiento de la actividad de cada usuario en su sistema, así como de los recursos que se consumen.

Yo personalmente utilicé este programa en nuestra empresa, tenemos un equipo de desarrollo donde nuestros desarrolladores trabajan continuamente en los servidores. Por lo tanto, este es uno de los mejores programas para vigilarlos. Este programa proporciona una manera excelente de monitorear lo que están haciendo los usuarios, qué comandos están disparando, cuántos recursos están consumiendo, cuánto tiempo los usuarios están activos en el sistema. Otra gran característica de este programa es que brinda los recursos totales consumidos por servicios como Apache, MySQL, FTP, SSH, etc.

Creo que esta es una de las aplicaciones más importantes y necesarias para todos los administradores de sistemas Linux/Unix, que querían realizar un seguimiento de las actividades de los usuarios en sus servidores/sistemas.

El paquete psacct o acct proporciona varias funciones para monitorear las actividades del proceso.

  1. El comando ac imprime las estadísticas de los inicios/cierres de sesión de los usuarios (tiempo de conexión) en horas.
  2. el comando lastcomm imprime la información de los comandos del usuario ejecutados previamente.
  3. los comandos accton se utilizan para activar/desactivar el proceso de contabilidad.
  4. El comando sa resume la información de los comandos ejecutados anteriormente.
  5. Los comandos last y lastb muestran una lista de los últimos usuarios que iniciaron sesión.

Instalación de paquetes psacct o acct

psacct o acct son paquetes similares y no hay mucha diferencia entre ellos, pero el paquete psacct solo está disponible para distribuciones basadas en rpm como RHEL, CentOS y Fedora, mientras que el paquete acct está disponible para distribuciones como Ubuntu, Debian y Linux Mint.

Para instalar el paquete psacct en distribuciones basadas en rpm, emita el siguiente comando yum.

# yum install psacct

Para instalar el paquete acct usando el comando apt-get en Ubuntu/Debian/Linux Mint.

$ sudo apt-get install acct

OR

# apt-get install acct

Por defecto, el servicio psacct está en modo deshabilitado y debe iniciarlo manualmente en los sistemas RHEL/CentOS/Fedora. Utilice el siguiente comando para verificar el estado del servicio.

# /etc/init.d/psacct status
Process accounting is disabled.

Verá que el estado se muestra como deshabilitado, así que iniciemos manualmente usando los siguientes dos comandos. Estos dos comandos crearán un archivo/var/account/pacct e iniciarán los servicios.

# chkconfig psacct on
# /etc/init.d/psacct start
Starting process accounting:                               [  OK  ]

Después de iniciar el servicio, verifique el estado nuevamente, obtendrá el estado habilitado como se muestra a continuación.

# /etc/init.d/psacct status
Process accounting is enabled.

En Ubuntu, el servicio Debian y Mint se inicia automáticamente, no es necesario que lo vuelva a iniciar.

El comando ac sin especificar ningún argumento mostrará las estadísticas totales del tiempo de conexión en horas en función de los inicios/cierres de sesión del usuario desde el archivo wtmp actual.

# ac
total     1814.03

El uso del comando "ac -d" imprimirá el tiempo total de inicio de sesión en horas por día.

# ac -d
Sep 17  total        5.23
Sep 18  total       15.20
Sep 24  total        3.21
Sep 25  total        2.27
Sep 26  total        2.64
Sep 27  total        6.19
Oct  1  total        6.41
Oct  3  total        2.42
Oct  4  total        2.52
Oct  5  total        6.11
Oct  8  total       12.98
Oct  9  total       22.65
Oct 11  total       16.18

El uso del comando “ac -p” imprimirá el tiempo total de inicio de sesión de cada usuario en horas.

# ac -p
        root                              1645.18
        tecmint                            168.96
        total     1814.14

Para obtener el tiempo total de estadísticas de inicio de sesión del usuario "tecmint" en horas, use el comando as.

# ac tecmint
 total      168.96

El siguiente comando imprimirá el tiempo de inicio de sesión total por día del usuario "tecmint" en horas.

# ac -d tecmint
Oct 11  total        8.01
Oct 12  total       24.00
Oct 15  total       70.50
Oct 16  total       23.57
Oct 17  total       24.00
Oct 18  total       18.70
Nov 20  total        0.18

El comando "sa" se utiliza para imprimir el resumen de los comandos que ejecutaron los usuarios.

# sa
       2       9.86re       0.00cp     2466k   sshd*
       8       1.05re       0.00cp     1064k   man
       2      10.08re       0.00cp     2562k   sshd
      12       0.00re       0.00cp     1298k   psacct
       2       0.00re       0.00cp     1575k   troff
      14       0.00re       0.00cp      503k   ac
      10       0.00re       0.00cp     1264k   psacct*
      10       0.00re       0.00cp      466k   consoletype
       9       0.00re       0.00cp      509k   sa
       8       0.02re       0.00cp      769k   udisks-helper-a
       6       0.00re       0.00cp     1057k   touch
       6       0.00re       0.00cp      592k   gzip
       6       0.00re       0.00cp      465k   accton
       4       1.05re       0.00cp     1264k   sh*
       4       0.00re       0.00cp     1264k   nroff*
       2       1.05re       0.00cp     1264k   sh
       2       1.05re       0.00cp     1120k   less
       2       0.00re       0.00cp     1346k   groff
       2       0.00re       0.00cp     1383k   grotty
       2       0.00re       0.00cp     1053k   mktemp
       2       0.00re       0.00cp     1030k   iconv
       2       0.00re       0.00cp     1023k   rm
       2       0.00re       0.00cp     1020k   cat
       2       0.00re       0.00cp     1018k   locale
       2       0.00re       0.00cp      802k   gtbl

  1. 9.86re es un "tiempo real" según los minutos del reloj de pared
  2. 0.01cp es una suma del tiempo del sistema/usuario en minutos de la CPU
  3. 2466k es un uso de núcleo promedio en tiempo de CPU, es decir, 1k unidades
  4. nombre del comando sshd

Para obtener la información de un usuario individual, use las opciones -u.

# sa -u
root       0.00 cpu      465k mem accton
root       0.00 cpu     1057k mem touch
root       0.00 cpu     1298k mem psacct
root       0.00 cpu      466k mem consoletype
root       0.00 cpu     1264k mem psacct           *
root       0.00 cpu     1298k mem psacct
root       0.00 cpu      466k mem consoletype
root       0.00 cpu     1264k mem psacct           *
root       0.00 cpu     1298k mem psacct
root       0.00 cpu      466k mem consoletype
root       0.00 cpu     1264k mem psacct           *
root       0.00 cpu      465k mem accton
root       0.00 cpu     1057k mem touch

Este comando imprime el número total de procesos y minutos de CPU. Si ve un aumento continuo en estos números, entonces es hora de investigar el sistema sobre lo que está sucediendo.

# sa -m
sshd                                    2       9.86re       0.00cp     2466k
root                                  127      14.29re       0.00cp      909k

El comando "sa -c" muestra el porcentaje más alto de usuarios.

# sa -c
 132  100.00%      24.16re  100.00%       0.01cp  100.00%      923k
       2    1.52%       9.86re   40.83%       0.00cp   53.33%     2466k   sshd*
       8    6.06%       1.05re    4.34%       0.00cp   20.00%     1064k   man
       2    1.52%      10.08re   41.73%       0.00cp   13.33%     2562k   sshd
      12    9.09%       0.00re    0.01%       0.00cp    6.67%     1298k   psacct
       2    1.52%       0.00re    0.00%       0.00cp    6.67%     1575k   troff
      18   13.64%       0.00re    0.00%       0.00cp    0.00%      509k   sa
      14   10.61%       0.00re    0.00%       0.00cp    0.00%      503k   ac
      10    7.58%       0.00re    0.00%       0.00cp    0.00%     1264k   psacct*
      10    7.58%       0.00re    0.00%       0.00cp    0.00%      466k   consoletype
       8    6.06%       0.02re    0.07%       0.00cp    0.00%      769k   udisks-helper-a
       6    4.55%       0.00re    0.00%       0.00cp    0.00%     1057k   touch
       6    4.55%       0.00re    0.00%       0.00cp    0.00%      592k   gzip
       6    4.55%       0.00re    0.00%       0.00cp    0.00%      465k   accton
       4    3.03%       1.05re    4.34%       0.00cp    0.00%     1264k   sh*
       4    3.03%       0.00re    0.00%       0.00cp    0.00%     1264k   nroff*
       2    1.52%       1.05re    4.34%       0.00cp    0.00%     1264k   sh
       2    1.52%       1.05re    4.34%       0.00cp    0.00%     1120k   less
       2    1.52%       0.00re    0.00%       0.00cp    0.00%     1346k   groff
       2    1.52%       0.00re    0.00%       0.00cp    0.00%     1383k   grotty
       2    1.52%       0.00re    0.00%       0.00cp    0.00%     1053k   mktemp

El comando "latcomm" se utiliza para buscar y mostrar información de comandos de usuario ejecutados previamente. También puede buscar comandos de nombres de usuario individuales. Por ejemplo, vemos comandos de usuario (tecmint).

# lastcomm tecmint
su                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
id                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
grep                    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
grep                    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
dircolors               tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
tput                    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
tty                     tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
id                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
id                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56

Con la ayuda del comando lastcomm, podrá ver el uso individual de cada comando.

# lastcomm ls
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56