Skip to content

Latest commit

 

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PCD Onprem Argus

Most monitoring tools tell you something broke. Argus tells you why. It watches your PCD cluster around the clock, catches failures before they escalate, and when things go wrong — digs through the logs, connects the dots, and comes back with a fix. Not a dashboard. A detective.

Real-time health monitoring and AI diagnostics for Platform9 PCD on-prem clusters.


Prerequisites

Before you start, make sure you have:

  • Docker + Docker Compose installed on the machine where you'll run Argus
  • SSH private key that can reach your PCD cluster's primary node (the same key you'd use to ssh ubuntu@<cluster-ip>)
  • Claude API key — get one at console.anthropic.com

Run Locally

1. Clone and configure

git clone git@github.com:platform9/pcd-onprem-argus.git
cd pcd-onprem-argus
cp .env.local.example .env.local

Generate a secure secret and write it into .env.local — this is used to encrypt your SSH keys and credentials at rest:

echo "APP_SECRET=$(openssl rand -hex 32)" >> .env.local

2. Start

docker compose up -d

Argus is now running at http://localhost:3000.

3. Add your SSH key and cluster

  • Go to SettingsSSH Keys → paste or upload the private key that has SSH access to your PCD cluster → Save Key
  • Go back to the dashboard → Add Cluster → enter the cluster name, primary node IP, SSH user (usually ubuntu), and select the key you just added

Argus will connect immediately and start streaming health data.


Run on a VM

If you want Argus running persistently on a remote VM (recommended for team use):

1. SSH into your VM and clone the repo

ssh user@your-vm-ip
git clone git@github.com:platform9/pcd-onprem-argus.git
cd pcd-onprem-argus
cp .env.local.example .env.local

2. Generate a secret and start

# Generate a secure random secret and write it directly into .env.local
echo "APP_SECRET=$(openssl rand -hex 32)" >> .env.local

docker compose up -d

Argus is now accessible at http://your-vm-ip:3000.

3. (Optional) Expose on port 80 with nginx

If you want to access it without the port number, set up a reverse proxy:

server {
    listen 80;
    server_name your-vm-ip;  # or your domain

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;

        # Required for SSE (live cluster streaming)
        proxy_buffering off;
        proxy_read_timeout 86400s;
    }
}

4. Add your SSH key and cluster — same as step 3 above, just open http://your-vm-ip instead.


What It Does

  • Live cluster health — nodes, pods, airctl region status, streamed every 30 seconds
  • 11 alert types — crash loops, OOM, node failures, disk pressure, Vault token expiry, trend detection
  • AI diagnostics — ask in plain English; Claude SSHes in, reads logs, and comes back with a root cause and fix
  • Resource history — memory, CPU, disk sparklines per node with 1h–24h time windows
  • Pod inspection — click any pod for live Events, Describe, or Logs output
  • Notifications — Slack webhook and email alerts when incidents fire
  • Support bundle — one-click airctl gen-support-bundle with progress streaming

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages