Diferencia entre revisiones de «Monitorización»
(→dstat) |
|||
(No se muestran 46 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
Recopilación de herramientas útiles para la monitorización de sistemas operativos: | Recopilación de herramientas útiles para la monitorización de sistemas operativos: | ||
= Información del hardware en Linux = | |||
== /proc/cpuinfo == | |||
El fichero básico para ver las características de la CPU. Relacionado con este fichero, el comando '''lscpu''' nos lo muestra con datos más fácile de leer: | |||
<pre class="code"> | |||
$ lscpu | |||
Arquitectura: x86_64 | |||
modo(s) de operación de las CPUs: 32-bit, 64-bit | |||
Orden de los bytes: Little Endian | |||
CPU(s): 8 | |||
Lista de la(s) CPU(s) en línea: 0-7 | |||
Hilo(s) de procesamiento por núcleo: 2 | |||
Núcleo(s) por «socket»: 4 | |||
«Socket(s)» 1 | |||
Modo(s) NUMA: 1 | |||
ID de fabricante: GenuineIntel | |||
Familia de CPU: 6 | |||
Modelo: 26 | |||
Nombre del modelo: Intel(R) Core(TM) i7 CPU 930 @ 2.80GHz | |||
Revisión: 5 | |||
CPU MHz: 1603.765 | |||
CPU MHz máx.: 2801,0000 | |||
CPU MHz mín.: 1600,0000 | |||
BogoMIPS: 5612.92 | |||
Virtualización: VT-x | |||
Caché L1d: 32K | |||
Caché L1i: 32K | |||
Caché L2: 256K | |||
Caché L3: 8192K | |||
CPU(s) del nodo NUMA 0: 0-7 | |||
Indicadores: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid dtherm ida flush_l1d | |||
</pre> | |||
Un comando interesante que se puede hacer con este archivo es el siguiente, en el que muestra en tiempo real la fecuencia actual que está usando el procesador en cada núcleo: | |||
<pre class="code"> | |||
watch -n0.5 "grep "[M]Hz" /proc/cpuinfo" | |||
cpu MHz : 1603.685 | |||
cpu MHz : 1604.425 | |||
cpu MHz : 1603.634 | |||
cpu MHz : 1604.990 | |||
cpu MHz : 1605.899 | |||
cpu MHz : 1607.723 | |||
cpu MHz : 1661.460 | |||
cpu MHz : 1605.772 | |||
</pre> | |||
== cpupower == | |||
Muestra información relativa al ahorro de energía del procesador. Informa de las frecuencias mínimas y turbo, así como de los estados inactivos. Muestra información y monitoriza. | |||
Ejemplos: | |||
<pre class="code"> | |||
$ sudo cpupower monitor | |||
|Nehalem || Mperf || Idle_Stats | |||
CPU | C3 | C6 | PC3 | PC6 || C0 | Cx | Freq || POLL | C1 | C1E | C3 | C6 | |||
0| 0,33| 96,63| 0,00| 0,00|| 2,35| 97,65| 1719|| 0,00| 0,00| 0,00| 0,07| 97,63 | |||
4| 0,33| 96,65| 0,00| 0,00|| 0,36| 99,64| 1629|| 0,00| 0,00| 0,00| 0,23| 99,51 | |||
1| 0,78| 98,22| 0,00| 0,00|| 0,44| 99,56| 1743|| 0,00| 0,00| 0,00| 0,70| 98,96 | |||
5| 0,78| 98,23| 0,00| 0,00|| 0,14| 99,86| 1708|| 0,00| 0,00| 0,00| 0,20| 99,74 | |||
2| 0,04| 92,79| 0,00| 0,00|| 3,11| 96,89| 2061|| 0,00| 3,56| 0,00| 0,05| 93,35 | |||
6| 0,04| 92,79| 0,00| 0,00|| 0,32| 99,68| 1713|| 0,00| 0,00| 0,00| 0,00| 99,76 | |||
3| 0,17| 99,19| 0,00| 0,00|| 0,14| 99,86| 1845|| 0,00| 0,00| 0,00| 0,19| 99,71 | |||
7| 0,17| 99,19| 0,00| 0,00|| 0,29| 99,71| 1763|| 0,00| 0,00| 0,00| 0,08| 99,66 | |||
$ cpupower frequency-info | |||
analyzing CPU 0: | |||
driver: acpi-cpufreq | |||
CPUs which run at the same hardware frequency: 0 | |||
CPUs which need to have their frequency coordinated by software: 0 | |||
maximum transition latency: 10.0 us | |||
hardware limits: 1.60 GHz - 2.80 GHz | |||
available frequency steps: 2.80 GHz, 2.80 GHz, 2.67 GHz, 2.53 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz | |||
available cpufreq governors: conservative ondemand userspace powersave performance schedutil | |||
current policy: frequency should be within 1.60 GHz and 2.80 GHz. | |||
The governor "ondemand" may decide which speed to use | |||
within this range. | |||
current CPU frequency: Unable to call hardware | |||
current CPU frequency: 1.62 GHz (asserted by call to kernel) | |||
boost state support: | |||
Supported: yes | |||
Active: yes | |||
33999 MHz max turbo 4 active cores | |||
33999 MHz max turbo 3 active cores | |||
33999 MHz max turbo 2 active cores | |||
33999 MHz max turbo 1 active cores | |||
</pre> | |||
== dmidecode == | |||
Comando para dar información del hardware del equipo. | |||
Ejemplos: | |||
<syntaxhighlight lang="bash"> | |||
$ dmidecode # información de los mensajes del sistema en el arranque y detección de nuevos dispositivos | |||
$ sudo dmidecode -t 16 # Información sobre la RAM, para saber los módulos que puedes instalar. | |||
$ sudo dmidecode -t 17 # Información de los módulos instalados | |||
</syntaxhighlight> | |||
== lshw == | |||
$ lshw -html > hardware.html | |||
Hace una web con la información de hardware del ordenador. | |||
== powertop == | |||
Potente herramienta de monitorización en tiempo real y con muchos detalles del rendimiento del procesador. Dice los procesos que más tiempo estás en él y las frecuencias a las que trabaja cada núcleo entre otras muchas cosas. | |||
Tal vez hay que calibrarlo con: | |||
<pre class="code"> | |||
# powertop --calibrate | |||
</pre> | |||
Puede ser una buena manera de detectar procesos que están consumiendo la batería. | |||
[https://www.atareao.es/software/utilidades/ahorrar-energia-en-linux-con-powertop/ ] | |||
== turbostat == | |||
Una herramienta para obtener cada cierto tiempo estadísticas de frecuencias, tiempos inactivos y consumo de la CPU. | |||
= Rendimiento en Linux = | = Rendimiento en Linux = | ||
Línea 44: | Línea 164: | ||
rt_priority: 0 | rt_priority: 0 | ||
policy: 0 | policy: 0 | ||
$ /usr/bin/time -v <programa> | |||
== atop == | |||
Mescla htop, iotop i iftop. | |||
El resultat és un poc complicat de llegir. | |||
== conky == | |||
[[Archivo:Conky.png|center|Ejemplo de visualización]] | |||
Conky es un monitor de sistema para los sistemas X Window. Está disponible para GNU/Linux y FreeBSD. Es un software libre liberado bajo los términos de la licencia GPL. Conky es capaz de monitorear distintas variables de sistema, incluyendo CPU, memoria, swap, espacio de disco, temperaturas, subidas, bajadas, mensajes de sistema, y mucho más. Es completamente configurable, la configuración puede ser un poco difícil de entender, pero es bastante posible realizarla. Conky es un fork de torsmo. | |||
== dstat == | == dstat == | ||
Línea 68: | Línea 185: | ||
Además, aporta muchas opciones de configuración y ampliación y monitoriza muchos parámetros. | Además, aporta muchas opciones de configuración y ampliación y monitoriza muchos parámetros. | ||
== duf == | |||
Este hay que instalarlo desde https://github.com/muesli/duf pero proporciona una información más fácil de leer que df o fdisk | |||
== hwloc - lstopo == | == hwloc - lstopo == | ||
Línea 110: | Línea 231: | ||
* '''r_await''': El tiempo de espera medio en milisegundos para lectura. | * '''r_await''': El tiempo de espera medio en milisegundos para lectura. | ||
* '''w_await''': El tiempo de espera medio en milisegundos para escritura. | * '''w_await''': El tiempo de espera medio en milisegundos para escritura. | ||
== mpstat == | == mpstat == | ||
Línea 126: | Línea 243: | ||
CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle | CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle | ||
Que corresponden a la CPU, el % de uso de programas de usuario, procesos con prioridad, tiempo para el kernel, tiempo de espera de E/S, Servicio a interrupciones de hardware, servicio a interrupciones de software, tiempo perdido con la planificación multiprocesador, tiempo para correr como un procesador virtual y tiempo inactivo sin esperar E/S ni procesos. | Que corresponden a la CPU, el % de uso de programas de usuario, procesos con prioridad, tiempo para el kernel, tiempo de espera de E/S, Servicio a interrupciones de hardware, servicio a interrupciones de software, tiempo perdido con la planificación multiprocesador, tiempo para correr como un procesador virtual y tiempo inactivo sin esperar E/S ni procesos. | ||
== ncdu == | |||
Comando muy útil, una especie de mejora del '''du'''. Permite ver gràficamente cuanto ocupan en disco los directorios. | |||
== NeoFetch == | |||
[http://www.omgubuntu.co.uk/2016/11/neofetch-terminal-system-info-app neofetch] es un programa muy simple para dar una información básica del sistema. Es configurable y puede servir para compartir la captura con otros o como identificador rápido de la máquina a la que estás conectado. | |||
==nmon== | ==nmon== | ||
Línea 147: | Línea 272: | ||
* -s2 es la frecuencia de actualización (2 segundos). | * -s2 es la frecuencia de actualización (2 segundos). | ||
* -c 30 es la cantidad de veces que se ha de actualizar. | * -c 30 es la cantidad de veces que se ha de actualizar. | ||
== ps == | |||
Este comando no es tanto para monitorizar como para informar de los procesos que están en marcha. Casi siempre suele ser un complemento del '''top''' o puede servir para saber si hay un servicio determinado. Suele ir combinado con '''grep'''. | |||
Ejemplos: | |||
$ ps -e # Todos los procesos | |||
$ ps aux # Mucha información de todos los procesos. | |||
$ ps auxwf # Como el anterior, pero mostrado en forma de árbol. | |||
https://alvinalexander.com/linux/unix-linux-process-memory-sort-ps-command-cpu | |||
== sar == | == sar == | ||
Línea 152: | Línea 290: | ||
El comando sar sirve para ver datos del sistema y generar informes. Recoge multitud de estadísticas del sistema. | El comando sar sirve para ver datos del sistema y generar informes. Recoge multitud de estadísticas del sistema. | ||
En primer lugar, hay que habilitar la recogida de datos por sar en /etc/default/sysstat. De esta manera va guardando información cada 15 minutos por defecto. | En primer lugar, hay que habilitar la recogida de datos por sar en /etc/default/sysstat. De esta manera va guardando información cada 15 minutos por defecto. Para cambiar la frecuencia: /etc/cron-d/sysstat | ||
A continuación, podemos probar si sar funciona: | A continuación, podemos probar si sar funciona: | ||
Línea 214: | Línea 352: | ||
Con '''F''' podemos seleccionar las columnas que son visibles y ordenar por la que queramos. | Con '''F''' podemos seleccionar las columnas que son visibles y ordenar por la que queramos. | ||
'''htop''' Es una mejora en cuanto a legibilidad y usabilidad. Muestra la carga de los núcleos por separado. | '''htop''' Es una mejora en cuanto a legibilidad y usabilidad. Muestra la carga de los núcleos por separado. [https://peteris.rocks/blog/htop/] [https://codeahoy.com/2017/01/20/hhtop-explained-visually/] [https://ahsensaeed.com/linux-htop-explained-visually/] | ||
== uptime == | == uptime == | ||
Línea 233: | Línea 371: | ||
= Red en Linux = | = Red en Linux = | ||
Las herramientas básicas para monitorizar la red en Linux son ping, traceroute, ifconfig, ip y sobretodo netstat. | Las herramientas básicas para monitorizar la red en Linux son ping, traceroute, ifconfig, ip, iptables y sobretodo netstat. | ||
Algunos comandos netstat: | Algunos comandos netstat: | ||
Línea 252: | Línea 390: | ||
n=$((c-old)); n=$(($n<47?$n:47)); for i in $(seq 1 $n); do co=$((i/2+232)); \ | n=$((c-old)); n=$(($n<47?$n:47)); for i in $(seq 1 $n); do co=$((i/2+232)); \ | ||
echo -ne "\e[38;5;${co}m█\e[0m"; done; echo ' '; old=$c; sleep 1; done | echo -ne "\e[38;5;${co}m█\e[0m"; done; echo ' '; old=$c; sleep 1; done | ||
$ sudo lsof -i 4@127.0.0.1 # Ver los programas que escuchan en localhost | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Aunque el comando netstat se considera menos moderno que el comando '''ss''': [http://lamiradadelreplicante.com/2017/10/02/examinando-las-conexiones-de-red-con-el-comando-ss/] | |||
[[Monitoritzar els clients amb iptables]] | |||
Además de estas, podemos encontrar algunas que muestran la información de forma más amigable: | Además de estas, podemos encontrar algunas que muestran la información de forma más amigable: | ||
Línea 258: | Línea 401: | ||
== bmon == | == bmon == | ||
Similar a nload, con una interfaz más detallada, muestra el ancho de banda por interfaz de red y con un gráfico ASCII. | Similar a nload, con una interfaz más detallada, muestra el ancho de banda por interfaz de red y con un gráfico ASCII. | ||
<pre class="code" style="font-size:0.7em;"> | |||
Interfaces │ RX bps pps %│ TX bps pps % | |||
lo │ 0 0 │ 0 0 | |||
qdisc none (noqueue) │ 0 0 │ 0 0 | |||
>eth0 │ 960.62KiB 339 │ 20.40KiB 325 | |||
qdisc none (noqueue) │ 0 0 │ 0 0 | |||
eth1 │ 20.40KiB 325 │ 955.75KiB 337 | |||
qdisc 1: (htb) │ 0 0 │ 975.88KiB 660 | |||
class 1:1 (htb) │ 0 0 │ 975.88KiB 660 100% | |||
class 1:10 (htb) │ 0 0 │ 811.03KiB 548 277% | |||
qdisc 40: (sfq) │ 0 0 │ 811.03KiB 548 | |||
class 40:9b (sfq) │ 0 0 │ 0 0 | |||
class 40:343 (sfq) │ 0 0 │ 0 0 | |||
┴ class 1:11 (htb) │ 0 0 │ 0 0 0% | |||
───────────────────────────────┴───────────────────────┴─────────────────────────────────────────────────────── | |||
KiB (RX Bytes/second) | |||
1076.38 .....|.|||||................................................ | |||
896.98 ||||||||||||||.............................................. | |||
717.58 ||||||||||||||.............................................. | |||
538.19 ||||||||||||||.............................................. | |||
358.79 ||||||||||||||.............................................. | |||
179.40 ||||||||||||||:............................................. | |||
1 5 10 15 20 25 30 35 40 45 50 55 60 | |||
KiB (TX Bytes/second) | |||
33.31 ...|........................................................ | |||
27.76 ...||....................................................... | |||
22.21 |||||||||||................................................. | |||
16.66 ||||||||||||||.............................................. | |||
11.10 ||||||||||||||.............................................. | |||
5.55 ||||||||||||||:............................................. | |||
1 5 10 15 20 25 30 35 40 45 50 55 60 | |||
───────────────────────────────────────┬─────────────────────────────────────────────────────────────────────── | |||
RX TX │ RX TX | |||
Bytes 2.24GiB 26.35MiB│ Packets 447.35K 393.72K | |||
Abort Error - 0 │ Carrier Error - 0 | |||
Collisions - 0 │ Compressed 0 0 | |||
CRC Error 0 - │ Dropped 0 0 | |||
Errors 0 0 │ FIFO Error 0 0 | |||
Frame Error 0 - │ Heartbeat Erro - 0 | |||
ICMPv6 0 8 │ ICMPv6 Errors 0 0 | |||
Ip6 Address Er 0 - │ Ip6 Broadcast 0 0 | |||
Ip6 Broadcast 0 0 │ Ip6 Delivers 0 - | |||
Ip6 Forwarded - 0 │ Ip6 Header Err 0 - | |||
Ip6 Multicast 1.83KiB 536B │ Ip6 Multicast 28 8 | |||
Ip6 No Route 0 0 │ Ip6 Reasm/Frag 0 0 | |||
Ip6 Reasm/Frag 0 0 │ Ip6 Reasm/Frag 0 0 | |||
Ip6 Reassembly 0 - │ Ip6 Too Big Er 0 - | |||
Ip6 Truncated 0 - │ Ip6 Unknown Pr 0 - | |||
Ip6Discards 0 0 │ Ip6Octets 1.83KiB 536B | |||
Ip6Pkts 28 8 │ Length Error 0 - | |||
Missed Error 0 - │ Multicast - 0 | |||
Over Error 0 - │ Window Error - 0 | |||
───────────────────────────────────────┼─────────────────────────────────────────────────────────────────────── | |||
MTU 1500 │ Flags broadcast,multicast,up | |||
Operstate up │ IfIndex 11 | |||
Address 00:16:3e:f2:83:76 │ Broadcast ff:ff:ff:ff:ff:ff | |||
Mode default │ TXQlen 1000 | |||
Family unspec │ Alias | |||
Qdisc noqueue │ SlaveOfIndex 12 | |||
</pre> | |||
== bwm-ng == | == bwm-ng == | ||
Línea 271: | Línea 475: | ||
Muestra la carga del sistema con una salida compatible con herramientas de terminal, se puede pedir que sólo saque los datos de la red: | Muestra la carga del sistema con una salida compatible con herramientas de terminal, se puede pedir que sólo saque los datos de la red: | ||
$ dstat -nt | $ dstat -nt | ||
== Etherape == | |||
Es un programa con GUI que muestra el tráfico de la red. [http://linuxpitstop.com/install-graphical-network-monitor-etherape-on-ubuntu-linux-16/] | |||
== ifstat == | == ifstat == | ||
Línea 326: | Línea 533: | ||
* vnStat daemon is running | * vnStat daemon is running | ||
Es puede usar para hacer estudios semanales o mensuales, mejor que para monitorizar en tiempo real. | Es puede usar para hacer estudios semanales o mensuales, mejor que para monitorizar en tiempo real. | ||
https://www.cyberciti.biz/tips/keeping-a-log-of-daily-network-traffic-for-adsl-or-dedicated-remote-linux-box.html | |||
En principio es para estadísticas a largo plazo, pero si ponemos la opción -l hace un análisis del tráfico del momento. | |||
== Benchmark de red == | |||
=== Netperf === | |||
Necesita un cliente y un servidor y mide diferentes aspectos del rendimiento de la red. Soporta multitud de tests y se pueden ver y usar ejemplos en /usr/share/doc/netperf/examples. | |||
Al instalarlo en Ubuntu puede que ya deje el servidor '''netserver''' en marcha. | |||
https://people.freebsd.org/~pjd/netperf/ | |||
=== Iperf === | |||
Es muy parecido al Netperf en cuanto al funcionamiento. Aunque Netperf tiene muchas funciones, Iperf es más usado y se encuentra más información sobre él. [https://www.cyberciti.biz/faq/how-to-test-the-network-speedthroughput-between-two-linux-servers/] | |||
To run iperf as the server, use $iperf -s -p port, where ‘port’ can be any random port. | |||
On the client side, to connect to the server, use $iperf -c server_ip -p server_port. | |||
== Monitores de flujo de red con GUI == | |||
== Ntopng == | |||
Es casi el estandar de ese tipo de monitores. Proporciona datos históricos del flujo por la red. Usa una base de datos redis-server y se accede via web. | |||
== Flowbat == | |||
http://www.flowbat.com/download.html | |||
== Darkstat == | |||
https://unix4lyfe.org/darkstat/ | |||
== NFSen == | |||
http://nfsen.sourceforge.net/#mozTocId301830 | |||
= Enlaces = | = Enlaces = | ||
Línea 333: | Línea 580: | ||
* http://www.binarytides.com/linux-check-processor/ | * http://www.binarytides.com/linux-check-processor/ | ||
* http://bencane.com/2012/08/06/troubleshooting-high-io-wait-in-linux/?utm_campaign=shareaholic&utm_medium=yc_hacker_news&utm_source=news | * http://bencane.com/2012/08/06/troubleshooting-high-io-wait-in-linux/?utm_campaign=shareaholic&utm_medium=yc_hacker_news&utm_source=news | ||
* https://insights.hpe.com/articles/16-linux-server-monitoring-commands-you-really-need-to-know-1703.html | |||
TODO: | TODO: | ||
perf, df, du, nethogs | perf, df, du, nethogs, collectl, saidar, glances, [https://haydenjames.io/use-atop-linux-server-performance-analysis/ atop], lsof | ||
http://askubuntu.com/questions/182886/how-to-get-average-network-load-instead-of-instant | http://askubuntu.com/questions/182886/how-to-get-average-network-load-instead-of-instant | ||
http://www.brendangregg.com/USEmethod/use-linux.html | http://www.brendangregg.com/USEmethod/use-linux.html | ||
http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html | http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html | ||
http://www.cyberciti.biz/faq/linux-cpuid-command-read-cpuid-instruction-on-linux-for-cpu/ | |||
( Netdata: https://github.com/firehol/netdata/blob/master/README.md https://github.com/firehol/netdata/wiki/You-should-install-QoS-on-all-your-servers) | |||
https://sysdig.com/blog/linux-troubleshooting-cheatsheet/?twitterID=nixCraft | |||
http://cb.vu/unixtoolbox.xhtml | |||
https://enc.com.au/2016/05/07/displaying-linux-memory/ | |||
http://www.monitorix.org/ | |||
http://blog.packagecloud.io/eng/2016/06/22/monitoring-tuning-linux-networking-stack-receiving-data/ | |||
http://opensourceforu.com/2016/10/network-performance-monitoring/ | |||
https://www.digitalocean.com/community/tutorials/how-to-monitor-your-ubuntu-16-04-system-with-sysdig | |||
https://www.cyberciti.biz/hardware/how-to-use-corefreq-cpu-monitoring-software-on-linux/ | |||
https://www.cyberciti.biz/faq/linux-command-to-see-major-minor-pagefaults/ | |||
https://github.com/imsnif/bandwhich | |||
https://arstechnica.com/gadgets/2020/02/how-fast-are-your-disks-find-out-the-open-source-way-with-fio/ |
Revisión actual - 17:43 5 nov 2020
Recopilación de herramientas útiles para la monitorización de sistemas operativos:
Información del hardware en Linux
/proc/cpuinfo
El fichero básico para ver las características de la CPU. Relacionado con este fichero, el comando lscpu nos lo muestra con datos más fácile de leer:
$ lscpu Arquitectura: x86_64 modo(s) de operación de las CPUs: 32-bit, 64-bit Orden de los bytes: Little Endian CPU(s): 8 Lista de la(s) CPU(s) en línea: 0-7 Hilo(s) de procesamiento por núcleo: 2 Núcleo(s) por «socket»: 4 «Socket(s)» 1 Modo(s) NUMA: 1 ID de fabricante: GenuineIntel Familia de CPU: 6 Modelo: 26 Nombre del modelo: Intel(R) Core(TM) i7 CPU 930 @ 2.80GHz Revisión: 5 CPU MHz: 1603.765 CPU MHz máx.: 2801,0000 CPU MHz mín.: 1600,0000 BogoMIPS: 5612.92 Virtualización: VT-x Caché L1d: 32K Caché L1i: 32K Caché L2: 256K Caché L3: 8192K CPU(s) del nodo NUMA 0: 0-7 Indicadores: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid dtherm ida flush_l1d
Un comando interesante que se puede hacer con este archivo es el siguiente, en el que muestra en tiempo real la fecuencia actual que está usando el procesador en cada núcleo:
watch -n0.5 "grep "[M]Hz" /proc/cpuinfo" cpu MHz : 1603.685 cpu MHz : 1604.425 cpu MHz : 1603.634 cpu MHz : 1604.990 cpu MHz : 1605.899 cpu MHz : 1607.723 cpu MHz : 1661.460 cpu MHz : 1605.772
cpupower
Muestra información relativa al ahorro de energía del procesador. Informa de las frecuencias mínimas y turbo, así como de los estados inactivos. Muestra información y monitoriza. Ejemplos:
$ sudo cpupower monitor |Nehalem || Mperf || Idle_Stats CPU | C3 | C6 | PC3 | PC6 || C0 | Cx | Freq || POLL | C1 | C1E | C3 | C6 0| 0,33| 96,63| 0,00| 0,00|| 2,35| 97,65| 1719|| 0,00| 0,00| 0,00| 0,07| 97,63 4| 0,33| 96,65| 0,00| 0,00|| 0,36| 99,64| 1629|| 0,00| 0,00| 0,00| 0,23| 99,51 1| 0,78| 98,22| 0,00| 0,00|| 0,44| 99,56| 1743|| 0,00| 0,00| 0,00| 0,70| 98,96 5| 0,78| 98,23| 0,00| 0,00|| 0,14| 99,86| 1708|| 0,00| 0,00| 0,00| 0,20| 99,74 2| 0,04| 92,79| 0,00| 0,00|| 3,11| 96,89| 2061|| 0,00| 3,56| 0,00| 0,05| 93,35 6| 0,04| 92,79| 0,00| 0,00|| 0,32| 99,68| 1713|| 0,00| 0,00| 0,00| 0,00| 99,76 3| 0,17| 99,19| 0,00| 0,00|| 0,14| 99,86| 1845|| 0,00| 0,00| 0,00| 0,19| 99,71 7| 0,17| 99,19| 0,00| 0,00|| 0,29| 99,71| 1763|| 0,00| 0,00| 0,00| 0,08| 99,66 $ cpupower frequency-info analyzing CPU 0: driver: acpi-cpufreq CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 10.0 us hardware limits: 1.60 GHz - 2.80 GHz available frequency steps: 2.80 GHz, 2.80 GHz, 2.67 GHz, 2.53 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz available cpufreq governors: conservative ondemand userspace powersave performance schedutil current policy: frequency should be within 1.60 GHz and 2.80 GHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 1.62 GHz (asserted by call to kernel) boost state support: Supported: yes Active: yes 33999 MHz max turbo 4 active cores 33999 MHz max turbo 3 active cores 33999 MHz max turbo 2 active cores 33999 MHz max turbo 1 active cores
dmidecode
Comando para dar información del hardware del equipo.
Ejemplos:
$ dmidecode # información de los mensajes del sistema en el arranque y detección de nuevos dispositivos
$ sudo dmidecode -t 16 # Información sobre la RAM, para saber los módulos que puedes instalar.
$ sudo dmidecode -t 17 # Información de los módulos instalados
lshw
$ lshw -html > hardware.html
Hace una web con la información de hardware del ordenador.
powertop
Potente herramienta de monitorización en tiempo real y con muchos detalles del rendimiento del procesador. Dice los procesos que más tiempo estás en él y las frecuencias a las que trabaja cada núcleo entre otras muchas cosas.
Tal vez hay que calibrarlo con:
# powertop --calibrate
Puede ser una buena manera de detectar procesos que están consumiendo la batería.
turbostat
Una herramienta para obtener cada cierto tiempo estadísticas de frecuencias, tiempos inactivos y consumo de la CPU.
Rendimiento en Linux
/proc/pid/stat:
pid: 1 tcomm: (init) state: S ppid: 0 pgid: 0 sid: 0 tty_nr: 0 tty_pgrp: -1 flags: 8388864 min_flt: 3706 cmin_flt: 282132 maj_flt: 19 cmaj_flt: 212 utime: 0.030000 stime: 1.540000 cutime: 2.840000 cstime: 2.790000 priority: 16 nice: 0 num_threads: 1 it_real_value: 67.140000 start_time: 11.07 09:07 (11158.38s) vsize: 1626112 rss: 130 rsslim: 4294967295 start_code: 134512640 end_code: 134540142 start_stack: 2948335296 esp: 2948334000 eip: 2817780216 pending: 0000000000000000 blocked: 0000000000000000 sigign: 0000000057f0d8fc sigcatch: 00000000280b2603 wchan: 0 zero1: 0 zero2: 0 exit_signal: 0000000000000000 cpu: 0 rt_priority: 0 policy: 0
$ /usr/bin/time -v <programa>
atop
Mescla htop, iotop i iftop.
El resultat és un poc complicat de llegir.
conky
Conky es un monitor de sistema para los sistemas X Window. Está disponible para GNU/Linux y FreeBSD. Es un software libre liberado bajo los términos de la licencia GPL. Conky es capaz de monitorear distintas variables de sistema, incluyendo CPU, memoria, swap, espacio de disco, temperaturas, subidas, bajadas, mensajes de sistema, y mucho más. Es completamente configurable, la configuración puede ser un poco difícil de entender, pero es bastante posible realizarla. Conky es un fork de torsmo.
dstat
El resultado es parecido a vmstat. La diferencia es que colorea la salida y la hace más legible.
Además, aporta muchas opciones de configuración y ampliación y monitoriza muchos parámetros.
duf
Este hay que instalarlo desde https://github.com/muesli/duf pero proporciona una información más fácil de leer que df o fdisk
hwloc - lstopo
lstopo proporciona una imatge molt útil per a conèixer l'arquitectura de la CPU
iostat
Muestra información de procesador y de la E/S a discos.
Esto es parte de una posible salida:
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 1,05 5,86 18,18 1598467 4957376 sdb 0,00 0,01 0,00 2766 0 scd0 0,00 0,04 0,00 9784 0
Lo que indica es el dispositivo, las transferencias por segundo, los kb leidos o escritos por segundo y el total leído o escrito.
Si lanzamos este comando:
$ iostat -xkdz Linux 3.2.0-58-generic-pae (servidor) 27/03/14 _i686_ (4 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0,15 0,76 0,26 0,79 5,86 18,22 45,84 0,01 12,36 21,74 9,32 4,24 0,45 sdb 0,00 0,00 0,00 0,00 0,01 0,00 7,99 0,00 1,08 1,08 0,00 0,55 0,00 scd0 0,00 0,00 0,00 0,00 0,04 0,00 76,74 0,00 51,69 51,69 0,00 42,43 0,00
En este caso, muestra más detalle. Las columnas son:
- rrqms/s: El número de peticiones de lectura por segundo enviadas al dispositivo.
- wrqms/s: El número de peticiones de escritura por segundo enviadas al dispositivo.
- r/s: El número de lecturas completadas por el dispositivo por segundo.
- w/s: El número de escrituras completadas por el dispositivo por segundo.
- rkB/s: El número de sectores en kilobytes leidos por el dispositivo por segundo.
- wkB/s: El número de sectores en kilobytes escritos por el dispositivo por segundo.
- avgrq-sz: El tamaño medio en sectores de las peticiones hechas al dispositivo.
- avgqu-sz: El tamaño medio de la cola de peticiones.
- await: El tiempo de espera medio en milisegundos.
- r_await: El tiempo de espera medio en milisegundos para lectura.
- w_await: El tiempo de espera medio en milisegundos para escritura.
mpstat
Muestra la actividad para cada procesador y los datos globales. Como otros programas del paquete sysstat, acepta un parámetro numérico que indica el intervalo de actualización.
$ mpstat -P ALL 1
Este comando extrae la información de cada procesador cada segundo.
Esta distribución por procesadores o núcleos permite encontrar hilos muy activos o cargas mal distribuidas. Puede ser útil para el desarrollador de software.
Por defecto, estos son los datos que proporciona:
CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
Que corresponden a la CPU, el % de uso de programas de usuario, procesos con prioridad, tiempo para el kernel, tiempo de espera de E/S, Servicio a interrupciones de hardware, servicio a interrupciones de software, tiempo perdido con la planificación multiprocesador, tiempo para correr como un procesador virtual y tiempo inactivo sin esperar E/S ni procesos.
ncdu
Comando muy útil, una especie de mejora del du. Permite ver gràficamente cuanto ocupan en disco los directorios.
NeoFetch
neofetch es un programa muy simple para dar una información básica del sistema. Es configurable y puede servir para compartir la captura con otros o como identificador rápido de la máquina a la que estás conectado.
nmon
# apt-get install nmon # nmon
Para poder ver automáticamente los datos deseados hay que exportar una variable:
# export NMON=mndc
Luego al ejecutarlo ya no hay que usar las letras indicadas en la variable
Se puede pedir que guarde los datos para analizarlos o hacer gráficas:
# nmon -f -s2 -c 30
- -f indica que lo guarde en una hoja de cálculo .
- -s2 es la frecuencia de actualización (2 segundos).
- -c 30 es la cantidad de veces que se ha de actualizar.
ps
Este comando no es tanto para monitorizar como para informar de los procesos que están en marcha. Casi siempre suele ser un complemento del top o puede servir para saber si hay un servicio determinado. Suele ir combinado con grep.
Ejemplos:
$ ps -e # Todos los procesos $ ps aux # Mucha información de todos los procesos. $ ps auxwf # Como el anterior, pero mostrado en forma de árbol.
https://alvinalexander.com/linux/unix-linux-process-memory-sort-ps-command-cpu
sar
El comando sar sirve para ver datos del sistema y generar informes. Recoge multitud de estadísticas del sistema.
En primer lugar, hay que habilitar la recogida de datos por sar en /etc/default/sysstat. De esta manera va guardando información cada 15 minutos por defecto. Para cambiar la frecuencia: /etc/cron-d/sysstat
A continuación, podemos probar si sar funciona:
$ sar 1 3
Nos muestra estadísticas cada 1 segundo 3 veces. El resultado es igual que el de mpstat en este caso.
Algunas de las opciones más importantes:
- -u: Muestra el uso de CPU. Se le puede poner el parámetro ALL para que muestre todos los datos.
- -P: Muestra el uso de cada CPU o núcleo. Se puede combinar con ALL para que los muestre todos o con el número de CPU que queremos mostrar.
- -r: Muestra estadísticas de uso de memoria.
- -S: Información sobre la memoria SWAP.
- -R: Información sobre las páginas liberadas, usadas o guardadas por segundo.
- -B: Estadísticas sobre la paginación.
- -W: Estadísticas sobre SWAP.
- -b: Información sobre la E/S del disco.
- -w: Información sobre los procesos creados por segundo y los cambios de contexto por segundo.
- -q: Carga media en los últimos minuto, 5 minutos y 15 minutos.
- -n: Estadísticas de red. Acepta palabras clave. Estas son
- DEV – Displays network devices vital statistics for eth0, eth1, etc.,
- EDEV – Display network device failure statistics
- NFS – Displays NFS client activities
- NFSD – Displays NFS server activities
- SOCK – Displays sockets in use for IPv4
- IP – Displays IPv4 network traffic
- EIP – Displays IPv4 network errors
- ICMP – Displays ICMPv4 network traffic
- EICMP – Displays ICMPv4 network errors
- TCP – Displays TCPv4 network traffic
- ETCP – Displays TCPv4 network errors
- UDP – Displays UDPv4 network traffic
- SOCK6, IP6, EIP6, ICMP6, UDP6 are for IPv6
- ALL – This displays all of the above information.
sensors
Comando simple que ayuda a saber si la temperatura y otros parámetros físicos son los adecuados.
top y htop
Nos muesta en tiempo real los procesos que más están consumiendo.
El % de CPU es la suma de todos los procesadores o núcleos.
Es una manera fácil y rápida de monitorizar. Por eso es una de las más utilizadas.
El problema de top es que puede no mostrar todos los procesos que consumen CPU. Algunos procesos tienen tiempos de CPU muy cortos y ocurren mientras el top se actualiza. Top no facilita el tratamiento posterior de los datos. En cualquier caso se puede lanzar en modo batch con -b y recoger los datos en un fichero.
Con la opción -d se cambia el delay, es decir, el tiempo entre actualizaciones. si es demasiado corto puede ser ilegible y, además, consume más CPU. En tiempo de ejecución.
Con la opción -i se ocultan los procesos que están en espera. Esta opción también se puede usar en tiempo de ejecución.
Presionando 1 mostramos todas las CPU o núcleos por separado.
Con e y E se cambia la manera en que se muestra la memoria para hacerla más legible por los humanos.
Con F podemos seleccionar las columnas que son visibles y ordenar por la que queramos.
htop Es una mejora en cuanto a legibilidad y usabilidad. Muestra la carga de los núcleos por separado. [2] [3] [4]
uptime
$ uptime 17:30:05 up 3:52, 2 users, load average: 0.09, 0.12, 0.13
Los últimos tres números son la carga media del último minuto, 5 y 15 minutos. Considera la carga como el número medio de procesos que están bien en un estado ejecutable o ininterrumpido. Un proceso en un estado ejecutable está utilizando la CPU o en espera para utilizar la CPU. Un proceso en estado ininterrumpido está esperando algún tipo de acceso de E/S, por ejemplo, a la espera de disco.
Los promedios se toman en los tres intervalos de tiempo. promedios de carga no están normalizados por el número de CPU en un sistema, por lo que una carga de media 1 significa, con una CPU, que está cargado todo el tiempo. Mientras que con 4 CPU, está activo un 25%.
Solo deberíamos usarlo como pista. En sistemas multiprocesador hay que tener en cuenta la normalización.
vmstat
Proporciona información sobre procesos y memória virtual. Se puede pedir que lo haga una cantidad determinada de repeticiones y definir la frecuencia de actualización.
Red en Linux
Las herramientas básicas para monitorizar la red en Linux son ping, traceroute, ifconfig, ip, iptables y sobretodo netstat.
Algunos comandos netstat:
$ netstat -a # todas las conexiones.
$ netstat -at # todas las conexiones TCP.
$ netstat -ant # Sin dns, para ir más rápido.
$ sudo netstat -nlpt # Los programas que están detras de las conexiones.
$ sudo netstat -ltpe # Los usuarios que usan esas conexiones
$ netstat -s # Estadísticas
$ while [ 1 ]; do netstat -atnp | grep ESTA; sleep 1; done # Lista de las conexiones que se van estableciendo
$ netstat -np | grep -v ^unix # conexiones y los programas, quitando los sockets de unix
$ old=$(netstat -s | grep 'total' | tr -s " " | cut -d" " -f2); \
while true; do c=$(netstat -s | grep 'total' | tr -s " " | cut -d" " -f2); \
n=$((c-old)); for i in $(seq 1 $n); do echo -n '*'; done; echo ''; old=$c; sleep 0.5; done
$ old=$(netstat -s | grep 'total' | tr -s " " | cut -d" " -f2); \
while true; do c=$(netstat -s | grep 'total' | tr -s " " | cut -d" " -f2); \
n=$((c-old)); n=$(($n<47?$n:47)); for i in $(seq 1 $n); do co=$((i/2+232)); \
echo -ne "\e[38;5;${co}m█\e[0m"; done; echo ' '; old=$c; sleep 1; done
$ sudo lsof -i 4@127.0.0.1 # Ver los programas que escuchan en localhost
Aunque el comando netstat se considera menos moderno que el comando ss: [5]
Monitoritzar els clients amb iptables
Además de estas, podemos encontrar algunas que muestran la información de forma más amigable:
bmon
Similar a nload, con una interfaz más detallada, muestra el ancho de banda por interfaz de red y con un gráfico ASCII.
Interfaces │ RX bps pps %│ TX bps pps % lo │ 0 0 │ 0 0 qdisc none (noqueue) │ 0 0 │ 0 0 >eth0 │ 960.62KiB 339 │ 20.40KiB 325 qdisc none (noqueue) │ 0 0 │ 0 0 eth1 │ 20.40KiB 325 │ 955.75KiB 337 qdisc 1: (htb) │ 0 0 │ 975.88KiB 660 class 1:1 (htb) │ 0 0 │ 975.88KiB 660 100% class 1:10 (htb) │ 0 0 │ 811.03KiB 548 277% qdisc 40: (sfq) │ 0 0 │ 811.03KiB 548 class 40:9b (sfq) │ 0 0 │ 0 0 class 40:343 (sfq) │ 0 0 │ 0 0 ┴ class 1:11 (htb) │ 0 0 │ 0 0 0% ───────────────────────────────┴───────────────────────┴─────────────────────────────────────────────────────── KiB (RX Bytes/second) 1076.38 .....|.|||||................................................ 896.98 ||||||||||||||.............................................. 717.58 ||||||||||||||.............................................. 538.19 ||||||||||||||.............................................. 358.79 ||||||||||||||.............................................. 179.40 ||||||||||||||:............................................. 1 5 10 15 20 25 30 35 40 45 50 55 60 KiB (TX Bytes/second) 33.31 ...|........................................................ 27.76 ...||....................................................... 22.21 |||||||||||................................................. 16.66 ||||||||||||||.............................................. 11.10 ||||||||||||||.............................................. 5.55 ||||||||||||||:............................................. 1 5 10 15 20 25 30 35 40 45 50 55 60 ───────────────────────────────────────┬─────────────────────────────────────────────────────────────────────── RX TX │ RX TX Bytes 2.24GiB 26.35MiB│ Packets 447.35K 393.72K Abort Error - 0 │ Carrier Error - 0 Collisions - 0 │ Compressed 0 0 CRC Error 0 - │ Dropped 0 0 Errors 0 0 │ FIFO Error 0 0 Frame Error 0 - │ Heartbeat Erro - 0 ICMPv6 0 8 │ ICMPv6 Errors 0 0 Ip6 Address Er 0 - │ Ip6 Broadcast 0 0 Ip6 Broadcast 0 0 │ Ip6 Delivers 0 - Ip6 Forwarded - 0 │ Ip6 Header Err 0 - Ip6 Multicast 1.83KiB 536B │ Ip6 Multicast 28 8 Ip6 No Route 0 0 │ Ip6 Reasm/Frag 0 0 Ip6 Reasm/Frag 0 0 │ Ip6 Reasm/Frag 0 0 Ip6 Reassembly 0 - │ Ip6 Too Big Er 0 - Ip6 Truncated 0 - │ Ip6 Unknown Pr 0 - Ip6Discards 0 0 │ Ip6Octets 1.83KiB 536B Ip6Pkts 28 8 │ Length Error 0 - Missed Error 0 - │ Multicast - 0 Over Error 0 - │ Window Error - 0 ───────────────────────────────────────┼─────────────────────────────────────────────────────────────────────── MTU 1500 │ Flags broadcast,multicast,up Operstate up │ IfIndex 11 Address 00:16:3e:f2:83:76 │ Broadcast ff:ff:ff:ff:ff:ff Mode default │ TXQlen 1000 Family unspec │ Alias Qdisc noqueue │ SlaveOfIndex 12
bwm-ng
Muy simple monitor de velocidades en las interfaces de red. Si la resolución de la terminal es buena, puede mostrar la velocidad con un gráfico:
$ bwm-ng -o curses2
O en csv para hacer estadísticas después:
$ bwm-ng -o csv
cbm
Una interfaz simple con pocas opciones que muestra el volumen de tráfico en un instante de tiempo.
dstat
Muestra la carga del sistema con una salida compatible con herramientas de terminal, se puede pedir que sólo saque los datos de la red:
$ dstat -nt
Etherape
Es un programa con GUI que muestra el tráfico de la red. [6]
ifstat
$ ifstat -t -i eth0 0.5
Muestra el ancho de banda en un formato parecido al vmstat u otros. Lo bueno es que se puede enviar por pipes o guardar en ficheros para analizarlo con herramientas de terminal.
iftop
Muestra el ancho de banda por socket. Con la opción -n no resuelve el nombre y puede ir más rápido.
iptraf
Un completo programa que da información sobre el ancho de banda y las tarjetas de red. Muy potente y fácil de usar [7]
mtr
Combina las funciones de ping y traceroute en una herramienta.
nethogs
Funciona de forma muy parecida a top, pero para monitorizar el uso de la red de los procesos.
netcat
Ver ncat
netwatch
$ sudo apt-get install netdiag sudo netwatch -e eth0 -nt
Forma parte del paquete netdiag y sirve para mostrar las conexiones entre nuestras interfaces de red y hosts remotos.
nload
Muestra en tiempo real el ancho de banda de cada interfaz de red. Lo hace con un gráfico.
pkstat
$ sudo pktstat -i eth0 -nt
Muestra las conexiones activas y la velocidad de cada una. Es bastante interesante para descubrir qué conexiones están consumiendo el ancho de banda.
slurm
Otro gráfico ASCII con colores para monitorizar la velocidad de una interfaz de red.
$ slurm -s -i eth0
speedometer
$ speedometer -r eth0 -t eth0
Otro monitor con gràficos atractivos del tráfico entrante o saliente de una interfaz de red.
tcptrack
Similar a iftop, muestra el ancho de banda en cada socket.
vnstat
Se trata de un demonio que va recopilando datos de la red todo el tiempo. Se puede comprobar que está en marcha:
$ service vnstat status * vnStat daemon is running
Es puede usar para hacer estudios semanales o mensuales, mejor que para monitorizar en tiempo real.
En principio es para estadísticas a largo plazo, pero si ponemos la opción -l hace un análisis del tráfico del momento.
Benchmark de red
Netperf
Necesita un cliente y un servidor y mide diferentes aspectos del rendimiento de la red. Soporta multitud de tests y se pueden ver y usar ejemplos en /usr/share/doc/netperf/examples.
Al instalarlo en Ubuntu puede que ya deje el servidor netserver en marcha.
https://people.freebsd.org/~pjd/netperf/
Iperf
Es muy parecido al Netperf en cuanto al funcionamiento. Aunque Netperf tiene muchas funciones, Iperf es más usado y se encuentra más información sobre él. [8]
To run iperf as the server, use $iperf -s -p port, where ‘port’ can be any random port.
On the client side, to connect to the server, use $iperf -c server_ip -p server_port.
Monitores de flujo de red con GUI
Ntopng
Es casi el estandar de ese tipo de monitores. Proporciona datos históricos del flujo por la red. Usa una base de datos redis-server y se accede via web.
Flowbat
http://www.flowbat.com/download.html
Darkstat
https://unix4lyfe.org/darkstat/
NFSen
http://nfsen.sourceforge.net/#mozTocId301830
Enlaces
- [9]
- conky en español
- http://www.binarytides.com/linux-check-processor/
- http://bencane.com/2012/08/06/troubleshooting-high-io-wait-in-linux/?utm_campaign=shareaholic&utm_medium=yc_hacker_news&utm_source=news
- https://insights.hpe.com/articles/16-linux-server-monitoring-commands-you-really-need-to-know-1703.html
TODO:
perf, df, du, nethogs, collectl, saidar, glances, atop, lsof http://askubuntu.com/questions/182886/how-to-get-average-network-load-instead-of-instant http://www.brendangregg.com/USEmethod/use-linux.html http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html http://www.cyberciti.biz/faq/linux-cpuid-command-read-cpuid-instruction-on-linux-for-cpu/ ( Netdata: https://github.com/firehol/netdata/blob/master/README.md https://github.com/firehol/netdata/wiki/You-should-install-QoS-on-all-your-servers) https://sysdig.com/blog/linux-troubleshooting-cheatsheet/?twitterID=nixCraft http://cb.vu/unixtoolbox.xhtml https://enc.com.au/2016/05/07/displaying-linux-memory/ http://www.monitorix.org/ http://blog.packagecloud.io/eng/2016/06/22/monitoring-tuning-linux-networking-stack-receiving-data/ http://opensourceforu.com/2016/10/network-performance-monitoring/ https://www.digitalocean.com/community/tutorials/how-to-monitor-your-ubuntu-16-04-system-with-sysdig https://www.cyberciti.biz/hardware/how-to-use-corefreq-cpu-monitoring-software-on-linux/ https://www.cyberciti.biz/faq/linux-command-to-see-major-minor-pagefaults/ https://github.com/imsnif/bandwhich https://arstechnica.com/gadgets/2020/02/how-fast-are-your-disks-find-out-the-open-source-way-with-fio/