Monitoring server resources helps you maintain performance and prevent issues. In this guide, we cover essential monitoring tools and techniques for your VPS.

Why Monitor Your Server?

Monitoring is essential for several reasons. First, it helps you identify performance bottlenecks before they become critical problems. Second, you can catch issues early and prevent downtime. Third, monitoring data helps you plan for capacity and growth. Finally, when problems do occur, historical data makes troubleshooting much easier.

Essential Metrics to Track

CPU Usage

Understanding CPU metrics is crucial for server health. Monitor overall utilization percentage, per-core usage for multi-core systems, load average which shows demand over time, and I/O wait time which indicates disk bottlenecks.

Memory Usage

Memory monitoring helps prevent out-of-memory situations. Track total used versus available memory, swap usage which indicates memory pressure, buffer and cache usage, and watch for OOM (Out of Memory) events in logs.

Disk Metrics

Disk monitoring prevents space issues and identifies I/O problems. Monitor disk space usage percentage, read and write operations per second, I/O latency and throughput, and inode usage which can fill up before space does.

Network Statistics

Network monitoring helps identify bandwidth issues and security problems. Track incoming and outgoing bandwidth, number of connections, network errors and dropped packets, and latency to important services.

Command Line Monitoring Tools

The top Command

The top command provides real-time process monitoring. Simply run top in your terminal to see CPU usage per process, memory consumption per process, system load average, and uptime information. Press q to exit the display.

Using htop

htop is an enhanced version of top with better visualization. Install it with apt install htop on Debian/Ubuntu systems. Features include color-coded display for easier reading, mouse support for navigation, easy process management, and tree view showing parent-child relationships.

Memory Information with free

The free command shows memory usage. Use free -h for human-readable output showing total system memory, currently used and free memory, buffer and cache usage, and swap partition usage.

Disk Space with df

Check disk space using df -h to see usage for all mounted filesystems. This shows each partition, its size, used space, available space, and mount point.

Directory Sizes with du

Find large directories using du -sh followed by the path. For example, du -sh /var/log/* shows the size of each item in the log directory, helping identify space hogs.

Virtual Memory Statistics

The vmstat command provides virtual memory statistics. Run vmstat 1 to see updates every second, showing memory, swap, I/O, system, and CPU statistics.

I/O Statistics

Install sysstat package to use iostat for I/O monitoring. Run iostat -x 1 to see detailed disk statistics including read and write rates, queue length, and utilization percentage.

Network Connections

Use ss -tuln to see listening ports and established connections. This replaces the older netstat command and shows TCP and UDP connections with their states.

Log File Monitoring

System Logs

Monitor system logs with tail -f /var/log/syslog on Debian/Ubuntu systems. This shows real-time system messages including service starts and stops, errors, and warnings.

Authentication Logs

Security monitoring should include authentication logs. Use tail -f /var/log/auth.log to see login attempts, sudo usage, and other authentication events.

Web Server Logs

For Nginx, monitor /var/log/nginx/error.log for errors and access.log for requests. Apache uses similar paths under /var/log/apache2/.

Monitoring Solutions

Netdata

Netdata provides beautiful real-time monitoring dashboards with no configuration required. Installation is simple and it uses minimal resources while providing comprehensive metrics and alerting capabilities.

Prometheus and Grafana

For advanced monitoring, Prometheus collects metrics while Grafana provides customizable dashboards. This combination offers powerful alerting, historical data analysis, and supports custom metrics.

Munin

Munin is a simple monitoring solution that generates graphs over time. Install with apt install munin munin-node. It provides historical trends and simple configuration.

Setting Up Alerts

Configure alerts to be notified of problems. Set up email notifications for critical events, use monitoring services like UptimeRobot for external monitoring, and create scripts that check conditions and send alerts when thresholds are exceeded.

Best Practices

Establish baseline measurements during normal operation so you can identify anomalies. Schedule regular monitoring reviews: daily quick health checks, weekly detailed reviews, and monthly capacity planning sessions. Document normal performance values and keep incident history for reference.

Need Help?

We are here for you! If you run into any issues or have questions, our support team is happy to help you personally. Send us a message through the ticket system - we usually respond within a few hours and are happy to assist you.