Back to Blog

Monitor Ubuntu: CPU, memory, IO and network with essential tools

Complete tutorial on top/htop/iotop in Ubuntu. Learn htop, iotop, iftop, nmon.

Monitor Ubuntu: CPU, memory, IO and network with essential tools

Monitor Ubuntu: CPU, Memory, IO and Network with Essential Tools

Monitoring system performance is crucial for maintaining the health and efficiency of your Ubuntu/Linux servers. Whether you are managing a single machine or a fleet of servers, understanding how your system resources are being utilized can help you diagnose problems, optimize performance, and ensure that applications are running smoothly. This tutorial will introduce you to essential monitoring tools such as htop, iotop, iftop, and nmon, which will provide you with the insights you need into your system's CPU, memory, disk I/O, and network performance.

Prerequisites

  • Ubuntu Version: This tutorial is applicable to Ubuntu 18.04 and later.
  • Required Packages: Ensure you have the following tools installed:
    • htop
    • iotop
    • iftop
    • nmon
  • Permissions: You will need sudo privileges to install these tools and run some of the commands.
  • Risks: Monitoring itself does not pose risks, but running commands with sudo can affect system processes. Always ensure you understand the commands you execute.

Core Concepts

  • CPU Monitoring: Refers to tracking the usage of the CPU, including percentage utilization, load averages, and per-process activity.
  • Memory Monitoring: Involves assessing how much RAM is being used, including free, cached, and swap memory.
  • IO Monitoring: Involves analyzing disk input/output, which can help identify bottlenecks in read/write operations.
  • Network Monitoring: Tracks the data sent and received over the network, helping to identify bandwidth usage and network issues.

When to Use

  • htop: Use for an interactive process viewer that provides real-time updates on CPU and memory usage.
  • iotop: Ideal for monitoring disk I/O by displaying which processes are consuming the most I/O.
  • iftop: Best suited for visualizing network traffic in real-time.
  • nmon: A comprehensive tool that provides performance monitoring for CPU, memory, disk, and network all in one interface.

Limits

While these tools are powerful, they can consume system resources themselves. Be cautious when running them on resource-constrained systems or in production environments.

Syntax/Commands

Tool Command Description
htop htop Interactive process viewer
iotop sudo iotop Disk I/O monitoring
iftop sudo iftop Network usage monitoring
nmon nmon Comprehensive performance monitoring

Practical Examples

1. Using htop

htop
# Launches the htop interface to monitor CPU and memory usage interactively.

2. Filtering Processes in htop

htop
# Press F3 to search for a specific process by name.

3. Using iotop

sudo iotop
# Displays current disk I/O by process and shows which processes are using the most I/O.

4. Filtering I/O in iotop

sudo iotop -o
# Only shows processes or threads actually doing I/O, reducing clutter.

5. Using iftop

sudo iftop
# Monitors bandwidth usage on a network interface in real-time.

6. Displaying Traffic on a Specific Interface with iftop

sudo iftop -i eth0
# Replace 'eth0' with your specific network interface to monitor its traffic.

7. Using nmon

nmon
# Starts the nmon interface for comprehensive performance monitoring.

8. Recording Data with nmon

nmon -f -s 5 -c 60
# Records performance data every 5 seconds for 60 iterations and saves it to a file.

Real-World Scenarios

Scenario 1: Detecting High CPU Usage

You notice your server is running slowly. Using htop, you discover a particular process is consuming excessive CPU resources. You can then decide to optimize or terminate the process.

Scenario 2: Analyzing Disk Bottlenecks

Your application is experiencing delays during data writes. By running iotop, you identify a specific process that is causing high disk I/O, allowing you to address the issue promptly.

Scenario 3: Monitoring Network Traffic Spikes

During a marketing campaign, you observe increased network traffic. Using iftop, you can see which IP addresses are consuming the most bandwidth, helping you to manage your network resources effectively.

Best Practices

  1. Run Tools Periodically: Schedule monitoring tasks to run during off-peak hours to minimize resource consumption.
  2. Use Filters: When using tools like htop and iotop, apply filters to focus on specific processes of interest.
  3. Log Data: Utilize nmon to log performance data for later analysis, especially during troubleshooting sessions.
  4. Monitor in Real-Time: Use iftop during critical events to get immediate insights into network usage.
  5. Check Resource Limits: Regularly monitor system limits to ensure that applications do not exceed resource usage thresholds.

Common Errors

Error 1: Command not found

Cause: The tool is not installed on your system.

Fix: Install the missing tool using:

sudo apt install htop iotop iftop nmon

Error 2: Permission denied

Cause: Insufficient privileges to run the command.

Fix: Use sudo to run the command, e.g., sudo iotop.

Error 3: Unable to open /proc/<pid>/stat

Cause: The specified process does not exist or has exited.

Fix: Ensure the process is running or check the PID.

Error 4: No data available

Cause: The tool is not capturing any activity.

Fix: Ensure there is activity on the interface or disk being monitored.

Related Commands

Command Description
ps View current processes
vmstat Report virtual memory statistics
netstat Networking statistics
sar System Activity Reporter

Automation Script

Here is a simple automation script that installs the monitoring tools and sets up a basic logging mechanism for nmon.

#!/bin/bash
# Install essential monitoring tools

# Function to install monitoring tools
install_tools() {
    echo "Updating package list..."
    sudo apt update
    echo "Installing htop, iotop, iftop, and nmon..."
    sudo apt install -y htop iotop iftop nmon
}

# Function to start nmon logging
start_nmon_logging() {
    echo "Starting nmon logging..."
    nmon -f -s 5 -c 60
}

# Execute functions
install_tools
start_nmon_logging

echo "Monitoring tools installed and nmon logging started."

Conclusion

In this tutorial, you learned how to monitor CPU, memory, disk I/O, and network performance on Ubuntu using essential tools like htop, iotop, iftop, and nmon. These tools provide valuable insights that can help you maintain and optimize system performance. As a next step, consider creating automated monitoring scripts to regularly collect data and analyze trends over time.

References

By following this guide, you should now be well-equipped to monitor your Ubuntu systems effectively! 🚀