Technology

VPS Monitoring: htop, iotop, Netdata and Prometheus

When you run serious projects on a VPS, measurement is a useful basis for performance decisions. If a site feels slow, a queue falls behind, or a cron job runs forever, resource metrics—CPU, RAM, disk I/O and network—can help narrow down the cause, but application logs and traces may also be needed. The challenge is not whether the system is telling you something, but whether you are collecting and reading those signals correctly. Monitoring helps teams distinguish resource pressure from application problems and plan capacity before making upgrades.

In this guide, we will walk through a practical monitoring toolkit for Linux VPS servers: htop for quick CPU and RAM inspection, iotop for disk I/O, Netdata for real-time visual dashboards, and Prometheus for long-term metrics and alerts. We will focus on how to interpret what you see, how to choose workload-specific investigation thresholds, and how to turn raw numbers into concrete actions like optimizing code, tuning databases or resizing your VPS at dchost.com when it is truly needed.

Why VPS Resource Monitoring Matters

Every VPS has four fundamental resource pillars:

  • CPU: the compute capacity available to execute your applications.
  • RAM: how much working memory is available for processes, caches and buffers.
  • Disk I/O: how quickly the system can read and write data to storage.
  • Network: how fast and reliably data moves in and out of your server.

When one of these pillars is overloaded, everything built on top of it shakes. CPU saturation can lead to slow PHP responses or Node.js event loop delays. Memory pressure can trigger swapping when swap is configured, moving memory pages to swap storage; heavy swap I/O can make even simple tasks sluggish. Saturated disk I/O makes databases crawl, and a congested network turns quick API calls into multi-second waits.

We have covered symptoms such as websites that are slow only at certain hours due to CPU, I/O or MySQL bottlenecks. Insufficient visibility makes these issues harder to diagnose. Tracking CPU, RAM, I/O and network usage over time helps distinguish tuning opportunities from capacity limits and reduces reliance on trial-and-error upgrades.

Reading the Core VPS Metrics: CPU, RAM, IO and Network

Before diving into tools, align on what you want to observe. These metrics provide a starting point for monitoring a Linux VPS:

CPU Metrics

  • Per-core usage (%): Helps detect a single-threaded bottleneck (one core at 100% while others are idle).
  • Load average: On Linux, averages the number of runnable tasks and tasks in uninterruptible sleep, often waiting for I/O. Sustained load near or above your vCPU count (e.g., 4.0 on a 4 vCPU VPS) warrants investigation, but does not by itself prove CPU saturation; compare CPU utilization and I/O activity.
  • CPU steal time: Involuntary wait while the host/hypervisor does not run a vCPU. Investigate sustained changes alongside workload and latency; the metric alone does not identify a particular neighboring VPS or cause.
  • Effective capacity: Container CPU quotas and affinity can make the visible vCPU count an incomplete capacity measure.

Memory Metrics

  • Used, free and available RAM: Linux uses otherwise idle RAM as cache, so low free RAM alone is not a problem. Available memory is a more useful estimate of headroom for applications.
  • Cached/buffered memory: Data the kernel keeps in RAM to speed up disk operations.
  • Swap usage: Sustained swap-in/out activity alongside low available RAM and worsening latency can indicate memory pressure. Occupied swap alone does not prove that the VPS currently needs more RAM.
  • Pressure and OOM: If available, /proc/pressure/memory measures time stalled on memory. Correlate it with out-of-memory events and latency.

Disk I/O Metrics

  • Read/write throughput (MB/s): How much data is moving to and from disk.
  • IOPS: Number of read/write operations per second, key for databases and small random reads.
  • IOwait: CPU time accounted as idle while I/O is outstanding. High values can suggest I/O-related delays, but the CPU itself is not blocked and can run other work; correlate with storage latency and workload activity.
  • Device latency, queue and capacity: Compare read/write latency with workload and throughput; neither IOPS nor busy time alone proves saturation. Track filesystem space, inodes and growth rate separately. Linux iowait accounting has limitations and can even decrease in some conditions.

Network Metrics

  • Bandwidth (in/out MB/s): Traffic sent and received per interval.
  • Packets per second: A signal for investigating traffic changes alongside request patterns.
  • Connections and errors: State distributions and new error events help narrow down connection failures; these metrics alone do not classify an attack.

If these metrics sound abstract, do not worry. Tools like htop, iotop, Netdata and Prometheus expose them in ways that are much easier to understand than raw /proc files. Let us start from the quickest, most hands-on ones and work up to a full monitoring stack.

htop: Fast, Interactive View of CPU and RAM

htop provides an interactive starting point for inspecting what is happening on a VPS right now. Compared to the classic top command, htop offers colors, a scrollable process list, easy filtering and per-core graphs. It covers CPU, memory and swap in one compact view.

Installing htop

The following installation commands require root privileges and a configured package repository that provides htop:

  • Ubuntu 24.04 LTS:
    sudo apt update
    sudo apt install htop
  • AlmaLinux 9: Follow the distribution’s EPEL and CRB setup instructions first; htop is an EPEL package. Once the repositories are enabled:
    sudo dnf install htop

These commands target the named releases. For other Debian/Ubuntu or Rocky Linux releases, verify support and package repositories in the distribution’s own documentation.

Run it with:

htop

Reading the htop Interface

The top part of the screen shows system-wide metrics:

  • CPU bars per core, often color-coded for user, system, nice, IOwait, etc.
  • Memory and swap bars with total and used values.
  • Load average (1, 5, 15 minutes) and uptime.

The process table includes PID, user, CPU%, MEM%, time and command. F6 selects the sort field. F2 (Setup) changes meters and visible columns; F3 searches command lines, F4 filters them, and F5 toggles the process tree. The exact layout depends on configuration and version.

Using htop to Diagnose CPU Bottlenecks

Typical workflow when a VPS feels slow:

  1. Run htop and check the load average and CPU bars.
  2. If you see one or more cores pegged near 100%, sort processes by CPU%.
  3. Identify the resource-consuming process (PHP-FPM worker, Node.js, a background job, etc.).
  4. Check whether it is a legitimate workload (e.g., an image export task) or a runaway script or attack.
  5. If intervention is necessary, consider lowering the priority of noncritical CPU-heavy work. Before terminating a process, identify its role and use the application’s graceful shutdown procedure where possible; abrupt termination can interrupt requests or writes. Then implement a long-term fix.

For example, suppose a WooCommerce or Laravel background job issues a CPU-heavy SQL query to a database on the same VPS. One core might be maxed out while RAM usage remains normal, with the CPU consumption appearing under the database process or thread rather than the application worker. This is a clue, not proof of a particular query: correlate it with database query diagnostics before optimizing code or buying more CPU. Our article on MySQL/InnoDB tuning for WooCommerce dives deeper into this side.

Using htop to Understand Memory and Swap

Memory issues are more subtle. When RAM is tight, you might notice:

  • The swap bar in htop steadily increasing.
  • Processes with large RES (resident memory) footprints.
  • Overall system sluggishness, even though CPU usage looks moderate.
  • Remember that RES includes shared resident pages; summing process RES values can overcount physical memory use.

If swap usage rises throughout the day, check available RAM, swap-in/out rates and application latency before concluding that more RAM is needed. Swap can remain occupied after pressure subsides; a drop after restarting services or rebooting does not by itself establish a shortage. Sustained memory pressure can come from:

  • Too many PHP-FPM or worker processes in parallel.
  • Database buffer pools set too high.
  • Background tasks caching a lot of data in memory.

If sustained memory pressure is confirmed, tune service memory use or concurrency, or plan a RAM upgrade. Our guide on estimating CPU, RAM and bandwidth needs for new websites is a good complement when you decide whether optimization or scaling is the right next move.

Practical htop Thresholds

Every workload is different; use these rough investigation triggers alongside your workload’s baseline and latency:

  • Load average: if 5-minute load is consistently above vCPU count × 1.0, investigate CPU and I/O.
  • IOwait: sustained high IOwait warrants investigation of I/O latency and activity. Low CPU usage with a slow application is not enough to diagnose a disk bottleneck.
  • Swap: occupancy alone is not a pressure threshold. If the swap bar keeps growing, check swap-in/out rates and available RAM with additional system metrics, and correlate them with latency.

If the observations suggest I/O-related delays, inspect task activity with iotop and correlate it with device metrics.

iotop: Finding Processes with Heavy Disk I/O

While htop can suggest I/O-related delays, iotop can help identify processes with heavy I/O activity. This is crucial for diagnosing slow databases, overloaded log directories, or misconfigured backups.

Installing iotop

These examples use the C implementation, iotop-c. Older Python iotop packages differ; check iotop --version and iotop --help for the installed program. Package installation needs root/sudo privileges.

  • Ubuntu 24.04 LTS: Enable the Universe repository, which provides iotop-c, before running:
    sudo apt update
    sudo apt install iotop-c
  • AlmaLinux 9: Prepare EPEL and CRB using the distribution’s instructions first:
    sudo dnf install iotop-c

Then run:

sudo iotop

Availability depends on the kernel configuration and the permissions available inside the VPS. If iotop reports missing capabilities or accounting support, resolve those prerequisites before interpreting its output. Required kernel options include CONFIG_TASKSTATS, CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING and CONFIG_VM_EVENT_COUNTERS. Read the current setting with sysctl kernel.task_delayacct. If delay accounting is disabled, do not interpret the wait percentages as valid measurements. An administrator should decide whether to enable it, record the previous setting and measure overhead. Kernel documentation says tasks started after enabling it receive delay information; existing tasks do not gain historical accounting.

Key iotop Columns

When you start iotop, focus on these columns:

  • DISK READ / DISK WRITE: Per-task read/write bandwidth during the sampling period in normal mode. Caching and I/O reordering mean process totals can differ from current physical-device traffic.
  • IO%: Percentage of task time waiting on I/O; it is not device utilization or queue length.
  • SWAPIN%: Percentage of task time waiting for swap-in, not bytes read. Correlate it with available memory, active paging and latency before diagnosing RAM pressure.
  • COMMAND: Process name and arguments, useful for mapping activity to a service. Permissions and short-lived tasks can limit visibility.

For ten bounded samples in non-interactive mode:

sudo iotop -b -o -P -n 10 -d 1

-b selects batch mode, -o filters for I/O activity, -P shows process totals, -n 10 stops after ten iterations, and -d 1 sets a one-second interval. This example reports rates. The -oPa combination does not enable batch mode: -a means accumulated I/O, whose starting point depends on the implementation/version. Use the installed manual before collecting or comparing accumulated values.

Typical Disk Bottleneck Scenarios

Use iotop to investigate patterns such as:

  • Heavy database I/O: mysqld or postgres showing high read/write throughput or IO% during imports or expensive queries. High IO% indicates waiting, not necessarily heavy writes.
  • Log files exploding: web server or application logs doing constant writes, often combined with no rotation.
  • Heavy backup I/O: tar, rsync or backup agents transferring large volumes during peak hours; compare latency before calling it saturation.

When logs are the problem, use iotop to identify active writers and rotation to limit retained log volume. Our article on VPS disk usage and logrotate to prevent “No space left on device” errors covers disk-space management. Reducing excessive logging addresses the write rate; rotation alone does not. Check df -h for space and df -i for inodes; a filesystem can run out of inodes while bytes remain. Also inspect quotas, writeability and growth rate. No single fullness percentage guarantees a performance problem.

If backup I/O correlates with application latency, test off-peak scheduling or incremental backups and verify that restore objectives still hold. Measure the result; changing the schedule does not guarantee adequate storage capacity.

Netdata: Visual Resource Monitoring

Netdata is a lightweight monitoring agent with a built-in web dashboard. It provides high-resolution charts for CPU, memory, disk, network and supported applications. Collection intervals, available metrics and retention depend on configuration. For a single VPS or a small handful of servers, Netdata can provide an initial view of resource usage; the coverage you need depends on the workload and configured collectors.

Installing Netdata

The current official installer is https://get.netdata.cloud/kickstart.sh. Check the Linux installation guide and any existing installation first. Since installation may start the Agent, block public access to port 19999 before installing using host/provider firewall controls. Download into an empty directory you own and inspect the file; do not continue if the download fails:

curl -fL --proto '=https' --tlsv1.2 https://get.netdata.cloud/kickstart.sh -o netdata-kickstart.sh
less netdata-kickstart.sh

After reviewing the script and installation plan, select the stable channel:

sudo sh ./netdata-kickstart.sh --release-channel stable

The installer selects a suitable package path and enables automatic updates by default. Review update and telemetry options in the official guide. This example does not claim the node to a Cloud account or assume every VPS image is supported.

Before starting Netdata, restrict dashboard access using a firewall (for example UFW, nftables or security groups). After installation, confirm its listening address and port, commonly 19999. If using a reverse proxy with authentication, also block direct public access to the dashboard port so that clients cannot bypass authentication. For a standalone VPS, merge bind to = 127.0.0.1:19999 into the existing [web] section of netdata.conf, then restart the service in a controlled window. Do not duplicate the section. On your own computer run ssh -N -L 127.0.0.1:19999:127.0.0.1:19999 user@vps.example.com, replacing the account and host, then open http://127.0.0.1:19999. Confirm the actual listener and external access restriction. A VPN or authenticated TLS proxy is an alternative; Parent/Child streaming requires additional private-network access rules.

What You See in Netdata

With the required collectors, permissions and application credentials configured, the dashboard can expose:

  • System overview: CPU, load, RAM, swap at a glance.
  • Disk charts: per-disk read/write throughput, IOPS and latency information.
  • Network charts: inbound/outbound bandwidth, packets, errors.
  • Per-application charts: web servers, databases, caching layers, depending on what is installed.

Suppose a store slows down around 21:00. Compare CPU, storage and network charts with request latency at that time. Correlation narrows the search; it does not prove that a particular query or backup caused the slowdown. Match the interval with application logs, query diagnostics and scheduled jobs.

This complements the kind of step-by-step diagnosis we cover in our guide for websites that are slow only at certain hours due to CPU, IO and MySQL issues.

Netdata Alarms

Netdata supports configured alerts and notifications. Treat these as workload-specific investigation examples, not universal production limits:

  • Consider a warning when CPU > 80% for 5 minutes.
  • Investigate when swap usage exceeds 20%; choose critical conditions using sustained swapping, available memory and service impact rather than occupancy alone.
  • Investigate sustained device busy time alongside latency and queue metrics; monitor available filesystem space and inodes separately.

Netdata also supports many nodes through Parent/Child streaming and replication, plus local retention controlled by time and size. It is not limited to a few VPSs or short histories. Prometheus offers a different query and exporter ecosystem; choose based on collectors, queries, retention, access controls and operating effort. Running both is possible, but measure duplicate collection overhead. Verify any Netdata Cloud feature against the selected current plan.

Prometheus: Long-Term Metrics and Alerts for VPS Fleets

For more advanced monitoring, especially when you run multiple VPSs, application servers and databases, we recommend building a metrics stack around Prometheus. Prometheus is a time-series database and metrics scraper: it periodically fetches metrics from scrape targets over HTTP, including exporters and instrumented applications, and stores them with labels for flexible querying.

Key Components

  • Prometheus server: scrapes metrics from exporters, stores them and evaluates alert rules.
  • Node Exporter: a small agent on each VPS that exposes CPU, RAM, disk and network metrics.
  • Grafana: an optional but very popular dashboarding layer on top of Prometheus.
  • Alertmanager: routes and groups alerts from Prometheus and sends notifications when configured.

If you want a gentle introduction to the overall stack, our post on VPS monitoring and alerts with Prometheus, Grafana and Uptime Kuma walks through a full beginner-friendly setup. For a deeper, VPS-focused perspective, see a playbook for Prometheus, Grafana and Node Exporter.

Node Exporter Deployment Overview

The minimal Prometheus setup for VPS resource monitoring looks like this:

  1. Install a Prometheus server (on a dedicated monitoring VPS, for example).
  2. Install Node Exporter on each VPS.
  3. Configure Prometheus to scrape each Node Exporter endpoint.

On the monitored VPS, you would typically:

  • Download the Node Exporter binary from the official release page.
  • Create a systemd service to run it on boot.
  • Before starting it, restrict endpoint access to the Prometheus server, for example with firewall rules. If using an authenticated reverse proxy, prevent direct public access to the exporter.
  • Use the official release for the host architecture, verify its checksum, run it as a dedicated service user, and monitor the service itself. The default HTTP port is 9100; remote collection should use a private network or appropriately secured TLS/authentication.

Once running, Node Exporter exposes metrics like node_cpu_seconds_total, node_memory_MemAvailable_bytes, node_disk_io_time_seconds_total and node_network_receive_bytes_total. It exposes OS/hardware metrics, not application logs; individual collectors depend on the operating system and configuration.

Useful Prometheus Metrics for VPS Resources

Prometheus lets you query and combine metrics using PromQL. Some example queries (simplified to illustrate ideas):

  • Non-idle CPU time per VPS (percentage over 5 minutes, including iowait):
    100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
  • Available memory in MiB:
    (node_memory_MemAvailable_bytes) / 1024 / 1024
  • Disk I/O time percentage averaged across reported devices per VPS:
    avg by (instance) (rate(node_disk_io_time_seconds_total[5m])) * 100
  • Outbound network throughput summed across reported interfaces (MiB/s):
    sum by (instance) (rate(node_network_transmit_bytes_total[5m])) / 1024 / 1024

