Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Install Prometheus by downloading the release archive that matches your VPS architecture, placing its YAML configuration beside the binary, and running it on port 9090. Add the Prometheus Node Exporter on port 9100 for Linux host metrics, then verify both endpoints in the Prometheus UI and the Targets page. The procedure below covers a single VPS, a hardened systemd service, secure access, troubleshooting, and expansion to multiple servers.

What you are building

Prometheus is a monitoring server that periodically scrapes HTTP metrics endpoints and stores the results as time series. The server is distributed as a downloadable release archive rather than a conventional graphical installer. Its behavior is defined in a YAML file, normally named prometheus.yml.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A minimal VPS deployment has two processes:

  • Prometheus: the database, query engine, and web interface, normally listening on TCP port 9090.
  • Node Exporter: a single static binary that exposes Linux host metrics, normally on TCP port 9100.

Prometheus can monitor itself, but it does not automatically know about the operating system. Node Exporter supplies measurements such as node_cpu_seconds_total and node_filesystem_avail_bytes.

Choose the layout before installing

Item Recommended single-VPS choice Why it matters
Prometheus listener 9090 Used by the web UI, query API, and Prometheus’s own metrics endpoint.
Node Exporter listener 9100 Scraped by Prometheus for operating-system metrics.
Scrape interval 15s The official examples use a 15-second interval, balancing freshness and storage activity for a small installation.
Target discovery static_configs Simple and clear when the list of VPS instances changes rarely.
Process supervision systemd Starts services at boot, restarts failed processes, and centralizes logs.
Exposure Local binding or a protected reverse proxy Monitoring and configuration interfaces should not be openly reachable from the public internet.

Prerequisites

  • A Linux VPS on an architecture supported by the release you intend to download.
  • Shell access with permission to install files, create a service account, and bind the required ports.
  • A way to reach the VPS privately, such as an SSH tunnel, private network, or an access-controlled reverse proxy.
  • Enough disk space for the time-series database. Retention and storage sizing depend on scrape interval, metric volume, and retention flags; do not assume a fixed disk requirement.

Find the architecture with:

uname -m

Use the official Prometheus downloads page to select a release archive matching that value. The archive and Node Exporter binary must match the VPS architecture; installing the wrong build commonly results in an “exec format error.”

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.

Install Prometheus from the release archive

1. Download and extract the matching release

The official installation workflow is to download the current archive, extract it, and enter the extracted directory. Copy the download address shown for your architecture from the official downloads page, then run:

cd /tmp
export PROM_URL='PASTE_THE_ARCHIVE_URL_FROM_THE_OFFICIAL_DOWNLOADS_PAGE'
curl -fL -o prometheus.tar.gz "$PROM_URL"
tar -xzf prometheus.tar.gz
cd prometheus-*

The URL is intentionally supplied by you from the current release page rather than embedded here, because release filenames and versions change. Inspect the extracted directory before moving anything:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
ls -la
./prometheus --version

The version command should print a Prometheus build for the architecture reported by uname -m.

2. Create a dedicated account and directories

Running a network-facing daemon as an unprivileged account limits the damage a process compromise can cause. On distributions that provide the standard account-management commands, create a system user and separate configuration and data directories:

sudo useradd --system --no-create-home --shell /usr/sbin/nologin prometheus
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo chown prometheus:prometheus /etc/prometheus /var/lib/prometheus

Copy the binaries from the extracted directory. The archive may also contain console assets and example files; copy those when present so the web interface can render its standard pages:

sudo cp prometheus promtool /usr/local/bin/
sudo cp -r consoles console_libraries /etc/prometheus/ 2>/dev/null || true
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool
sudo chown -R prometheus:prometheus /etc/prometheus

If your distribution uses a different convention for service users or paths, keep the same principle: the binary, configuration, and data directory should have explicit ownership and the daemon should not run as root.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create the first prometheus.yml

Create /etc/prometheus/prometheus.yml with this minimal configuration:

Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ["localhost:9090"]

global.scrape_interval sets the default polling frequency. A job under scrape_configs defines what to scrape. The static_configs list contains host-and-port targets; localhost:9090 tells Prometheus to collect its own metrics.

Validate the file before starting the service:

sudo -u prometheus promtool check config /etc/prometheus/prometheus.yml

A successful check reports that the configuration is valid. Fix indentation, quoting, and spelling errors before proceeding; YAML indentation is significant.

Start Prometheus

Quick manual start

For a first smoke test, start the binary from its installation directory:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
./prometheus --config.file=prometheus.yml

Prometheus writes its time-series database to its data path unless you change that path with startup flags. A manual process is useful for testing, but it will stop when the shell closes and will not automatically restart after a reboot.

Persistent systemd service

For a VPS, systemd is the practical default. Create /etc/systemd/system/prometheus.service:

