{"id":608,"date":"2026-07-19T09:42:40","date_gmt":"2026-07-19T09:42:40","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=608"},"modified":"2026-10-08T22:02:21","modified_gmt":"2026-10-08T22:02:21","slug":"vps-monitoring-netdata-realtime-dashboard","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/","title":{"rendered":"Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access"},"content":{"rendered":"<div style=\"padding:20px\">\n<p class=\"wp-block-paragraph\">Netdata collects each metric once per second and stores the result compressed into a database, so the footprint stays small enough for a 1&nbsp;GB VPS while still capturing spikes that one-minute polling averages away. That sub-second granularity is the reason it belongs on a small box, but it is also why careless configuration fills disk or exposes a full system-inspection API to the internet. This guide installs Netdata with persistent <code>dbengine<\/code> storage, calculates an honest retention window for the disk you have, enables tiering and a few high-signal alarms, and locks the dashboard down.<\/p>\n<p class=\"wp-block-paragraph\">Run everything below as root or with <code>sudo<\/code>. If you are still choosing the machine for this, sizes and providers vary more than the marketing implies &mdash; <a href=\"https:\/\/virtualserversvps.com\/\">compare VPS plans<\/a> before you commit, because Netdata&rsquo;s overhead is trivial but retention depends on disk you must actually pay for. A box you will monitor should also be one you can benchmark first; the same <a href=\"https:\/\/virtualserversvps.com\/\">provider comparison<\/a> lists the disk and steal figures that decide whether monitoring will show a healthy host or a noisy neighbour.<\/p>\n<h2 class=\"wp-block-heading\">Install From the Official Repository<\/h2>\n<p class=\"wp-block-paragraph\">Distribution packages are often a year behind. Use the kickstart script, which also installs the systemd unit and a default <code>netdata.conf<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>wget -O \/tmp\/netdata-kickstart.sh https:\/\/get.netdata.cloud\/kickstart.sh\nsh \/tmp\/netdata-kickstart.sh --stable-channel --disable-telemetry\nsystemctl status netdata --no-pager<\/code><\/pre>\n<p class=\"wp-block-paragraph\">The service listens on port <code>19999<\/code> by default. Confirm it is up locally before touching the firewall:<\/p>\n<pre class=\"wp-block-code\"><code>curl -s http:\/\/127.0.0.1:19999\/api\/v1\/info | head -c 300<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Bound Memory and Switch to Persistent Storage<\/h2>\n<p class=\"wp-block-paragraph\">By default Netdata keeps everything in RAM and evicts the oldest samples, so history disappears on every reboot. On a VPS you almost always want the database on disk, with an explicit cap so it can never fill the volume. Edit <code>\/etc\/netdata\/netdata.conf<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>[global]\n    memory mode = dbengine\n    page cache size = 32\n    dbengine multihost disk space = 512\n[web]\n    bind to = 127.0.0.1<\/code><\/pre>\n<p class=\"wp-block-paragraph\"><code>page cache size<\/code> is MB of RAM for hot data; <code>dbengine multihost disk space = 512<\/code> caps the on-disk database at 512&nbsp;MB. On a 1&nbsp;GB VPS a 32&nbsp;MB page cache plus roughly 60&nbsp;MB of resident collectors keeps total resident usage near 100&nbsp;MB. After editing, verify with:<\/p>\n<pre class=\"wp-block-code\"><code>sudo systemctl restart netdata\ncurl -s http:\/\/127.0.0.1:19999\/api\/v1\/info | grep -o '\"version\":[^,]*'\ndu -sh \/var\/cache\/netdata<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Retention Arithmetic and Tiering<\/h2>\n<p class=\"wp-block-paragraph\">Retention is a function of how many metrics you collect. A stock install writes around 2,000 metrics; at one-second resolution that is roughly 250&nbsp;MB per day after compression. With a 512&nbsp;MB cap expect about two days of full-resolution history, which is enough to answer &ldquo;what happened last night.&rdquo; For week-long retention without a bigger disk, enable tiering so older samples are downsampled instead of deleted:<\/p>\n<pre class=\"wp-block-code\"><code>[db]\n    dbengine tiering = yes\n    dbengine tier 1 = 60\n    dbengine tier 2 = 3600<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Tier 1 samples once a minute, tier 2 once an hour. Because coarse tiers compress far better, the same disk now holds weeks of hourly trend next to a couple of days of per-second detail. Re-read <code>du -sh \/var\/cache\/netdata<\/code> after a day to confirm the cap is respected rather than assumed.<\/p>\n<h2 class=\"wp-block-heading\">Alarms That Earn Their Keep<\/h2>\n<p class=\"wp-block-paragraph\">Netdata ships sane health defaults in <code>\/usr\/lib\/netdata\/conf.d\/health.d\/<\/code>. Override rather than edit them by dropping files in <code>\/etc\/netdata\/health.d\/<\/code>. A useful custom check for a web VPS alerts on sustained CPU steal, which indicates a noisy hypervisor neighbour rather than your own load:<\/p>\n<pre class=\"wp-block-code\"><code># \/etc\/netdata\/health.d\/steal.conf\nalarm: cpusteal_5min\n   on: system.cpu\n lookup: average -5m percentage of steal\n  every: 1m\n   warn: $this &gt; 5\n   crit: $this &gt; 15\n    info: sustained CPU steal percentage<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Reload health checks without a restart via <code>sudo netdatacli reload-health<\/code>, then list active alarms through <code>http:\/\/127.0.0.1:19999\/api\/v1\/alarms<\/code>. Pair the steal alarm with one on <code>system.io<\/code> <code>await<\/code> and one on <code>mem.available<\/code> so the three failure modes of a small VPS &mdash; oversold host, saturated disk, exhausted memory &mdash; each page you independently.<\/p>\n<h2 class=\"wp-block-heading\">Remote Access Without Exposing the API<\/h2>\n<p class=\"wp-block-paragraph\">Never bind Netdata to <code>0.0.0.0<\/code>. Reach it over an SSH tunnel or a WireGuard interface. The tunnel approach needs no firewall change at all:<\/p>\n<pre class=\"wp-block-code\"><code>ssh -L 19999:127.0.0.1:19999 user@your-vps\n# then browse http:\/\/localhost:19999 locally<\/code><\/pre>\n<p class=\"wp-block-paragraph\">If other people need read-only access, keep <code>bind to = 127.0.0.1<\/code> and front it with an authenticating reverse proxy rather than opening the port. This keeps the full inspection API &mdash; which reveals process arguments and open sockets &mdash; off every untrusted network.<\/p>\n<h2 class=\"wp-block-heading\">Tune Collector Overhead<\/h2>\n<p class=\"wp-block-paragraph\">Netdata auto-detects Nginx, PHP-FPM, MySQL and Redis, but each discovered plugin spends a little CPU building a page. On a busy box that can be a few percent, so disable the collectors you never look at. List what is running and silence the rest:<\/p>\n<pre class=\"wp-block-code\"><code># \/etc\/netdata\/netdata.conf\n[plugins]\n    proc = yes\n    cgroups = no\n    diskspace = yes\n    idlejitter = no<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Turn off <code>cgroups<\/code> unless you run containers, and <code>idlejitter<\/code> if you never tune scheduler latency. Fewer charts also means fewer metrics on disk, which directly extends retention under the same cap. Measure the difference with <code>pidstat -p $(pgrep -f netdata) 1<\/code> before and after &mdash; on a single-vCPU VPS shaving two percent of a core is worth the missing graph.<\/p>\n<h2 class=\"wp-block-heading\">What to Watch First<\/h2>\n<p class=\"wp-block-paragraph\">Once running, three charts pay for the whole exercise: <code>system.cpu<\/code> steal (hypervisor contention), <code>system.io<\/code> await per disk (queueing on shared storage), and <code>mem.available<\/code> against swap activity. Those three separate &ldquo;the app is slow&rdquo; into &ldquo;the host is oversold,&rdquo; &ldquo;the disk is saturated,&rdquo; and &ldquo;we are out of memory&rdquo; within seconds &mdash; and they are the metrics worth keeping when you later move to a longer-retention stack.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Netdata collects each metric once per second and stores the result compressed into a database, so the footprint stays small enough for a 1&nbsp;GB VPS while still capturing spikes that&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":2,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-608","post","type-post","status-publish","format-standard","hentry","category-vps-guides-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access - Virtual Servers VPS Blog<\/title>\n<meta name=\"description\" content=\"Netdata collects each metric once per second and stores the result compressed into a database, so the footprint stays small enough for a 1&nbsp;GB VPS\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access\" \/>\n<meta property=\"og:description\" content=\"Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-19T09:42:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-08T22:02:21+00:00\" \/>\n<meta name=\"author\" content=\"Virtual-Servers-Vps-Editor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Virtual-Servers-Vps-Editor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/\",\"name\":\"Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-07-19T09:42:40+00:00\",\"dateModified\":\"2026-10-08T22:02:21+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"description\":\"Netdata collects each metric once per second and stores the result compressed into a database, so the footprint stays small enough for a 1&nbsp;GB VPS\",\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/\",\"name\":\"Virtual Servers VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\",\"name\":\"Virtual-Servers-Vps-Editor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"caption\":\"Virtual-Servers-Vps-Editor\"},\"sameAs\":[\"https:\/\/virtualserversvps.com\/blog\"],\"url\":\"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access - Virtual Servers VPS Blog","description":"Netdata collects each metric once per second and stores the result compressed into a database, so the footprint stays small enough for a 1&nbsp;GB VPS","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/","og_locale":"en_US","og_type":"article","og_title":"Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access","og_description":"Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access","og_url":"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-07-19T09:42:40+00:00","article_modified_time":"2026-10-08T22:02:21+00:00","author":"Virtual-Servers-Vps-Editor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Virtual-Servers-Vps-Editor","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/","url":"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/","name":"Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-07-19T09:42:40+00:00","dateModified":"2026-10-08T22:02:21+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"description":"Netdata collects each metric once per second and stores the result compressed into a database, so the footprint stays small enough for a 1&nbsp;GB VPS","breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/vps-monitoring-netdata-realtime-dashboard\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Real-Time VPS Monitoring with Netdata: dbengine Storage, Tiered Retention and Hardened Remote Access"}]},{"@type":"WebSite","@id":"https:\/\/virtualserversvps.com\/blog\/#website","url":"https:\/\/virtualserversvps.com\/blog\/","name":"Virtual Servers VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0","name":"Virtual-Servers-Vps-Editor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","caption":"Virtual-Servers-Vps-Editor"},"sameAs":["https:\/\/virtualserversvps.com\/blog"],"url":"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/"}]}},"_links":{"self":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/comments?post=608"}],"version-history":[{"count":3,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/608\/revisions"}],"predecessor-version":[{"id":1337,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/608\/revisions\/1337"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}