Grafana dashboards can help compare VPS resource usage, but these simplified queries need care: averaging across disks can hide one busy device, and summing interfaces can count the same traffic more than once through virtual networking. Inspect individual devices and select the relevant interfaces before drawing conclusions. For capacity planning over weeks or months, plan metrics retention and storage capacity rather than assuming the default setup retains all required history. The non-idle CPU expression also includes steal and should not be labeled pure application CPU work. With neither a time nor size retention flag set, Prometheus defaults to 15 days; a 30-day or longer dashboard needs an appropriate retention/storage plan.

Prometheus Alerts

One of Prometheus’s strengths is alerting. Possible starting conditions are listed below; tune them to the workload and baseline. Disk busy time alone does not establish saturation, and a fixed available-memory threshold has different significance on different VPS sizes.

  • Non-idle CPU time > 85% on average for 10 minutes; split CPU modes before diagnosing the cause.
  • Available memory < 500 MiB for 5 minutes.
  • Disk I/O time > 50% for 10 minutes.
  • New network errors occurring repeatedly over a 2-minute window, rather than a cumulative error count merely remaining above zero.
  • Filesystem available space below a chosen ratio, as in the complete rule example below; inode and read-only conditions require separate alerts.

With Prometheus forwarding and Alertmanager notification routes configured, these alerts can reach channels like email, Slack, or other tools. The key is to pick thresholds that reflect business impact. A short CPU burst may be fine, while 20 minutes of high iowait during checkout hours warrants investigation alongside checkout latency and errors.

The following rule file warns when available space stays below 15% for 15 minutes on writable filesystems of the selected types. Adapt job="node" and the filesystem allowlist to your targets. Available space is not identical to the complement of ordinary used space when blocks are reserved.

groups:
  - name: vps-resources
    rules:
      - alert: NodeFilesystemLowAvailable
        expr: |
          (
            node_filesystem_avail_bytes{job="node",fstype=~"ext4|xfs|btrfs",mountpoint!=""}
            / node_filesystem_size_bytes{job="node",fstype=~"ext4|xfs|btrfs",mountpoint!=""}
          ) < 0.15
          and on (job, instance, device, mountpoint, fstype)
            node_filesystem_readonly{job="node"} == 0
          and on (job, instance, device, mountpoint, fstype)
            node_filesystem_size_bytes{job="node"} > 0
        for: 15m
        labels:
          severity: warning
        annotations:
          summary: 'Available filesystem space below 15% on {{ $labels.instance }} {{ $labels.mountpoint }}'
      - alert: NodeScrapeFailed
        expr: up{job="node"} == 0
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: 'Node scrape failed for {{ $labels.instance }}'

Save as vps-alerts.yml, run promtool check rules vps-alerts.yml, add it to the main configuration’s rule_files, and validate the combined configuration before controlled reload. Test pending, firing, recovery and notification delivery. up == 0 detects failed scrapes; a target removed from discovery or a missing filesystem series needs a separate absence/inventory check.

For production workloads, pairing Prometheus metrics with a good backup and disaster recovery strategy is equally important. Our article on designing a backup strategy with clear RPO/RTO goals explains how to connect monitoring with realistic recovery objectives.

Designing a Practical Monitoring Workflow

A repeatable workflow makes monitoring useful across VPS, dedicated and colocation deployments. Assign ownership for each alert and record the next diagnostic step.

1. Establish a Baseline

After deployment, establish a baseline under representative load:

  • Run approved, bounded benchmarks in staging or a maintenance window; avoid adding heavy load during a production incident. Our new VPS checklist with CPU, disk and network benchmarks shows this process step-by-step.
  • Deploy Node Exporter and hook it into a Prometheus/Grafana stack.
  • Install htop and iotop for on-the-spot debugging.

This gives you a baseline: how much CPU and RAM the app uses on a quiet day, typical disk I/O levels, and normal network traffic patterns.

2. Use htop and iotop for Live Firefighting

When users report slowness or you see an alert, SSH into the VPS and start with:

  • htop to check CPU, RAM, load average and swap.
  • iotop to identify I/O-active tasks, then compare device latency and application impact.

Use those observations to investigate possibilities such as:

  • A spike in application processes (e.g., too many PHP-FPM workers).
  • A single heavy background job.
  • A database workload or backup saturating disk.

3. Use Netdata for Visual Correlation

Once immediate fire is under control, open Netdata to see the last hours visually. Correlate CPU, disk and network charts around the incident time. Look for repeated patterns: does the same spike happen every day at the same time? Check scheduled jobs, search index rebuilds and third-party sync tasks against the same timestamps; a repeated spike alone does not establish the cause.

4. Use Prometheus for History and Capacity Planning

With suitable retention, historical metrics can inform decisions such as:

  • Optimize configuration/code: e.g., if CPU spikes map clearly to a single API endpoint.
  • Re-architect: e.g., move database to its own VPS when CPU or I/O on a single node becomes the limiting factor.
  • Resize the VPS: when metrics show that even an optimized stack runs close to limits.

We always recommend starting with measurement and optimization before scaling blindly. Our guide on cutting hosting costs by right-sizing VPS, bandwidth and storage explains how to align metrics with budgets.

5. Keep the Setup Lightweight but Reliable

Monitoring itself consumes CPU, memory, disk and network. Measure that overhead on the actual VPS; it depends on process count, collectors, metric cardinality, sampling intervals and retained history. For smaller VPSs:

  • Disable collectors you do not need in Netdata.
  • Adjust scrape intervals in Prometheus (e.g., every 15s or 30s instead of every 1s).
  • Rotate and compress logs to avoid filling disks.
  • Protect metrics and logs, limit retention, and test alert delivery and missing-data handling.

Compare monitoring overhead with and without optional collectors before choosing a configuration. For network diagnosis, use per-interface counter rates such as rate(node_network_receive_bytes_total{job="node",device!="lo"}[5m]); select interfaces appropriate to the actual route to avoid double counting. node_netstat_Tcp_CurrEstab counts ESTABLISHED and CLOSE_WAIT connections, not every socket. ss -s provides a summary; ss -ant | head -n 20 is only a sample of the TCP table.

TIME_WAIT is a normal TCP closing state. High counts alone do not justify tuning: net.core.somaxconn caps listen backlog, while net.ipv4.ip_local_port_range controls local port selection. Diagnose connect/accept failures and test any change in staging with rollback. Network metrics alone cannot distinguish a DDoS attack from organic traffic; correlate request patterns, logs and security events.

Where dchost.com Fits Into Your Monitoring Strategy

For a DCHost VPS, dedicated server or colocation deployment, verify OS support, access privileges, resource limits and managed-service responsibilities in the actual offer. Monitoring software still needs appropriate installation, access controls and ongoing maintenance.

Use measured pressure, latency and growth to decide whether to optimize, resize or separate a database workload. For a support request, prepare the affected service, timestamps, graphs and sanitized error examples; confirm what advisory work the service agreement includes.

Choose the components that meet your needs: htop and iotop for immediate process inspection, Netdata or Prometheus for configured history and alerts, and application diagnostics for causes that host metrics cannot explain. You do not need every tool on every VPS. Test the monitoring path and use before-and-after measurements to guide each change.

Primary Sources

Frequently Asked Questions

Verify OS support, repositories and privileges first. htop helps inspect current CPU and memory use; iotop-c needs kernel accounting support to inspect task I/O and wait time. Add Netdata or Prometheus when you need history and alerts. You do not need every tool on every VPS. Track application latency alongside resource pressure, protect monitoring endpoints and test alert delivery. A live process snapshot alone may not explain an earlier incident.

Look for sustained pressure that affects response time or throughput. Linux load average includes runnable tasks and uninterruptible waits, so load equal to the vCPU count does not by itself prove CPU saturation. Compare per-core modes, steal, I/O latency and application diagnostics; consider CPU quotas or affinity. Short bursts can be normal. Profile the implicated work before deciding whether configuration changes or additional capacity are appropriate.

Both consume resources; the amount depends on collectors, process count, metric cardinality, scrape intervals and history. Measure overhead on the actual VPS, disable unneeded collectors and size retention deliberately. Netdata can support multiple nodes and longer history through streaming and storage configuration; Prometheus also needs explicit storage planning for long histories. Protect endpoints before starting services. Neither product guarantees negligible overhead or complete application coverage with default settings.

Collect continuously at intervals that match the incident duration you need to detect and the monitoring budget. Use tested alerts for actionable conditions, then review trends on a schedule appropriate to the service. During incidents or releases, compare resource changes with latency and errors. Check failed scrapes, missing targets or series, available space and alert delivery as well as threshold breaches. The guide’s thresholds are examples to adapt, not universal limits.

Upgrade or separate workloads when representative demand causes sustained pressure and service impact after relevant configuration and application work has been evaluated. A high RAM percentage, occupied swap, busy disk or load average alone is insufficient. Consider available memory, active paging, CPU scheduling, storage latency, network errors and growth. Use a controlled before-and-after comparison, account for monitoring retention and overhead, and verify the provider’s resource limits and managed-service scope before changing the plan.
↑