Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>Server Health MonitorNew to Visual Studio Code? Get it now.
Server Health Monitor

Server Health Monitor

Preview

Server Healthcare

|
1 install
| (0) | Free
Add a Linux server by IP and watch CPU, memory, storage, network and processes live over SSH, with an interactive dashboard. Built to put almost no load on your servers.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Server Health Monitor

Add a Linux server by its IP address and watch its health live inside VS Code: CPU, memory, storage, network and processes, on an interactive dashboard you can click through.

Nothing to install on your server. The extension logs in over SSH and reads the system's own statistics. It is built to put almost no load on the servers it watches (see Light on your servers below).

Preview: services, logs, a remote terminal and an AI assistant are coming next.

Requirements

  • A Linux server you can reach over SSH, with an SSH key or a password. Ubuntu, Debian, RHEL, Alpine and others work.
  • No agent, no open ports and no root access needed. Any user that can log in over SSH works. Folder sizes show only folders that user can read.

Use it

  1. Open the Server Health icon in the activity bar, then click + Add Server.
  2. Enter the IP, a display name, the SSH port, the username, and either an SSH key file or a password.
  3. On the first connection you're shown the server's host key fingerprint. Click Trust to save it. If the key ever changes later, the extension refuses to connect, which protects against man-in-the-middle attacks.
  4. Click a server in the sidebar to open the dashboard.

Dashboard

  • All servers: one card per server with CPU, memory and disk rings and a CPU sparkline. Click a card to open that server.
  • Overview: KPI cards (each opens its tab), CPU and memory history, network, disk I/O, filesystems.
  • CPU: history, where CPU time goes (user/system/I/O wait/steal, with plain-language warnings), per-core heat grid, load vs capacity, top processes.
  • Memory: breakdown donut (apps, buffers, cache, free), swap, history, top processes by memory.
  • Storage: filesystems table. Click a mount to see folder sizes, then keep clicking folders to drill down. Includes disk read/write throughput.
  • Network: per-interface table. Click an interface to chart only that one.
  • Processes: sortable and searchable.
  • Time range picker (5m / 15m / 30m). Colors follow your VS Code theme.

Light on your servers

The extension is built so the servers it watches don't notice it.

  • No new process per check. It logs in once and keeps one shell open. With bash, which almost every Linux server has, each check reads /proc using bash's built-in commands, so nothing is started. BusyBox servers use a single tail instead.
  • It only fetches what's on screen.
    • Disk space: once a minute.
    • Server facts (OS, CPU model…): once per login.
    • Process list: only while the CPU, Memory or Processes tab is open, at most every 15 s.
  • It checks less often when nobody is looking.
    • Dashboard open on that server: every 5 s.
    • Sidebar or all-servers view only: every 30 s.
    • VS Code in the background: every 2 min.
    • Unreachable server: waits longer between tries (10 s → 5 min).
  • Protect mode. If the server looks stressed, the extension slows to ≥ 30 s, pauses the process list and folder scans, and shows a banner. Stressed means load ≥ 1.5× its cores, less than 5% memory available, or more than 30% I/O wait. Normal checks resume by themselves once the server calms down.
  • Lowest priority for everything. At login, the shell and its own SSH session switch to the lowest CPU priority (nice 19) and idle disk priority, so under load our work always waits for your applications. Heavier commands also run inside a server-side timeout.
  • No login storms. A wrong password or SSH key is tried once, then the extension waits for you to press Retry or Edit. Repeated failed logins would get your IP banned by tools like fail2ban.
  • Only the data it uses. Unused parts of /proc/stat and /proc/meminfo are cut on the server before sending.
  • Folder scans are guarded.
    • A whole-disk scan asks first.
    • Only one scan runs at a time.
    • Leaving the page or pressing Stop kills it on the server (closing SSH alone wouldn't).
    • It stops by itself after 2 minutes.
    • Results are kept for 10 minutes.
  • The cost is shown. Every server page ends with a line like "Live · checking every 5 s · ≈ 1.1 ms server CPU per check". It's measured on the server and includes the SSH daemon's share.

Measured on Ubuntu 24.04 (16 cores), with the dashboard open:

Quiet server Busy server (2,000 processes)
New processes per check 0 0
CPU per check, SSH included ≈ 1.0 ms ≈ 1.1 ms
Average load at one check per 5 s ≈ 0.02% of one core ≈ 0.02% of one core

Full audit with the dashboard open (60 s, one check every 5 s):

  • CPU 30 ms per minute (0.05% of one core), running at the lowest priority
  • network 54 KB per minute (about 7 kbit/s)
  • memory 3.6 MB for the shell plus about 10 MB for the SSH session (the same as any SSH login), with no growth after 1,000 checks
  • no disk reads or writes
  • 2 processes in total

For comparison, the first version cost 14–73 ms and started 17 processes per check.

Settings

Setting Default
shm.refreshInterval 5 Seconds between checks while a server's dashboard is on screen
shm.overviewInterval 30 Seconds between checks when only the sidebar or all-servers view is visible
shm.backgroundInterval 120 Seconds between checks when VS Code is in the background
shm.connectTimeout 10 Seconds before a server is marked offline

Privacy and security

The server list is stored in VS Code's extension storage. Passwords and key passphrases are stored in VS Code SecretStorage (the Windows Credential Manager / macOS Keychain), never in settings or plain files. Removing a server deletes its secret and its trusted host key.

The extension talks only to the servers you add. It has no telemetry and sends nothing anywhere else. It only reads statistics: it never changes anything on your servers.

Build it yourself

npm install
npm run build        # bundle extension + dashboard into dist/
npm run watch        # rebuild on save
npm run typecheck
npm test             # collector unit tests, incl. a shell syntax check of every command (node --test)
npm run package      # produce server-health-monitor-x.y.z.vsix

Press F5 in VS Code (with this folder open) to launch an Extension Development Host.

Install the packaged build: Extensions → … → Install from VSIX…, or code --install-extension server-health-monitor-0.1.0.vsix.

Layout

src/
  extension.ts               commands, wiring
  store/ServerStore.ts       server list + SecretStorage + trusted host keys
  ssh/SshManager.ts          pooled ssh2 connections, host key check, exec channels
  ssh/RemoteShell.ts         the one persistent shell per server (commands + end markers)
  metrics/collect.ts         tiered commands + pure parsers, protect-mode rules (unit tested)
  metrics/MetricsService.ts  adaptive scheduling, tiers, protect mode, cost tracking, history
  metrics/DuService.ts       guarded folder scans: cache, single-flight, kill on the server
  tree/ServerTreeProvider.ts sidebar
  webview/DashboardPanel.ts  webview host, du requests
  shared/                    types + formatters used by both sides
webview-ui/src/              React dashboard (Chart.js)
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft