• Publicidad

Monitorear Linux

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Monitorear Linux

Notapor lmol45 » 2015-09-11 12:41 @570

Para monitorización de CPU y unidades que disco que están conectadas y las características o propiedades de todos los dispositivos de la PC o servidor, ¿cómo se puede realizar?
lmol45
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2015-09-11 12:27 @560

Publicidad

Re: Linux Latinamérica: Script Perl Monitorear Consumo Real

Notapor explorer » 2015-09-13 15:31 @688

Bienvenido a los foros de Perl en Español, lmol45.

¿De qué sistema operativo estamos hablando?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Linux Latinamérica: Script Perl Monitorear Consumo Real

Notapor lmol45 » 2015-09-14 09:40 @444

Red Hat versión 5 y CentOS 6.4 para servidor. Estoy trabajando en un programa que me monitorice el estado de los dispositivos principales. Gracias de antemano por la ayuda.
lmol45
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2015-09-11 12:27 @560

Re: Linux Latinamérica: Script Perl Monitorear Consumo Real

Notapor explorer » 2015-09-14 12:42 @571

Yo suelo usar gkrellm (y gkrellmd) para ver el estado de las máquinas en tiempo real.

Si quiero ver gráficas cada 5 minutos, uso MRTG.

En Red Hat y CentOS, suele traer una aplicación gráfica, llamada "Monitor del sistema", que puedes ejecutar desde el menú del escritorio.

Te pido que mires este documento: Linux: Monitorización de rendimiento
(Quizás el SAR sea muy duro, pero el resto de utilidades son las imprescindibles para monitorizar).

Entonces, desde Perl yo suelo llamar a algunas de estas utilidades del sistema, cuando necesito realizar un procesado de lo que estas utilidades devuelven. Si no, saca el resultado directamente en pantalla.

Por ejemplo, si quiero que en uno de los paneles tmux aparezca el estado de los discos (su espacio libre), me basta con ejecutar el comando

watch -n 3 df -aH

Eso lo que hace es ejecutar cada 3 segundos el comando df (mostrar espacio reservado/libre en los discos) de todos los dispositivos (-a) y en modo abreviado (-H).

¿Nos puedes poner un ejemplo de lo que quieres obtener? A lo mejor se resuelve con un par de comandos en la terminal.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Linux Latinamérica: Script Perl Monitorear Consumo Real

Notapor lmol45 » 2015-09-18 09:52 @453

Okay, lo que necesito capturar es: RAM ocupada, RAM total, estado de CPU, nombre del SO, versión del SO, unidades de disco conectadas (espacio ocupado y espacio total). Básicamente eso. El problema es que no sé cómo tomar esos datos, para luego insertar esas bitácoras y almacenarlos en una BD. Como soy nuevo en Perl me está costando encontrar información para el desarrollo de este script debido a que los libros o páginas que he investigado no muestra sobre esta funcionalidad en Perl.
lmol45
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2015-09-11 12:27 @560

Re: Linux Latinamérica: Script Perl Monitorear Consumo Real

Notapor explorer » 2015-09-18 14:42 @654

Toda esa información te la da Linux en su árbol /sys o /proc/sys. Solo hay que acceder como si fuera archivos normales y sacar la información.

Por ejemplo, para ver la carga del procesador haríamos esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2. my $loadavg_file = '/proc/loadavg';     # nombre del archivo virtual
  3.  
  4. open my $LOAD, '<', $loadavg_file;      # abrir archivo en lectura
  5. my $loadavg = <$LOAD>;                  # leemos la línea
  6. close $LOAD;                            # cerramos
  7.  
  8. print $loadavg;                         # y lo sacamos en pantalla
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Lo mismo para todos los demás parámetros del sistema:
Hay módulos específicos para acceder a partes de esta información. Por ejemplo, con Linux::stat se accede datos estadísticos del sistema (tiempo que lleva encendido, carga de cada núcleo, total de operaciones en los discos, número de interrupciones, paginación).

De forma profesional, usaríamos la llamada del sistema sysinfo(2) del propio Linux. Una forma de hacerlo es con la distribución Perl Linux::SysInfo. Para los sistemas de archivos tienes Sys::Filesystem::Linux, que deriva de Sys::Filesystem.

Para sacar estadísticas, tienes cosas como Sys::Statistics::Linux.

Tienes muchos más módulos en la rama Linux::
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Monitorear Linux

Notapor lmol45 » 2015-09-21 10:06 @462

Gracias, haré pruebas para generar lo que necesito. Agradezco su colaboración. Cuando concluya les mostraré el resultado para compartir este conocimiento.
lmol45
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2015-09-11 12:27 @560

Re: Monitorear Linux

Notapor lmol45 » 2015-10-12 11:48 @533

La manera que encontré de trabajar con la información de los discos.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub discos() {
  2.     $comando  = `df -k`;
  3.     @recorte  = split( "\n", $comando );
  4.     $contador = split( "\n", $comando );
  5.     for ( my $i = 1; $i <= $contador - 1; $i++ ) {
  6.         my @Discos = split( " ", $recorte[$i] );
  7.         $Discos[1] = sprintf( "%.4f", $Discos[1] / 1048576 );
  8.         $Discos[2] = sprintf( "%.4f", $Discos[2] / 1048576 );
  9.         $almacenamiento = ($almacenamiento) . ("([$Discos[0] $i]-$Discos[2]/$Discos[1])");
  10.         $nroDispositivo++;
  11.     }
  12. }
  13.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
lmol45
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2015-09-11 12:27 @560

Re: Monitorear Linux

Notapor explorer » 2015-10-12 18:07 @797

Esta es otra forma, por completar:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2. use v5.18;
  3.  
  4. sub discos() {
  5.     my @discos = split "\n", qx(df -k);
  6.  
  7.     shift @discos;                              # quitamos la cabecera
  8.  
  9.     my $i = 1;
  10.  
  11.     for my $linea (sort @discos) {
  12.    
  13.         my @columnas = split " ", $linea;
  14.  
  15.         next if $columnas[0] !~ m{/dev/};       # saltamos a la siguiente $linea si no se trata
  16.                                                 # de un dispositivo
  17.  
  18.         map { $columnas[$_] = sprintf( "%.4f", $columnas[$_] / 1E6 ) } 1..2;
  19.  
  20.         say "([$columnas[0] $i]-$columnas[2]/$columnas[1])";
  21.     }
  22.     continue {
  23.         $i++;
  24.     }
  25. }
  26.  
  27. discos();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados