📚 UF1352 · MF0958_2

Monitorización y Gestión de Incidencias del Software I

UD1: técnicas de monitorización y medida del rendimiento del software (monitor del sistema, contadores, registros y alertas, línea de comandos, problemas típicos y optimización de memoria, CPU, disco y red).

📊 Monitor de rendimiento🧮 Contadores⌨️ Línea de comandos🚀 Optimización

📋 Índice de contenidos

  1. Conceptos básicos sobre evaluación y métricas del rendimiento del software
  2. Parámetros de configuración y rendimiento del software base y de aplicación
  3. Rendimiento de bases de datos desde el punto de vista del operador
  4. Herramientas de monitorización y de medida del rendimiento del software
  5. Sysinternals: Process Explorer, Process Monitor, Autoruns y RAMMap
  6. El Monitor del sistema: conceptos, interfaz y configuración
  7. Registros y alertas de rendimiento
  8. Utilidades de supervisión del rendimiento desde la línea de comandos
  9. Análisis del registro de un servidor web: tiempos y errores
  10. Procedimiento de medida: configuración, método, frecuencia y registro
  11. Selección de contadores adecuados de supervisión
  12. Problemas de rendimiento típicos y estrategias de optimización
  13. Rendimiento en entornos virtualizados
  14. Supervisión de memoria, procesador, disco, red y servicios
  15. Caso práctico resuelto: la intranet lenta de los lunes
  16. Mantenimiento remoto: herramientas y configuración
  17. Glosario de la Parte I
  18. Autoevaluación de la Parte I
Unidad Didáctica 1 · Técnicas de monitorización y medida del rendimiento de los elementos de software

01Conceptos Básicos sobre Evaluación y Métricas del Rendimiento del Software

En la UF1350 se midió el rendimiento del hardware. Ahora el foco es el software: el sistema operativo, los servicios y las aplicaciones. Un servidor con hardware de sobra puede ir lento porque un servicio está mal configurado, una aplicación tiene una fuga de memoria o una consulta de base de datos bloquea a las demás.

Métrica de softwareQué mideEjemplo
Tiempo de respuestaLo que tarda la aplicación en atender una peticiónLa pantalla de facturas tarda 4 s en abrir
Rendimiento (throughput)Peticiones o transacciones completadas por unidad de tiempo120 peticiones/s en el servidor web
Uso de recursos por procesoCPU, memoria, E/S y red que consume cada programaEl proceso sqlservr.exe usa 12 GB de RAM
Tasa de erroresPeticiones que fallan2 % de errores 500 en la web
ConcurrenciaUsuarios, sesiones o conexiones simultáneas85 sesiones de escritorio remoto
Colas y esperasTrabajo pendiente esperando un recursoCola de impresión con 40 trabajos, bloqueos en la base de datos
Disponibilidad del servicioTiempo en que el servicio responde correctamente99,9 % en el mes
Del síntoma a la causaEl usuario dice «el programa va lento». El operador debe traducirlo a métricas: ¿qué operación?, ¿desde cuándo?, ¿a todos o a uno?, ¿qué recurso se satura en ese momento? Sin esas preguntas, cualquier ajuste es a ciegas.

02Parámetros de Configuración y Rendimiento de los Componentes Software

Software base (sistema operativo)

ParámetroEfecto en el rendimiento
Plan de energía«Alto rendimiento» evita que la CPU baje de frecuencia; «Equilibrado» ahorra energía
Memoria virtual y fichero de paginaciónTamaño y ubicación (en el disco más rápido)
Servicios en ejecución y programas de inicioCada uno consume memoria y CPU; desactivar los innecesarios
Efectos visualesConsumo de GPU y CPU en equipos modestos
Indexación de búsquedaUso de disco y CPU en segundo plano
Parámetros del núcleo (Linux, sysctl)vm.swappiness, límites de ficheros abiertos, búferes de red
Antivirus o EDRExclusiones bien definidas para bases de datos y carpetas de trabajo intensivo

Software de aplicación

Tipo de aplicaciónParámetros habituales
Servidor web (Apache, Nginx, IIS)Procesos o hilos trabajadores, conexiones máximas, keep-alive, compresión, caché
Base de datos (MySQL o MariaDB, PostgreSQL, SQL Server)Memoria del búfer (innodb_buffer_pool_size, shared_buffers, max server memory), conexiones máximas, índices
Aplicaciones JavaMemoria del heap (-Xms, -Xmx), recolector de basura
Servidor de ficheros (SMB)Versión del protocolo (SMB3), firma y cifrado, caché del cliente
Aplicaciones de escritorioComplementos (add-ins) cargados, tamaño de cachés, sincronizaciones en segundo plano
Un parámetro cada vezIgual que con el hardware: mide antes, cambia un parámetro, mide después y documenta. Y guarda siempre una copia de la configuración original.

03Rendimiento de Bases de Datos desde el Punto de Vista del Operador

Muchas quejas de «el programa va lento» terminan en la base de datos. El operador no tiene que ser administrador de bases de datos, pero sí saber reconocer los síntomas, recoger la información y escalar con datos.

SíntomaCausa habitualQué mirar
Una pantalla concreta tarda muchoConsulta lenta, falta de índiceRegistro de consultas lentas
Todo va lento a la vez con la CPU bajaBloqueos: una transacción larga retiene filas o tablasLista de procesos y bloqueos
Errores «Too many connections»Conexiones que no se cierran o límite bajoNúmero de conexiones frente a max_connections
Mucha E/S de disco y lentitud generalBúfer de memoria pequeño: lee de disco lo que debería estar en RAMTasa de aciertos del búfer
Disco de la base de datos llenoRegistros de transacciones (binlog, WAL, .ldf) que crecen sin controlTamaño de los registros y su política de copia y purga
-- MySQL / MariaDB SHOW FULL PROCESSLIST; -- qué está ejecutando cada conexión SHOW GLOBAL STATUS LIKE 'Threads_connected'; SHOW VARIABLES LIKE 'max_connections'; SHOW ENGINE INNODB STATUS\G -- bloqueos y estado del motor SET GLOBAL slow_query_log = 1; SET GLOBAL long_query_time = 2; -- registrar consultas de más de 2 s -- PostgreSQL SELECT pid, state, now()-query_start AS duracion, query FROM pg_stat_activity WHERE state <> 'idle' ORDER BY duracion DESC; -- SQL Server EXEC sp_who2;
Límite del operadorConsultar estado y procesos es seguro. Matar una conexión (KILL), cambiar parámetros del servidor o crear índices son cambios: se hacen con el administrador de la base de datos o el responsable de la aplicación, por el procedimiento de cambios.

04Herramientas de Monitorización y de Medida del Rendimiento del Software

HerramientaPlataformaPara qué
Administrador de tareasWindowsVista rápida de procesos, rendimiento, inicio y servicios
Monitor de recursos (resmon)WindowsDetalle por proceso de CPU, memoria, disco (qué ficheros) y red (qué conexiones)
Monitor de rendimiento (perfmon)WindowsContadores en tiempo real, registro histórico, alertas e informes
Visor de eventosWindowsErrores y avisos de aplicaciones y servicios
Sysinternals (Process Explorer, Process Monitor, RAMMap)WindowsAnálisis profundo de procesos, accesos a registro y ficheros, uso de memoria
Windows Performance Recorder / AnalyzerWindowsTrazas muy detalladas (arranque lento, cuelgues)
top, htop, atop, glancesLinuxProcesos y recursos en tiempo real
vmstat, iostat, mpstat, pidstat, sar (sysstat)LinuxEstadísticas por recurso y por proceso, con histórico
perf, straceLinuxPerfilado de CPU y llamadas al sistema de un proceso
Monitores de aplicación (APM)VariasTiempo de cada operación dentro de la aplicación (Elastic APM, Datadog, New Relic)
Plataformas de monitorizaciónVariasZabbix, Prometheus, Checkmk: histórico centralizado y alertas

05Sysinternals: Herramientas Avanzadas para Windows

Sysinternals es un conjunto gratuito de utilidades de Microsoft para diagnosticar Windows a fondo. No necesitan instalación y se pueden ejecutar desde \\live.sysinternals.com o desde una carpeta de herramientas.

HerramientaPara qué sirveCaso típico
Process ExplorerAdministrador de tareas avanzado: árbol de procesos, DLL, handles, CPU por hilo, verificación de firmas y consulta a VirusTotalSaber qué proceso tiene bloqueado un fichero o qué servicio hay dentro de un svchost
Process MonitorRegistra en tiempo real accesos a ficheros, registro, red y procesosAveriguar por qué una aplicación falla al arrancar (fichero o clave que no encuentra, acceso denegado)
AutorunsTodo lo que arranca automáticamente: servicios, tareas, claves Run, extensiones, controladoresArranque lento o sospecha de persistencia de malware
RAMMapUso detallado de la memoria físicaMemoria «ocupada» que no aparece en ningún proceso
TCPViewConexiones de red por procesoQué programa está conectado a una IP extraña
SysmonRegistro detallado de actividad en el Visor de eventosSeguridad y forense (UF1353)
  1. Process Monitor sin ahogarse: empieza la captura justo antes de reproducir el problema y detenla justo después; usa filtros (Process Name is app.exe, Result is ACCESS DENIED o NAME NOT FOUND).
  2. Guardar la captura: en formato PML para enviarla al soporte del fabricante.
  3. Autoruns con criterio: desmarcar (no borrar) las entradas sospechosas y anotar qué se ha cambiado, para poder deshacerlo.

06El Monitor del Sistema: Conceptos, Interfaz y Configuración

El Monitor de rendimiento de Windows (perfmon.exe, el «Monitor del sistema» de las versiones antiguas) es la herramienta de referencia del programa. Trabaja con tres conceptos:

📦

Objeto

Recurso o componente que se mide: Procesador, Memoria, Disco físico, Interfaz de red, Proceso, Servicio web…

🔢

Contador

Valor concreto de un objeto: % de tiempo de procesador, Bytes disponibles, Longitud media de la cola de disco…

🎯

Instancia

Elemento concreto cuando hay varios: núcleo 0, disco C:, proceso sqlservr o _Total.

La interfaz

Configuración del monitor

  1. Añadir contadores: botón + → elegir el equipo (local o remoto), el objeto, el contador y la instancia; la casilla «Mostrar descripción» explica cada contador.
  2. Intervalo de muestreo: Propiedades → General; 1 s para un problema puntual, 15-60 s para registrar horas o días.
  3. Escala: ajustarla para que los contadores con valores muy distintos se vean juntos.
  4. Guardar la configuración: como plantilla de conjunto de recopiladores para reutilizarla en otros equipos.
perfmon :: abre el Monitor de rendimiento perfmon /res :: Monitor de recursos perfmon /rel :: Monitor de confiabilidad perfmon /report :: informe de diagnóstico del sistema (60 s)

07Registros y Alertas de Rendimiento

Registros (conjuntos de recopiladores de datos)

Alertas de rendimiento

Una alerta es un conjunto de recopiladores que vigila un contador y, cuando supera un umbral, registra un evento en el registro de aplicaciones, inicia otro recopilador o ejecuta una tarea programada (por ejemplo, un script que envía un correo).

:: Crear desde la línea de comandos un registro de contadores (logman) logman create counter Base_SRV -c "\Processor(_Total)\% Processor Time" "\Memory\Available MBytes" "\PhysicalDisk(_Total)\Avg. Disk sec/Transfer" -si 00:00:15 -o C:\PerfLogs\Base_SRV -f bincirc -max 500 logman start Base_SRV logman query logman stop Base_SRV :: Convertir el registro a CSV para analizarlo en una hoja de cálculo relog C:\PerfLogs\Base_SRV.blg -f csv -o base.csv :: Alerta: memoria disponible por debajo de 500 MB (comprobada cada 30 s) logman create alert AlertaMemoria -th "\Memory\Available MBytes<500" -si 00:00:30

08Utilidades de Supervisión del Rendimiento desde la Línea de Comandos

NecesidadWindowsLinux
Procesos que más consumenGet-Process | Sort CPU -Desc | Select -First 10 · tasklist /vtop · htop · ps aux --sort=-%cpu | head
Uso de CPU en el tiempotypeperf "\Processor(_Total)\% Processor Time" -si 2 -sc 10mpstat 2 10 · sar -u 2 10
MemoriaGet-Counter '\Memory\Available MBytes' · systeminfofree -h · vmstat 2 10
DiscoGet-Counter '\PhysicalDisk(*)\Avg. Disk Queue Length'iostat -xz 2 · iotop
Red y conexionesnetstat -ano · Get-NetTCPConnection · Get-Counter '\Network Interface(*)\Bytes Total/sec'ss -tunap · sar -n DEV 2 · iftop · nethogs
Por proceso concretoGet-Counter '\Process(sqlservr)\% Processor Time'pidstat -p PID 2 · top -p PID
ServiciosGet-Service · sc queryexsystemctl status · systemd-cgtop
# typeperf: exportar contadores a CSV sin abrir perfmon typeperf -cf contadores.txt -si 15 -sc 240 -f CSV -o medida.csv # Linux: CPU y memoria por proceso cada 5 s durante 1 minuto pidstat -u -r -p $(pgrep -d, apache2) 5 12 # Activar el histórico de sar (Debian/Ubuntu) sudo sed -i 's/ENABLED="false"/ENABLED="true"/' /etc/default/sysstat && sudo systemctl restart sysstat sar -u -f /var/log/sysstat/sa$(date +%d) # CPU de hoy

09Análisis del Registro de un Servidor Web

El registro de acceso de un servidor web es una fuente de métricas de primera: cuántas peticiones hay, cuáles fallan y cuánto tardan. Para tener el tiempo de cada petición hay que añadirlo al formato del registro.

# Apache: añadir el tiempo de servicio en microsegundos (%D) al formato del log LogFormat "%h %l %u %t \"%r\" %>s %b %D" combinado_tiempo CustomLog ${APACHE_LOG_DIR}/access.log combinado_tiempo # Nginx: $request_time (segundos) en log_format
LOG=/var/log/apache2/access.log # Peticiones por código de estado awk '{print $9}' $LOG | sort | uniq -c | sort -rn # Las 10 URL más pedidas awk '{print $7}' $LOG | sort | uniq -c | sort -rn | head # Tiempo medio y máximo de respuesta (último campo, en microsegundos) awk '{s+=$NF; if($NF>m)m=$NF} END {printf "media %.0f ms max %.0f ms\n", s/NR/1000, m/1000}' $LOG # Percentil 95 del tiempo de respuesta awk '{print $NF}' $LOG | sort -n | awk '{a[NR]=$1} END {print "p95:", a[int(NR*0.95)]/1000, "ms"}' # Peticiones por minuto en la última hora (picos) awk '{print substr($4,2,17)}' $LOG | uniq -c | tail -60
REM IIS: los registros están en C:\inetpub\logs\LogFiles (campo time-taken en ms) Get-Content u_ex261110.log | Where { $_ -notmatch '^#' } | ForEach { ($_ -split ' ')[-1] } | Measure-Object -Average -Maximum
CódigoSignificadoLectura para el operador
2xxCorrectoNormal
3xxRedirecciónNormal en pequeña proporción
401 / 403No autenticado / prohibidoMuchos desde la misma IP: posible ataque (UF1353)
404No encontradoEnlaces rotos o escaneos
500Error interno de la aplicaciónRevisar el registro de errores de la aplicación
502 / 503 / 504Pasarela errónea / servicio no disponible / tiempo agotadoEl servidor de aplicación o la base de datos no responde o está saturado

10Procedimiento de Medida del Rendimiento

  1. 1. Definir el objetivo: qué se quiere saber (¿por qué va lento el ERP a primera hora?) y qué componentes y aspectos se van a supervisar.
  2. 2. Configurar la supervisión: elegir los contadores, el intervalo, el formato y el lugar donde se guardan los datos, preferiblemente en un disco distinto del que se mide.
  3. 3. Método: supervisión en tiempo real para un problema que está ocurriendo; registro histórico para problemas intermitentes y para la línea base; comparativa antes y después para cambios.
  4. 4. Frecuencia: intervalos cortos (1-5 s) durante poco tiempo para problemas puntuales; intervalos de 15-60 s durante días o semanas para tendencias y líneas base.
  5. 5. Registro de los datos: guardar con nombre, equipo, fecha y descripción de lo que pasaba (carga normal, cierre de mes, tras la actualización).
  6. 6. Análisis y conclusiones: comparar con la línea base, buscar correlaciones y redactar el informe.
ComponenteAspectos a supervisar
Sistema operativoCPU, memoria, paginación, disco, red, número de procesos e hilos
Servicios del SOEstado, reinicios, consumo de cada servicio
Servidor webPeticiones por segundo, tiempo de respuesta, errores, conexiones
Base de datosConsultas por segundo, consultas lentas, bloqueos, uso del búfer, conexiones
Aplicación de negocioTiempo de las operaciones clave, usuarios conectados, errores en su log
Efecto observadorMedir también consume recursos. Con intervalos de 1 segundo y cientos de contadores, el propio monitor puede degradar un servidor ya cargado. Ajusta el número de contadores y el intervalo al objetivo.

11Selección de Contadores Adecuados de Supervisión

Objeto \ Contador (Windows)Valor preocupante orientativoIndica
Processor(_Total) \ % Processor Time> 85 % sostenidoCPU saturada
System \ Processor Queue Length> 2 por núcleo sostenidoHilos esperando CPU
Memory \ Available MBytes< 10 % de la RAMFalta de memoria
Memory \ Pages/secMuy alto y sostenido junto con poca memoria disponiblePaginación excesiva
Memory \ Committed Bytes frente a Commit LimitCerca del límiteLa memoria virtual se agota
Process(X) \ Private Bytes o Working SetCrece sin parar durante díasPosible fuga de memoria
PhysicalDisk \ Avg. Disk sec/Read y /Write> 0,020 s en HDD, > 0,005 s en SSDDisco lento o saturado
PhysicalDisk \ % Idle Time< 20 %Disco ocupado casi siempre
LogicalDisk \ % Free Space< 15 %Riesgo de llenado
Network Interface \ Bytes Total/sec> 70 % del ancho de bandaRed saturada
Network Interface \ Output Queue Length> 2Congestión en la tarjeta
Process(X) \ Handle Count / Thread CountCrece sin pararFuga de recursos en la aplicación

Equivalencias en Linux: %us, %sy y %wa de top o mpstat (el %wa alto indica espera de E/S), available de free, si/so de vmstat (swap), await y %util de iostat, y los contadores de red de sar -n DEV y EDEV.

12Problemas de Rendimiento Típicos y Estrategias de Optimización

ProblemaSíntomas en los contadoresEstrategias
Fuga de memoriaPrivate Bytes de un proceso crece hasta agotar la RAM; mejora al reiniciar el servicioActualizar la aplicación; reinicio programado como solución temporal; abrir un problema con el fabricante
CPU al 100 % por un procesoUn solo proceso en lo alto de la listaIdentificar qué hace (Process Explorer, perf); actualizar; reducir prioridad; revisar tareas programadas
Cuello de botella de discoLatencias altas, cola larga, %wa altoMover a SSD, separar datos y logs, revisar antivirus, añadir RAM como caché
Poca memoria y paginaciónAvailable bajo y Pages/sec altoAñadir RAM, limitar la memoria de bases de datos o de la JVM, cerrar servicios innecesarios
Arranque lentoMuchos programas de inicio, servicios lentosAdministrador de tareas → Inicio, Autoruns, Windows Performance Analyzer
Red lenta para una aplicaciónLatencia alta, retransmisionesMedir con iperf3, revisar dúplex, MTU y SMB; acercar el servidor
Bloqueos de base de datosEsperas altas con poca CPURevisar consultas lentas e índices con el administrador de BD

Prueba de equipos y resolución de problemas

  1. Reproducir: conseguir que el problema ocurra de forma controlada.
  2. Aislar: probar en otro equipo, con otro usuario, sin complementos, en modo seguro o con un inicio limpio (msconfig).
  3. Medir: con los contadores adecuados, durante el problema.
  4. Corregir: un cambio cada vez.
  5. Verificar: repetir la medida y compararla con la línea base.
  6. Documentar: en el tique y en la base de conocimiento.

13Rendimiento en Entornos Virtualizados

La mayoría de los servidores actuales son máquinas virtuales. Dentro de una VM, los contadores pueden engañar: la VM cree tener 4 CPU y 16 GB, pero comparte el hardware real con otras VM. Hay que mirar también desde el hipervisor.

FenómenoQué ocurreDónde se veSolución
Sobreasignación de CPU (overcommit)Se reparten más vCPU que núcleos físicos; las VM esperan turnoCPU Ready (VMware) o steal time (%st en top de Linux) altoRepartir VM entre hosts, quitar vCPU sobrantes
Demasiadas vCPU en una VMLa VM espera a tener libres a la vez todos sus núcleos virtualesCPU Ready alto aunque el uso de CPU sea bajoAjustar el número de vCPU a lo que realmente usa
Sobreasignación de memoriaEl hipervisor recupera memoria con ballooning o la pasa a disco (swap del host)Contadores de balloon y swap del hipervisorReservas de memoria para VM críticas, más RAM en el host
Contención de almacenamientoVarias VM comparten el mismo almacén y una lo satura (vecino ruidoso)Latencia del almacén en el hipervisorLímites de IOPS, mover la VM, almacenamiento más rápido
Instantáneas olvidadasCada escritura va a un fichero delta que crece; el rendimiento bajaLista de instantáneas de la VMConsolidar o borrar las instantáneas tras usarlas
Herramientas de integración desactualizadasControladores de disco y red virtuales lentosVersión de VMware Tools, Hyper-V Integration Services o qemu-guest-agentActualizarlas
# Linux dentro de una VM: tiempo robado por el hipervisor top # columna %st (steal) en la línea de CPU vmstat 2 5 # columna st # Proxmox / KVM en el host qm list ; pvesh get /nodes/$(hostname)/qemu --output-format json-pretty | head

14Supervisión de Memoria, Procesador, Disco, Red y Servicios

🧠

Uso de la memoria

Memoria disponible, comprometida, caché, paginación y memoria por proceso; vigilar las tendencias de crecimiento.

⚙️

Actividad del procesador

% total y por núcleo, tiempo de usuario frente a privilegiado (núcleo), cola, interrupciones por segundo.

💽

Actividad del disco

Latencia de lectura y escritura, IOPS, cola, % de inactividad, espacio libre.

🌐

Actividad de la red

Bytes por segundo, errores, descartes, conexiones TCP establecidas y en espera.

🧩

Servicios del SO

Estado (en ejecución o detenido), tipo de inicio, reinicios inesperados (eventos 7031 y 7034 del Administrador de control de servicios).

REM Servicios que se han detenido inesperadamente en los últimos 7 días Get-WinEvent -FilterHashtable @{LogName='System'; Id=7031,7034; StartTime=(Get-Date).AddDays(-7)} | Select TimeCreated, Message REM Recuperación automática de un servicio: reiniciar a los 60 s sc failure Spooler reset= 86400 actions= restart/60000/restart/60000/none/0 # Linux: reiniciar automáticamente un servicio que falle (override de systemd) sudo systemctl edit apache2 # añadir: [Service] Restart=on-failure RestartSec=10

15Caso Práctico Resuelto: la Intranet Lenta de los Lunes

Cada lunes entre las 9:00 y las 10:30, los 150 usuarios de un ayuntamiento se quejan de que la intranet (Apache + PHP + MariaDB, en una VM Linux con 4 vCPU y 8 GB) tarda «muchísimo». El resto de la semana va bien.

PasoMedida o comprobaciónResultado
1. Datos objetivosAnálisis del access.log: p95 del tiempo de respuesta por horaLunes 9-10:30: p95 de 7,8 s; resto de días: 0,4 s
2. Recursos de la VMsar del lunes anterior (histórico)CPU 35 %, memoria disponible 3 GB, %wa del 45 %: mucha espera de disco
3. ¿Quién usa el disco?iotop y pidstat -d en la siguiente franja del lunesmysqld escribe de forma continua
4. Base de datosSHOW FULL PROCESSLIST y registro de consultas lentasConsulta del tablón de anuncios sin índice que recorre 2 millones de filas; se lanza cada vez que alguien abre la portada
5. ¿Por qué los lunes?Correlación con el calendarioTodos abren la portada a primera hora del lunes para ver los avisos del fin de semana
  1. Solución temporal: el equipo de desarrollo activa la caché de la portada durante 5 minutos.
  2. Solución definitiva (cambio normal aprobado): índice en la tabla de avisos y paginación del tablón.
  3. Verificación: el lunes siguiente, p95 de 0,5 s y %wa por debajo del 5 %.
  4. Mejora de la monitorización: nuevo elemento con el p95 del tiempo de respuesta de la intranet y alarma si supera 2 s durante 10 minutos.
LecciónEl síntoma (lentitud web) estaba en una capa, la causa en otra (una consulta de la base de datos) y el desencadenante en el comportamiento de los usuarios. Solo el método (medir, aislar, correlacionar) lleva a la causa.

16Mantenimiento Remoto: Herramientas y Configuración

