Monitoriza el rendimiento de nuestro sistema y
nos avisa de posibles cuelgues o problemas.
- SAR: Recopila y muestra datos de rendimiento del sistema
como uso de CPU, memoria, E/S de disco y red.
- SYSSTAT: Monitoriza el rendimiento del sistema y genera
gráficas.
- TOP: Muestra los procesos que más recursos consumen en
tiempo real.
- VMSTAT: Muestra estadísticas del sistema virtual como uso
de memoria, swap y E/S.
- ZABBIX: Sistema de monitor
2. Cómo ver los archivos de registro de
Linux en tiempo real
• Todas las distribuciones de Linux utilizan archivos
de registro para registrar los eventos del sistema,
incluyendo conectar dispositivos, sesiones nuevas
y otros mensajes.
• La mayoría de las distribuciones guardan estos
archivos en el directorio /var/log.
– Los comandos less y tail son útiles para leer estos
archivos en tiempo real.
– Algunos de los archivos están protegidos, hace falta
iniciar una sesión como usuario root o usar sudo para
leerlos.
3. El comando tail
• Use el comando tail -f para ver las últimas líneas de un
archivo y las actualizaciones del mismo. Por ejemplo, el
comando:
– tail -f /var/log/auth.log
Esto nos muestra eventos de autenticación como
sesiones nuevas y el uso de sudo en el sistema. Si un
usuario inicia una nueva sesión, verá la actualización del
archivo con la nueva información usando este comando.
Finalice el comando tail pulsando las teclas Ctrl y C
simultáneamente
4. El comando less
• El comando less +F es casi igual a usar tail -f, pero
proporciona acceso al archivo entero en vez de
las últimas líneas y también muestra cualquier
actualización en tiempo real.
• Por ejemplo, este comando:
– less +F /var/log/kern.log
– El kern.log muestra mensajes del kernel. Finalice el
comando pulsando las
teclas Ctrl y c simultáneamente, seguido por la tecla q.
5. Archivos de registro comunes
• Los archivos de registro varían por distribución. No obstante,
la mayoría de las distribuciones tienen al mínimo los
siguientes archivos:
– auth.log: Información sobre eventos de autenticación de
usuarios.
– boot.log: Muestra eventos y servicios empezados cuando
se inicia el sistema.
– crond.log: Tareas de cron
– daemon.log: Alertas de servicios como ntfs-3g o dhcpd.
– dmesg.log: Mensajes del kernel
– mysqld.log: Archivo de MySQL.
– syslog.log: Registro del sistema de registro.
6. ssh
• Antes de empezar a buscar logs es necesario
conectarse a un servidor, para hacerlo vía ssh
debemos ejecutar lo siguiente:
• 1 ssh user@host
• Permite conectarte a un host especificando un
usuario, una vez que lo ejecutes te pedirá un
password
• 1 ssh -i sshKey user@host
• Permite conectarte a un host utilizando una llave
ssh, este comando solo requiere el usuario pero
no es necesario escribir un password
7. scp
• Si quieres subir algún archivo o descargar algún
log, una forma simple de hacerlo es haciendo uso
del comando scp, veamos algunos ejemplos:
– 1 scp user@host:absolutePath destinationPath
• Descarga lo que se encuentra en el servidor a la
ruta local especificada
– 1 scp originPath user@host:destinationPath
• Sube al servidor lo que se tiene en el originPath al
destinationPath del servidor
8. wc
• No, no es lo que están pensando, imprime todas las líneas que tiene un archivo y
el número de bytes, veamos un ejemplo:
• 1 wc records.log
Journalctl
• La forma básica de acceder a los registros del sistema es:
• Que viene a equivaler al viejo “cat /var/log/messages” y nos permite acceder a
todos los logs sin filtrar (en cualquier momento podemos salir de esa pantalla
utilizando la tecla “q”)
• Como pasa con el resto de comandos podemos redirigir la salida hacia un
documento de texto
• journalctl > mensajes.log
• Si queremos seguir los mensajes en tiempo real añadimos el parámetro -f
• journalctl -f
9. Filtrar la salida de logs por boots
• Al ejecutar alguno de los comandos anteriores
nos podemos dar cuenta que tenemos una lista
inmensa de registros , así que vamos a filtrarlos
por los diferentes procesos de arranque, que
haya tenido nuestro ordenador.
• Para ver la lista de todos los boots:
• 1 journalctl --list-boots
10. Para ver los logs del boot actual:
• 1 journalctl -b
• Si necesitamos ver alguno de los anteriores tenemos dos opciones:
• Utilizamos simplemente una cuenta regresiva. Por ej para ver al
anterior:
• 1 journalctl -b -1
• y así sucesivamente:
• journalctl -b -2
• journalctl -b -3
• O elegimos usar la ID del boot, que nos aparecio al listar los
procesos de arranque con “journal –list-boots”. Sería algo así:
– journalctl _BOOT_ID=dfe74d5a9d384a88821ff8d24d64f81f
11. Ver los mensajes del kernel
• Le añadimos el parámetro -k:
• journalctl -k
• Como suele pasar en la línea de comandos
podemos combinar varios parámetros para
afinar la búsqueda.
• Aquí vemos los mensajes referidos al kernel
durante el boot actual:
• journalctl -k-b
12. Filtrar por número de entradas en el
registro de logs
• La opción predeterminada es ejecutar la cual
nos proporciona los últimos 10 mensajes
• journalctl –n
• Pero lo podemos cambiar, simplemente
poniendo un número:
• journalctl -n 50
13. Filtrar los logs por ejecutables o
programas
• En este caso también tenemos varias formas de hacerlo, bien
directamente con el ejecutable:
• journalctl _COMM=NetworkManager
• o especificando la ruta
• journalctl /usr/sbin/NetworkManager
• y como siempre tenemos la opción de filtrar con grep:
• journalctl | grep NetworkManager
14. Mostrar la salida por PID
• Filtramos mediante el número identificador
del proceso (algo que podemos consultar con
top o htop), en esta ocasión como ves en el
ejemplo 2527 corresponde a Firefox:
• journalctl _PID=2527
15. Especificar la salida por usuarios
• La id de los usuarios la podéis encontrar
ejecutando (obviamente sustituís la parte del
nombre del usuario)
• id nombre_del_usuario
• y después seleccionas la que corresponda
(1000, 1001, 1002…)
– Ejemplo
journalctl _UID=1001
16. Filtrar la salida por servicios de
systemd
• Podemos ver los servicios que dependen de systemd, ejecutando:
systemctl list-units -t service –all
• y si nos interesa uno en particular, estudiamos sus mensajes
añadiendo el parámetro -u y el nombre del servicio, como en este
ejemplo
journalctl -u dbus.service
Podemos hacer una búsqueda de varios servicios añadiendo el
caracter “+” (equivale a un “or”) y ejecutando:
journalctl _SYSTEMD_UNIT=apparmor.service + _SYSTEMD_UNIT=dbus.s
17. Filtrar por fechas
• Se utilizan los parámetros “–since” y “–until”, así
como expresiones tipo “yesterday” “ago” o “today”.
• El formato de tiempo es habitualmente YYYY-MM-DD
HH:MM:SS
– Algunos ejemplos:
• Ver los logs desde el día de ayer hasta hoy a las 02:00
horas.
– journalctl --since 'yesterday' --until '02:00'
18. • un intervalo de fechas específico:
– journalctl --since='2015-02-29 00:01' --until='2015-03-29 00:01'
Todos los logs especificando la fecha en el formato que os
comentaba anteriormente, y filtrando por el programa firefox
– journalctl _COMM=firefox --since='2015-02-29 00:01' --until='2015-
03-29 00:01‘
Lo mismo que el caso anterior pero en este caso filtrando por el
servicio de sshd.service
– journalctl -u sshd.service --since='2015-02-29 00:01' --until='2015-03-
29 00:01'
O simplemente ver lo que ha pasado en la última media hora:
– journalctl --since '30 min ago'
19. Filtrar por la prioridad del mensaje
• Los mensajes se clasifican en función de su prioridad en 7
niveles diferentes:
• Para filtrarlos utilizamos el parámetro -p seguido
del número correspondiente. En este ejemplo
vemos los críticos:
• journalctl -p 2
• “emerg” (0),
• ”alert” (1),
• “crit” (2),
• “err” (3),
• “warning” (4),
• “notice” (5),
• ”info” (6), y
• “debug” (7)
20. Mensajes de los discos duros
• Puede ser interesante para descubrir problemas
de funcionamiento en nuestras unidades de
discos duros.
– journalctl /dev/sda
• Ver el espacio que están ocupando los diferentes
logs Ejecutamos el comando:
– journalctl --disk-usage
• En el caso de que ese valor fuera excesivo lo
podemos limitar en el archivo
– /etc/systemd/journald.conf,
21. Herramientas de respaldo y
compresión de datos.
• Uno de los inconvenientes del Administrador
Sistemas, es el mantenimiento de presupuestos
para conseguir un gasto adecuado de equipos. El
respaldo de información puede llegar a
convertirse en una misión crítica. Pero el gasto en
material de almacenamiento (discos duros
internos y externos, cintas, discos ópticos,
etcétera) ha de controlarse, así que la
información ha de comprimirse suponiendo un
importante ahorro de dinero.
22. • 7zip: Esta alternativa en código abierto, contiene
complementos privativos como unRAR (licencia
aparte). Grandes empresas como IBM no dudan
en utilizarlo y en promocionar su uso tanto en
GNU/Linux como en Windows. La página web de
la organización está almacenada en el gigante
Digital Ocean en este enlace http://www.7-
zip.org/ de donde podrán descargar la versión
para Windows y en GNU Linux con solo ejecutar
«apt-get install p7zip-full» lo obtendremos
23. Programas de monitoreo locales
• .
Cada sistema operativo generalmente trae sus
propias utilerías desarrollado por ellos mismos
o comprados a otras empresas y
empaquetados juntos.
24. • Powershell: Su punto fuerte son los “cmdlets” que son
comandos especializados que implementan funciones
específicas y emula el uso de “tuberías” de comandos de
Unix. Fue desarrollado originalmente con Visual Studio.NET
para ambientes Windows, no obstante desde agosto de
2016 está disponible para Linux y puede ser instalado
como bien lo describen en este enlace. Aunque ahora tiene
licencia MIT los componentes individuales siguen siendo
privativos y van a medio camino hacia el software libre.
• GNU Linux: acá manda la consola, hoy vamos a ver una
muy rápida descripción de algunos de ellos. (Algunos
podrán necesitar ser instalados vía apt-get, dependiendo
de nuestra distribución):
25.
26. • curl”: permite verificar rápidamente si un servicio
web está corriendo con las opciones “-I -s” con lo
cual recibe los encabezados indicando la buena
salud del proceso. No lo subestimemos, curl
combinado con PHP motoriza el 25% de las
páginas web a nivel mundialesto es así porque
soporta los siguientes protocolos HTTP, HTTPS,
FTP, FTPS, GOPHER, TFTP, SCP, SFTP, SMB, TELNET,
DICT, LDAP, LDAPS, FILE, IMAP, SMTP, POP3, RTSP
y RTMP.
27. python”: un lenguaje de programación soportado en Windows y
Linux que nos ayudará a recolectar y analizar abundante
información con pocas líneas de código. En GNU Linux viene de
manera sólida y tan extraordinario es, que desinstalarlo pone en
aprietos a numerosas aplicaciones que dependen de él. Es otro
elemento que debemos tener en cuenta.
´´top”: cada 5 segundos nos muestra
los procesos que se están ejecutando
y que consumen los mayores
recursos.
“vmstat”: Actividad del sistema e
información del mismo y del
hardware también.
“w”: así de simple, una sola letra
acompañada del nombre del usuario
devuelve información sobre cuándo
se conectó, en qué terminal trabaja y
los procesos en ejecución.
“uptime”: tiempo encendido del equipo.
“ps -a”: lista todos los proceso en ejecución
junto con su identificador.
“free”: memoria libre , tanto física como de
intercambio.
“iostat”: carga promedio del CPU y la actividad
del disco.
“grep”: filtra por palabras claves, de un archivo o
por “tubería” recibida de otro comando, para
que extraigamos cifras muy específicas
28. Comando chkconfig
• Lo anterior puede resultar engorroso para más de alguno pero es la
única manera si no se tienen herramientas gráficas o de línea de
comandos para configurar los servicios mas agilmente, y
precisamente una de estas herramientas de línea de comandos
es chkconfig que permite configurar que servicios
arrancan/detienen en cada nivel de ejecucción.
Aclaración: chkconfig no inicia ni detiene servicios al momento
(excepto aquellos bajo xinetd), tan solo crea o elimina precisamente
los enlaces de los que se habló en el punto anterior de una manera
mas amigable. Si lo que se quiere es iniciar o detener el servicio en
tiempo real o manualmente hay que usar service o directamente el
script con su argumento conveniente tal como se explicó
anteriormente.
Veamos ejemplos que muestran como trabajar con chkconfig.
29. • Con la opción --list nos da una lista completa de
todos los servicios instalados y para cada nivel si
arrancará (on) al entrar a ese nivel o se detendrá (off)
o simplemente no se iniciara. Nótese que al final de
la lista vienen los servicios que dependen del
superservidor xinetd.
30.
31. comandos imprescindibles para un
Sysadmin
• /PROC: Como podréis comprobar no es un comando, sí,
está en la lista de los 20 que he comentado pero veo muy
interesante comentar que aquí se encuentran archivos muy
interesantes para el sistema como 'meminfo' o 'cpuinfo' por
mencionar un par de ellos, que nos mostrarán información
muy relevante sobre los componentes de nuestro equipo.
Un simple 'cat' a estos archivos y podremos ver toda la
información que contienen sin salir del prompt de la
consola.
• /CACTI: Realizará gráficas de rendimiento en los diferentes
dispositivos que envíen información vía SNMP.
32. • GNOME SYSTEM MONITOR: Monitoriza el
rendimiento de nuestro sistema, y nos lo muestra
en una interfaz muy amigable.
• IOSTAT: Informa de los datos en entrada/salida de
nuestra CPU y discos.
• IPTRAF: Monitoriza todo el tráfico que entra y
sale de nuestro equipo (interfaces, puertos,
etc...). Es algo más que un comando, en realidad
se trata de una aplicación muy lograda.
• JFFNMS: Genera gráficas para monitorizar
equipos a gran escala.
33. • MPSTAT: Muy útil para procesadores Multi-Core, ya que
permite ver el rendimiento de cada núcleo del procesador
de forma independiente. 7
• NAGIOS: Sistema de monitorización muy versátil, puesto
que por la cantidad de comandos que acompañan a la
aplicación, y la infinidad de plugins existentes para la
misma, se puede llevar el seguimiento de grandes
cantidades de equipos, servidores y redes. Además
mediante un SMS gateway podremos configurar el sistema
para que nos alerte al móvil de cualquier incidencia.
• NETSTAT: Muestra las conexiones abiertas en nuestro
equipo.
34. • PMAP: Informa sobre el rendimiento de la
memoria del sistema, tanto en general como la
memoria que consume un proceso concreto.
• AR: Realiza reportes de la actividad del sistema.
• SS: Muestra diferentes estadísticas de los sockets
de nuestro equipo. Su función es similar a
Netstat.
• STRACE: Realiza debugs de servidores web,
Apache, Httpd, lighthttp, entre otros.
• TCPDUMP: Muestra todo el tráfico que circula
por un puerto concreto en tiempo real.
35. • UPTIME: Muestra información similar a la del comando
TOP, además de otros datos interesantes como el
tiempo que lleva encendido el equipo, la carga de
procesos, el número de usuarios, etc...
• VMSTAT: Informa del estado del equipo o sistema,
tanto el hardware como los procesos que se están
ejecutando, y todo en tiempo 'casi' real.
• W: Muestra qué usuarios están conectados al equipo y
además, podremos saber qué están haciendo en ese
momento.
36. Tarea
• Cree un archivo de texto y muestre las ultimas
actualizaciones que ha tenido (ese archivo)
• Muestre información sobre eventos de
autenticación de usuarios.
• Haga una búsqueda de varios registros
utilizando el comando similar al or