[Unit]
Description=Prometheus monitoring server
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus 
  --config.file=/etc/prometheus/prometheus.yml 
  --storage.tsdb.path=/var/lib/prometheus
Restart=on-failure

[Install]
WantedBy=multi-user.target

Load the unit, enable it at boot, and start it:

sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
sudo systemctl status prometheus --no-pager

Read recent startup errors with:

sudo journalctl -u prometheus -n 100 --no-pager

Do not expose a service until it starts cleanly and the configuration has passed promtool.

Install Node Exporter for Linux host metrics

The Prometheus Authors describe Node Exporter as “a single static binary that you can install via tarball.” Download the Node Exporter release matching the VPS architecture from the official downloads page, extract it, and check the binary:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black | LED mouse pad with 14 lighting modes, covers keyboard & mouse, anti-slip rubber base, waterproof surface, USB powered
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
cd /tmp
export NODE_URL='PASTE_THE_NODE_EXPORTER_ARCHIVE_URL_FROM_THE_OFFICIAL_DOWNLOADS_PAGE'
curl -fL -o node_exporter.tar.gz "$NODE_URL"
tar -xzf node_exporter.tar.gz
cd node_exporter-*
./node_exporter --version

Install it as an unprivileged service:

sudo useradd --system --no-create-home --shell /usr/sbin/nologin node_exporter
sudo cp node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Create /etc/systemd/system/node_exporter.service:

[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target

Start it and confirm that it listens on port 9100:

sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
sudo systemctl status node_exporter --no-pager
curl http://localhost:9100/metrics

The final command should return plain-text metric samples, including names such as node_cpu_seconds_total and node_filesystem_avail_bytes. If it fails, inspect sudo journalctl -u node_exporter -n 100 --no-pager and check that another process is not already using port 9100.

Tell Prometheus to scrape Node Exporter

Add a second job to the existing scrape_configs section. Preserve the YAML indentation:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: node
    static_configs:
      - targets: ["localhost:9100"]

Validate the edited file:

sudo -u prometheus promtool check config /etc/prometheus/prometheus.yml

Apply the change by restarting Prometheus:

sudo systemctl restart prometheus
sudo systemctl status prometheus --no-pager

Prometheus also supports its documented configuration-reload mechanism where appropriate. A restart is easier to reason about on a small VPS; use reload only after you have implemented and secured the mechanism you choose.

Verify every layer

Check Prometheus’s own endpoint

curl http://localhost:9090/metrics

This confirms that the Prometheus HTTP server is responding. It does not prove that every configured target is healthy.

Use the web interface

From a trusted network path, open http://<vps-address>:9090. The expression browser should load. Enter up and execute the query. A value of 1 means the corresponding scrape succeeded; a value of 0 indicates a failed scrape.

Open http://localhost:9090/targets locally, or use the Status → Target health page in the UI. You should see both the prometheus and node jobs with state UP. Select a target to read its last scrape time and any error returned by the endpoint.

Run these additional queries to verify host data:

  • node_cpu_seconds_total — cumulative CPU time by mode and CPU.
  • node_filesystem_avail_bytes — available filesystem space.

If the Node Exporter endpoint responds to curl but the target is down, the problem is in the Prometheus configuration, process permissions, or the address Prometheus is using rather than in the exporter’s HTTP endpoint.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.

Secure a public VPS

Prometheus’s web interface accepts queries and exposes operational information. Its security guidance assumes that only trusted users can change command-line arguments, configuration files, and rule files. Treat both ports as administrative interfaces.

  • Prefer private access: bind services to a private interface or loopback where possible, and reach the UI through an SSH tunnel or private network.
  • Do not publish Node Exporter: port 9100 normally needs to be reachable only by Prometheus. Block it at the VPS firewall and any cloud firewall for all other sources.
  • Protect Prometheus access: if remote users need the UI, put it behind an access-controlled reverse proxy and TLS. Restrict source addresses and require authentication at the proxy.
  • Protect files: keep prometheus.yml, rule files, service units, and the TSDB directory writable only by administrators and the service account where necessary.
  • Limit outbound and inbound paths: allow the Prometheus process to reach only the exporters it must scrape, and avoid broad “allow from anywhere” firewall rules.
  • Update promptly: the Prometheus security guidance targets fixes within seven days for Prometheus and listed exporters. Establish an update process, test the new archive, and restart services during a controlled window.

Changing the listen address or adding a proxy does not replace authentication and network restrictions. Verify the resulting exposure from outside the VPS rather than assuming a firewall rule worked.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot a target marked DOWN

1. Confirm the exporter process

sudo systemctl status node_exporter --no-pager
sudo journalctl -u node_exporter -n 100 --no-pager

Restart only after reading the error. A missing binary, permission problem, or invalid flag should be corrected rather than repeatedly restarted.

2. Test the exact endpoint locally

curl -v http://localhost:9100/metrics

An HTTP response with metric text proves the listener is active on loopback. If the exporter is bound to another address, replace localhost with that address and use the same address in prometheus.yml.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Check the target address and port

The target must include the correct host and port, such as localhost:9100. A typo, an unreachable private address, or a service moved to a different port produces a failed scrape.

4. Check firewall and bind-address rules

For a remote exporter, verify that the VPS firewall, cloud firewall, security group, and exporter bind address all permit Prometheus’s source address. For a local exporter, avoid opening port 9100 publicly just to make a scrape work; correct the local target instead.

5. Revalidate and reload Prometheus

sudo -u prometheus promtool check config /etc/prometheus/prometheus.yml
sudo systemctl restart prometheus
sudo journalctl -u prometheus -n 100 --no-pager

Return to the Targets page after the next scrape interval. A configuration can be syntactically valid while still pointing at an unavailable endpoint, so the page’s reported error remains the deciding diagnostic.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.

Monitor several VPS instances

A single Prometheus server can scrape exporters on multiple VPS instances. Add each exporter address to the static_configs target list for a small, stable fleet:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  - job_name: node
    static_configs:
      - targets:
          - "vps-a-private-address:9100"
          - "vps-b-private-address:9100"

Keep port 9100 reachable only from the centralized Prometheus server, preferably over a private network. Use meaningful labels when you need to distinguish machines in queries; labels should describe stable properties such as environment or region rather than changing hostnames.

Use file-based service discovery for a changing fleet

Editing the main YAML file for every server becomes error-prone as instances are created and removed. Prometheus’s file_sd_configs feature watches a targets file and automatically updates the scrape list when that file changes.

A basic configuration is:

scrape_configs:
  - job_name: node
    file_sd_configs:
      - files:
          - /etc/prometheus/targets/*.json

Create a JSON file such as /etc/prometheus/targets/production.json:

[
  {
    "targets": ["vps-a-private-address:9100"],
    "labels": {
      "environment": "production"
    }
  },
  {
    "targets": ["vps-b-private-address:9100"],
    "labels": {
      "environment": "production"
    }
  }
]

Give the Prometheus service account read access to the directory and files. When the file changes, Prometheus watches it and updates the target list without requiring a rewrite of the main configuration. Generate the file atomically—write a temporary file and rename it—so Prometheus never reads a half-written JSON document. Validate the main YAML after changing it, then inspect the Targets page to confirm discovery.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Deployment choices and trade-offs

Decision Option A Option B Choose A when
Software source Distribution package Upstream release tarball You value repository-integrated updates and accept that the packaged version may lag.
Process management Manual foreground process systemd service You are testing a configuration and do not yet need boot startup or restart handling.
Target list static_configs file_sd_configs The fleet is small and changes infrequently.
UI access Local-only binding Protected reverse proxy Only an administrator on the VPS needs the interface.
Topology One Prometheus per VPS Central Prometheus server You need independent monitoring and can tolerate separate dashboards and storage.

The upstream tarball workflow described in this guide makes the release version explicit and works consistently across distributions. A package may simplify lifecycle management, but its exact version, paths, unit name, and update cadence depend on your Linux distribution and are therefore not interchangeable with the commands above.

Updating without losing your data

  1. Check the current Prometheus and Node Exporter versions with their respective --version commands.
  2. Read the release notes and security guidance for the new release, especially when applying a security fix.
  3. Download archives that match the VPS architecture and verify that each binary starts before replacing the active copy.
  4. Back up /etc/prometheus/prometheus.yml, discovery files, rule files, and the TSDB directory or your chosen snapshot mechanism.
  5. Stop or restart one service at a time, replace the binary, run promtool check config, and start the service.
  6. Check service logs, the /metrics endpoints, and the Targets page before declaring the update complete.

Keep the data directory when replacing the binary. Deleting it removes the locally stored time series and is not a normal upgrade step.

Completion checklist

  • uname -m matches the architecture of both downloaded archives.
  • Prometheus starts with --config.file=/etc/prometheus/prometheus.yml and stores data in its configured path.
  • Node Exporter is running on port 9100 and curl http://localhost:9100/metrics returns samples.
  • The prometheus and node jobs appear as UP under Status → Target health.
  • The expression browser returns values for up, node_cpu_seconds_total, and node_filesystem_avail_bytes.
  • Port 9100 is restricted to Prometheus, and port 9090 is private or protected by a properly configured access layer.
  • Configuration files pass promtool check config after every edit.
  • You have a documented update and backup procedure, with security fixes targeted within seven days as recommended by the Prometheus security guidance.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.