HerramientaUso en la supervisión del rendimientoConfiguración necesaria
Perfmon contra un equipo remotoAñadir contadores de \\SERVIDORUsuario en el grupo «Usuarios del monitor de rendimiento» y reglas del cortafuegos para el registro remoto
PowerShell RemotingInvoke-Command para lanzar Get-Counter en muchos equiposEnable-PSRemoting; WinRM (TCP 5985/5986)
Windows Admin CenterPaneles de rendimiento, servicios, eventos y procesos por webInstalación en un servidor de gestión; HTTPS
SSHEjecutar top, iostat, sar en remotoClaves SSH, usuario sin privilegios con sudo limitado
Cockpit (Linux)Panel web de rendimiento, servicios y registrosPaquete cockpit; puerto 9090
Agentes de monitorizaciónHistórico centralizado y alertasAgente y cortafuegos (ver UF1350)
REM Medir la CPU de varios servidores a la vez Invoke-Command -ComputerName SRV1,SRV2,SRV3 -ScriptBlock { (Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 2 -MaxSamples 3).CounterSamples | Measure-Object CookedValue -Average | Select @{n='Equipo';e={$env:COMPUTERNAME}},Average } # Linux: iostat en tres servidores por SSH for h in srv1 srv2 srv3; do echo "== $h"; ssh $h 'iostat -xz 1 2 | tail -n +7'; done
SeguridadLas herramientas de mantenimiento remoto deben usar cuentas con los permisos justos (para medir rendimiento no hace falta ser administrador del dominio), cifrado y acceso solo desde la red de gestión.

17Glosario de la Parte I

Objeto / contador / instancia
Recurso medido / valor concreto / elemento concreto cuando hay varios (Monitor de rendimiento).
Conjunto de recopiladores
Configuración de perfmon que registra contadores, eventos o configuración.
Alerta de rendimiento
Acción que se ejecuta cuando un contador supera un umbral.
logman / relog / typeperf
Órdenes de Windows para crear registros de rendimiento, convertirlos y consultarlos.
sysstat (sar, iostat, mpstat, pidstat)
Paquete de Linux para medir recursos e histórico.
%wa / iowait
Porcentaje de tiempo en que la CPU espera a operaciones de E/S.
Fuga de memoria
Memoria que un programa reserva y nunca libera.
Steal time / CPU Ready
Tiempo en que una VM quiere CPU y el hipervisor no se la da.
Consulta lenta
Consulta de base de datos que supera un tiempo umbral y se registra.
Bloqueo (lock)
Reserva de datos por una transacción que obliga a esperar a otras.
Inicio limpio
Arranque de Windows con los mínimos servicios y programas para aislar problemas.
Efecto observador
Carga que añade la propia medición al sistema.

18Autoevaluación de la Parte I

¿Qué contador de Windows indica mejor que un disco va lento?
PhysicalDisk \ Avg. Disk sec/Read y /Write (latencia): por encima de 20 ms en HDD o de 5 ms en SSD de forma sostenida indica problema.
¿Qué diferencia hay entre un registro de contadores y una alerta de rendimiento?
El registro guarda valores en un fichero para analizarlos después; la alerta vigila un umbral y ejecuta una acción (evento, tarea o recopilador) cuando se supera.
La memoria privada de un proceso crece 200 MB al día y baja al reiniciar el servicio. ¿Qué es probable y qué haces?
Una fuga de memoria. Como solución temporal, reinicio programado del servicio; como definitiva, actualizar la aplicación o abrir un problema con el fabricante, aportando la medición.
En top, una VM Linux muestra %st del 30 %. ¿Qué significa?
Que el 30 % del tiempo la VM quería CPU y el hipervisor no se la daba: hay contención en el host, no un problema dentro de la VM.
¿Qué intervalo de muestreo usarías para una línea base de dos semanas y por qué?
15-60 segundos: suficiente para ver tendencias y picos sin generar ficheros enormes ni cargar el servidor.
Un servidor web devuelve muchos 503 con la CPU baja. ¿Hacia dónde miras?
Hacia lo que hay detrás del servidor web: servidor de aplicación saturado o caído, conexiones agotadas o base de datos bloqueada.
¿Qué herramienta usarías para saber qué fichero o clave de registro no encuentra un programa que falla al arrancar?
Process Monitor de Sysinternals, con filtros por el proceso y por resultados NAME NOT FOUND o ACCESS DENIED.
¿Por qué conviene guardar los registros de rendimiento en otro disco?
Para no añadir carga de escritura al disco que se está midiendo ni falsear las medidas, y para no llenarlo.