{"id":577,"date":"2025-09-18T08:34:49","date_gmt":"2025-09-18T06:34:49","guid":{"rendered":"https:\/\/www.systemdeveloper.nl\/tech\/?p=577"},"modified":"2025-09-18T08:34:50","modified_gmt":"2025-09-18T06:34:50","slug":"from-bash-script-to-ai-assisted-monitoring","status":"publish","type":"post","link":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/","title":{"rendered":"From Bash Script to AI-Assisted Monitoring"},"content":{"rendered":"<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">It started as a simple <strong>bash script<\/strong>. Every night, it ran through a list of hostnames and triggered rsync to create backups. It worked, until backups grew too large and too slow. Snapshots across the wire weren&rsquo;t any better. What began as a nightly helper slowly grew into a <strong>central management platform<\/strong> that today handles backups, monitoring, reporting, and even AI-assisted analysis.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"growing-beyond-backups\">Growing Beyond Backups<\/h2>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">The original goal was clear: make backups, avoid vendor lock-in, and keep it simple. Over the years, that &ldquo;script with vague ideas&rdquo; became <strong>Backup Planner<\/strong>, a web-based system that maps every device in our infrastructure, from VPS nodes to switches, VLANs, and networks across datacenters.<\/p>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">When a new VPS is added, Zabbix discovers it. From there, Backup Planner integrates the server into its own database. Administrators can decide whether the VPS participates in backups, monitoring, or both. If yes, a lightweight <strong>SysDev Agent<\/strong> is installed, a POSIX-compliant shell script triggered every minute by cron. The agent asks Backup Planner what checks to run, executes them, and sends the results back. Metrics flow into <strong>InfluxDB<\/strong> for high-speed time-series analysis, while logs are shipped via <strong>rsyslog to Graylog<\/strong> for indexing and correlation.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"beyond-metrics-checks-questions-and-thresholds\">Beyond Metrics: Checks, Questions, and Thresholds<\/h2>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">In Backup Planner, monitoring revolves around <strong>questions<\/strong>: &ldquo;What is the load average?&rdquo; &ldquo;How much traffic passed through <code>eth0<\/code>?&rdquo; Each check produces fields validated against thresholds. If values drift outside bounds, they are flagged and logged to Influx. From there, <strong>webhooks<\/strong> can trigger downstream automations.<\/p>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">A simple example: outbound traffic exceeding 1 Gbit\/s for more than three minutes triggers a webhook. That webhook can log the event or hand it to something smarter.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"enter-ai-context-before-action\">Enter AI: Context Before Action<\/h2>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">This is where things become exciting. A threshold breach isn&rsquo;t always meaningful on its own. Is the spike due to normal workload? Bot traffic? A runaway backup? Instead of alerting blindly, we route these events through <strong>n8n flows<\/strong> that call an <strong>AI model running on our Jetson AGX Orin<\/strong>, a NVIDIA AI development platform, but with n8n you can route it to e.g. OpenAI. We choose to have everything running on our own hardware and keep data within out company.<\/p>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">The AI digs into correlated data: Influx metrics, Graylog logs, recent backup jobs, even CrowdSec alerts. It then produces a <strong>human-readable analysis<\/strong>:<\/p>\n\n\n<ul class=\"wp-block-list wp-block-list\">\n<li>What happened,<\/li>\n\n\n\n<li>Why it likely happened,<\/li>\n\n\n\n<li>What should be checked next.<\/li>\n<\/ul>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">That analysis doesn&rsquo;t just arrive as a text message. It&rsquo;s <strong>pushed to my phone<\/strong> and even <strong>spoken aloud by Home Assistant<\/strong> at home:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\"><em>&ldquo;Admin? Server webhosting 1 triggered a threshold alert. Outgoing traffic on interface 0 exceeded 86% of capacity. Suggested action: investigate bot traffic. Link: [Backup Planner Portal].&rdquo;<\/em><\/p>\n<\/blockquote>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">Suddenly, alerts aren&rsquo;t noise but <strong>contextual stories<\/strong>.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"dynamic-reporting-ai-chooses-its-own-evidence\">Dynamic Reporting: AI Chooses Its Own Evidence<\/h2>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">One of the most powerful aspects of Backup Planner is its <strong>report block system<\/strong>. Any piece of data in the database can be exposed through a reusable block: CPU load, network traffic, pending updates, backup history, CrowdSec alerts, and more.<\/p>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">Normally, administrators assemble these blocks into scheduled reports. But in our AI-assisted workflows, it works the other way around:<\/p>\n\n\n<ul class=\"wp-block-list wp-block-list\">\n<li>When an incident is detected, the AI decides <strong>what information it needs<\/strong> to understand the situation.<\/li>\n\n\n\n<li>It dynamically queries the relevant report blocks, or even builds new ones on the fly.<\/li>\n\n\n\n<li>The result is a custom dossier, a tailored report containing exactly the data needed to explain the incident.<\/li>\n<\/ul>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">This means every alert can come with its own <strong>context pack<\/strong>, automatically generated. Instead of a static list of metrics, you get a living document that reflects how the AI reasons about the issue.<\/p>\n\n\n<h1 class=\"wp-block-heading\" id=\"solo-buildere28099s-journey-complex-systems-simple-steps\">Solo Builder&rsquo;s Journey: Complex Systems, Simple Steps<\/h1>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">This whole platform didn&rsquo;t appear overnight. It was built the only way truly complex systems ever get built by one person: <strong>in tiny, relentless steps<\/strong>. A cron here, a bash helper there, one API endpoint, one template block, one task in Influx, one n8n node and repeat. The result isn&rsquo;t just a tool; it&rsquo;s an ecosystem that grew with every insight, mistake, and small win.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"what-made-it-possible\">What made it possible<\/h3>\n\n\n<ul class=\"wp-block-list wp-block-list\">\n<li>\n<strong>Start embarrassingly simple.<\/strong> A bash script that worked beat any grand design that never shipped.<\/li>\n\n\n\n<li>\n<strong>Ship, then shape.<\/strong> Turn the rough edge into a reusable block (agent check &rarr; field &rarr; template &rarr; report).<\/li>\n\n\n\n<li>\n<strong>Automate only what hurts.<\/strong> Manual once, scripted twice, automated forever.<\/li>\n\n\n\n<li>\n<strong>Guardrails before power.<\/strong> Dry-runs, allowlists, TTLs, audit logs, speed, but with a seatbelt.<\/li>\n\n\n\n<li>\n<strong>Observe everything.<\/strong> Metrics to Influx, logs to Graylog, actions to a central log, no ghosts in the machine.<\/li>\n\n\n\n<li>\n<strong>AI as a teammate, not a deity.<\/strong> Let it gather evidence and propose a plan; humans approve the first iterations.<\/li>\n\n\n\n<li>\n<strong>Design for change.<\/strong> Everything is a block: checks, reports, actions. Swap a block, not the whole system.<\/li>\n<\/ul>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">Working alone forces clarity. Every feature must pay rent: either it shortens feedback loops, reduces risk, or increases leverage. That constraint is a gift. It&rsquo;s how a simple nightly rsync grew into a platform that can detect, explain, and (carefully) act without losing the plot.<\/p>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\"><strong>Takeaway:<\/strong> Big capabilities don&rsquo;t require big teams; they require <strong>small, compounding decisions<\/strong> and a workflow that makes the next step easy.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">&ldquo;If you can make the next step obvious and safe, you can build almost anything solo.&rdquo;<\/p>\n<\/blockquote>\n\n\n<h2 class=\"wp-block-heading\" id=\"looking-ahead-towards-self-healing-infrastructure\">Looking Ahead: Towards Self-Healing Infrastructure<\/h2>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">What we have now is a system that observes, explains, and proposes. The next step is letting it <strong>act safely<\/strong>. Playbooks for common incidents, time-limited mitigations, and guardrails that guarantee reversibility will allow the platform to not only detect problems, but also resolve them in real time.<\/p>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">This isn&rsquo;t about replacing administrators. It&rsquo;s about <strong>raising the baseline<\/strong>: fewer false alarms, more context, and faster recovery. Humans remain in control, but the system does the heavy lifting.<\/p>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">From here, the roadmap is clear:<\/p>\n\n\n<ul class=\"wp-block-list wp-block-list\">\n<li>\n<strong>Safer automation<\/strong>: wrappers and policies that keep AI actions predictable.<\/li>\n\n\n\n<li>\n<strong>More intelligence<\/strong>: richer correlations between logs, metrics, and history.<\/li>\n\n\n\n<li>\n<strong>Better storytelling<\/strong>: alerts that explain themselves like incident reports.<\/li>\n\n\n\n<li>\n<strong>Continuous learning<\/strong>: every solved issue makes the platform stronger.<\/li>\n<\/ul>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">It&rsquo;s a long way from a bash script that copied files at night. But step by step, we&rsquo;re moving towards something powerful: infrastructure that can <strong>watch itself, explain itself, and heal itself<\/strong>.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"closing-the-loop-safely\">Closing the Loop (Safely)<\/h2>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">The natural next step is action. The AI already proposes mitigations: rate-limiting a NIC, blocking an IP via CrowdSec, or rescheduling a backup. For now, these remain <strong>dry-runs<\/strong>: the system drafts an action plan, logs it, and prepares it for morning review. It&rsquo;s safer this way, and it keeps us in control.<\/p>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">But the framework is in place: an <strong>action wrapper<\/strong> that enforces guardrails, a policy engine that defines what actions are safe, and audit logs that record every intent. Moving from &ldquo;observe&rdquo; to &ldquo;act&rdquo; is no longer a dream, it&rsquo;s just a matter of confidence.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"what-backup-planner-can-do-today\">What Backup Planner Can Do Today<\/h2>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">While the story often focuses on monitoring and AI, Backup Planner is a <strong>full-featured management platform<\/strong>. Out of the box it provides:<\/p>\n\n\n<ul class=\"wp-block-list wp-block-list\">\n<li>\n<strong>Backups &amp; Restore<\/strong><ul class=\"wp-block-list wp-block-list\">\n<li>Tier-1 rsync backups with scheduling and smart load balancing.<\/li>\n\n\n\n<li>Tier-2 ZFS snapshots with quota enforcement and retention policies.<\/li>\n\n\n\n<li>A* Pathfinding engine to always use the fastest network route for backups and restores.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\n<strong>Monitoring &amp; Metrics<\/strong><ul class=\"wp-block-list wp-block-list\">\n<li>Lightweight SysDev Agent for POSIX systems.<\/li>\n\n\n\n<li>Checks and groups for CPU, load, traffic, updates, and custom scripts. And we mean as custom as you want it. <\/li>\n\n\n\n<li>Time-series storage in InfluxDB, dashboards in Grafana.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\n<strong>Reporting &amp; Automation<\/strong><ul class=\"wp-block-list wp-block-list\">\n<li>Report blocks: modular SQL+template units for mail reports or AI dossiers.<\/li>\n\n\n\n<li>Automated mailings (hourly, daily, weekly, monthly) with RBAC scopes.<\/li>\n\n\n\n<li>Webhooks that trigger flows in n8n, AI pipelines, or external systems.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\n<strong>Configuration &amp; Control<\/strong><ul class=\"wp-block-list wp-block-list\">\n<li>Central device management: IPs, NICs, VLANs, paths, service plugins.<\/li>\n\n\n\n<li>Role-based access control with scopes per customer or VPS.<\/li>\n\n\n\n<li>Traffic shaping rules per NIC with activation\/expiry controls.<\/li>\n\n\n\n<li>CrowdSec integration to share bans across servers.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">In short: Backup Planner is <strong>one system for backup, monitoring, reporting, and automation<\/strong> flexible enough for daily operations, yet open enough to integrate AI-driven workflows.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"why-this-matters\">Why This Matters<\/h2>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">What began as a simple rsync script has evolved into a <strong>self-aware platform<\/strong>:<\/p>\n\n\n<ul class=\"wp-block-list wp-block-list\">\n<li>Tier-1 rsync and Tier-2 ZFS snapshots provide reliable backups.<\/li>\n\n\n\n<li>Centralized monitoring and reporting give full visibility.<\/li>\n\n\n\n<li>AI-assisted analysis turns raw alerts into actionable insights.<\/li>\n\n\n\n<li>Home automation bridges the gap from datacenter to living room.<\/li>\n<\/ul>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">It&rsquo;s not just about backups anymore. It&rsquo;s about building infrastructure that can <strong>explain itself, learn from its own history, and eventually heal itself<\/strong>.<\/p>\n\n\n<p class=\"wp-block-paragraph wp-block-paragraph\" style=\"\">And the best part? We built it step by step, one bash script, one cron job, one agent, one webhook at a time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It started as a simple bash script. Every night, it ran through a list of hostnames and triggered rsync to create backups. It worked, until backups grew too large and too slow. Snapshots across the wire weren&rsquo;t any better. What began as a nightly helper slowly grew into a central management platform that today handles &hellip;<\/p>\n","protected":false},"author":1,"featured_media":578,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28,36],"tags":[],"class_list":["post-577","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-future-ideas"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>From Bash Script to AI-Assisted Monitoring - SystemDeveloper.NL<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"From Bash Script to AI-Assisted Monitoring - SystemDeveloper.NL\" \/>\n<meta property=\"og:description\" content=\"It started as a simple bash script. Every night, it ran through a list of hostnames and triggered rsync to create backups. It worked, until backups grew too large and too slow. Snapshots across the wire weren&rsquo;t any better. What began as a nightly helper slowly grew into a central management platform that today handles &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/\" \/>\n<meta property=\"og:site_name\" content=\"SystemDeveloper.NL\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/quan.tora.16\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-18T06:34:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-18T06:34:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2025\/09\/Scherm\u00adafbeelding-2025-09-18-om-08.32.50-e1758177241424.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1083\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"John Timmer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"John Timmer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/\"},\"author\":{\"name\":\"John Timmer\",\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/#\\\/schema\\\/person\\\/5760c2ed5300c56d8ef01dfb00a9763b\"},\"headline\":\"From Bash Script to AI-Assisted Monitoring\",\"datePublished\":\"2025-09-18T06:34:49+00:00\",\"dateModified\":\"2025-09-18T06:34:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/\"},\"wordCount\":1437,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Scherm\u00adafbeelding-2025-09-18-om-08.32.50-e1758177241424.png\",\"articleSection\":[\"AI\",\"Future ideas\"],\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/\",\"url\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/\",\"name\":\"From Bash Script to AI-Assisted Monitoring - SystemDeveloper.NL\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Scherm\u00adafbeelding-2025-09-18-om-08.32.50-e1758177241424.png\",\"datePublished\":\"2025-09-18T06:34:49+00:00\",\"dateModified\":\"2025-09-18T06:34:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Scherm\u00adafbeelding-2025-09-18-om-08.32.50-e1758177241424.png\",\"contentUrl\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Scherm\u00adafbeelding-2025-09-18-om-08.32.50-e1758177241424.png\",\"width\":1083,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/from-bash-script-to-ai-assisted-monitoring\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"From Bash Script to AI-Assisted Monitoring\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/#website\",\"url\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/\",\"name\":\"www.systemdeveloper.nl\",\"description\":\"NextGen IT\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/#organization\",\"name\":\"www.systemdeveloper.nl\",\"url\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/qt-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/qt-logo.png\",\"width\":1346,\"height\":1230,\"caption\":\"www.systemdeveloper.nl\"},\"image\":{\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/quan.tora.16\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/#\\\/schema\\\/person\\\/5760c2ed5300c56d8ef01dfb00a9763b\",\"name\":\"John Timmer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/cropped-D6E27035-6864-4270-8D72-0D8C0C59F370-96x96.jpeg\",\"url\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/cropped-D6E27035-6864-4270-8D72-0D8C0C59F370-96x96.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/cropped-D6E27035-6864-4270-8D72-0D8C0C59F370-96x96.jpeg\",\"caption\":\"John Timmer\"},\"sameAs\":[\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\"],\"url\":\"https:\\\/\\\/www.systemdeveloper.nl\\\/tech\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"From Bash Script to AI-Assisted Monitoring - SystemDeveloper.NL","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:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/","og_locale":"en_US","og_type":"article","og_title":"From Bash Script to AI-Assisted Monitoring - SystemDeveloper.NL","og_description":"It started as a simple bash script. Every night, it ran through a list of hostnames and triggered rsync to create backups. It worked, until backups grew too large and too slow. Snapshots across the wire weren&rsquo;t any better. What began as a nightly helper slowly grew into a central management platform that today handles &hellip;","og_url":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/","og_site_name":"SystemDeveloper.NL","article_publisher":"https:\/\/www.facebook.com\/quan.tora.16","article_published_time":"2025-09-18T06:34:49+00:00","article_modified_time":"2025-09-18T06:34:50+00:00","og_image":[{"width":1083,"height":768,"url":"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2025\/09\/Scherm\u00adafbeelding-2025-09-18-om-08.32.50-e1758177241424.png","type":"image\/png"}],"author":"John Timmer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"John Timmer","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/#article","isPartOf":{"@id":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/"},"author":{"name":"John Timmer","@id":"https:\/\/www.systemdeveloper.nl\/tech\/#\/schema\/person\/5760c2ed5300c56d8ef01dfb00a9763b"},"headline":"From Bash Script to AI-Assisted Monitoring","datePublished":"2025-09-18T06:34:49+00:00","dateModified":"2025-09-18T06:34:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/"},"wordCount":1437,"commentCount":0,"publisher":{"@id":"https:\/\/www.systemdeveloper.nl\/tech\/#organization"},"image":{"@id":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/#primaryimage"},"thumbnailUrl":"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2025\/09\/Scherm\u00adafbeelding-2025-09-18-om-08.32.50-e1758177241424.png","articleSection":["AI","Future ideas"],"inLanguage":"en","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/","url":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/","name":"From Bash Script to AI-Assisted Monitoring - SystemDeveloper.NL","isPartOf":{"@id":"https:\/\/www.systemdeveloper.nl\/tech\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/#primaryimage"},"image":{"@id":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/#primaryimage"},"thumbnailUrl":"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2025\/09\/Scherm\u00adafbeelding-2025-09-18-om-08.32.50-e1758177241424.png","datePublished":"2025-09-18T06:34:49+00:00","dateModified":"2025-09-18T06:34:50+00:00","breadcrumb":{"@id":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/"]}]},{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/#primaryimage","url":"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2025\/09\/Scherm\u00adafbeelding-2025-09-18-om-08.32.50-e1758177241424.png","contentUrl":"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2025\/09\/Scherm\u00adafbeelding-2025-09-18-om-08.32.50-e1758177241424.png","width":1083,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/www.systemdeveloper.nl\/tech\/from-bash-script-to-ai-assisted-monitoring\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.systemdeveloper.nl\/tech\/"},{"@type":"ListItem","position":2,"name":"From Bash Script to AI-Assisted Monitoring"}]},{"@type":"WebSite","@id":"https:\/\/www.systemdeveloper.nl\/tech\/#website","url":"https:\/\/www.systemdeveloper.nl\/tech\/","name":"www.systemdeveloper.nl","description":"NextGen IT","publisher":{"@id":"https:\/\/www.systemdeveloper.nl\/tech\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.systemdeveloper.nl\/tech\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":"Organization","@id":"https:\/\/www.systemdeveloper.nl\/tech\/#organization","name":"www.systemdeveloper.nl","url":"https:\/\/www.systemdeveloper.nl\/tech\/","logo":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/www.systemdeveloper.nl\/tech\/#\/schema\/logo\/image\/","url":"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2024\/11\/qt-logo.png","contentUrl":"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2024\/11\/qt-logo.png","width":1346,"height":1230,"caption":"www.systemdeveloper.nl"},"image":{"@id":"https:\/\/www.systemdeveloper.nl\/tech\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/quan.tora.16"]},{"@type":"Person","@id":"https:\/\/www.systemdeveloper.nl\/tech\/#\/schema\/person\/5760c2ed5300c56d8ef01dfb00a9763b","name":"John Timmer","image":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2024\/11\/cropped-D6E27035-6864-4270-8D72-0D8C0C59F370-96x96.jpeg","url":"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2024\/11\/cropped-D6E27035-6864-4270-8D72-0D8C0C59F370-96x96.jpeg","contentUrl":"https:\/\/www.systemdeveloper.nl\/tech\/wp-content\/uploads\/2024\/11\/cropped-D6E27035-6864-4270-8D72-0D8C0C59F370-96x96.jpeg","caption":"John Timmer"},"sameAs":["https:\/\/www.systemdeveloper.nl\/tech"],"url":"https:\/\/www.systemdeveloper.nl\/tech\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/posts\/577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/comments?post=577"}],"version-history":[{"count":1,"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/posts\/577\/revisions"}],"predecessor-version":[{"id":580,"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/posts\/577\/revisions\/580"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/media\/578"}],"wp:attachment":[{"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/media?parent=577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/categories?post=577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.systemdeveloper.nl\/tech\/wp-json\/wp\/v2\/tags?post=577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}