System Resource Monitoring

Monitoring system resources in real-time lets you diagnose performance problems, understand baseline behavior, and catch issues before they become outages. Ubuntu provides built-in tools for every resource category. Knowing which tool to use for which resource — and what the output means — is a core operational skill.

CPU monitoring

# Quick CPU overview: load average and CPU breakdown
uptime
top

uptime output explained

 14:30:05 up 5 days, 2:10,  2 users,  load average: 2.10, 1.85, 1.72
#                                                    1min  5min  15min

# If load average > number of CPU cores → CPU bottleneck
# Check cores: nproc
# Continuous CPU monitoring
mpstat 2    # Per-CPU stats, 2-second interval (requires sysstat)
sar -u 2 10  # CPU utilization, 10 samples at 2-second intervals

# Find CPU-heavy processes
ps aux --sort=-%cpu | head -10

# Per-CPU core view in top: press 1 while in top
nproc    # Number of CPU cores
lscpu    # Full CPU information

Memory monitoring

# Memory overview
free -h

free -h output

               total        used        free      shared  buff/cache   available
Mem:            15Gi       5.2Gi       3.8Gi       220Mi       6.0Gi       9.5Gi
Swap:          2.0Gi          0B       2.0Gi

# 'available' (not 'free') = how much can processes use
# buff/cache is NOT wasted — Linux will reclaim it for processes when needed
# Continuous memory monitoring
vmstat 2    # Virtual memory stats including swap activity

# Memory by process
ps aux --sort=-%mem | head -10

# Detailed memory info
cat /proc/meminfo

# Monitor for memory pressure (oom events)
dmesg | grep -i "oom\|out of memory" | tail -5
sudo journalctl -k | grep -i oom | tail -5

Network monitoring

# Network interface statistics
ip -s link    # Packets/bytes sent/received per interface

# Real-time network bandwidth
sudo apt install -y iftop
sudo iftop -n    # -n = don't resolve hostnames (faster)

# Network connections
ss -tuln    # Listening ports (TCP+UDP)
ss -tunp    # All connections with process info
netstat -tuln  # Alternative (older tool)

# Per-process network usage
sudo apt install -y nethogs
sudo nethogs    # Show bandwidth per process

# Continuous network stats
sar -n DEV 2    # Network device stats every 2 seconds

All-in-one monitoring tools

# glances: comprehensive dashboard (CPU, memory, disk, network in one view)
sudo apt install -y glances
glances

# dstat: combines vmstat + iostat + ifstat in one view
sudo apt install -y dstat
dstat -cdnm 2    # CPU, disk, network, memory — 2-second interval
dstat -tam 2     # Time, all, memory

# nmon: interactive ncurses monitoring
sudo apt install -y nmon
nmon    # Press c=CPU, m=memory, d=disk, n=network, q=quit

dstat output (one line per 2 seconds)

----total-cpu-usage---- -dsk/total- -net/total- ------memory-usage-----
usr sys idl wai stl| read  writ| recv  send|  used  free  buff  cach
 12   3  83   2   0| 245k  890k|  45k   12k| 5200M 3800M  450M 6000M

Historical performance data

# sar collects historical performance data (if sysstat is enabled)
sudo apt install -y sysstat

# Enable sysstat collection
sudo systemctl enable --now sysstat

# View historical CPU data (today)
sar -u

# View historical data for a specific date
sar -f /var/log/sysstat/sa$(date +%d -d "yesterday")

# CPU history for last 24 hours
sar -u 1 > /dev/null; sar -u | tail -24

# Memory history
sar -r

# I/O history
sar -d

Conclusion

The core real-time monitoring toolkit: top or htop for CPU and memory, iostat -xhd 2 for disk I/O, iftop for network bandwidth, and vmstat 2 for a combined view including swap activity. Install glances or dstat for an all-in-one dashboard. Enable sysstat for historical data collection via sar — this is invaluable for post-incident analysis when you need to understand what was happening on the system an hour before a problem was noticed.

Need help with Ubuntu administration?

Work directly with Muhammad Irfan Aslam for Ubuntu Server, Linux, cloud, Docker, DevOps, CI/CD, or infrastructure troubleshooting support.

Work with Muhammad Irfan Aslam