Skip to content

Repository files navigation

opsview

Fleet observability for VMware/vCenter and Proxmox VE estates plus standalone Linux hosts. opsview enumerates your hosts, probes each one over SSH, and reports state through a tabbed web UI with one-click OliveTin actions.

It is environment-agnostic: point it at one or more vCenters and/or Proxmox VE endpoints (and/or a list of physical servers), give it the hypervisor credentials and an SSH key for the fleet, and it builds an inventory and starts reporting. Everything that's site-specific — hypervisors, storage clusters, physical servers, credentials, host groups — is configured at runtime, not baked into the code.

opsview overview

What it does

For every Linux host known to a hypervisor (or added manually), it runs a set of probes:

  • host_basics — uptime, OS, kernel, time skew
  • disk — df usage, flag >85%
  • mounts — findmnt + fstab + autofs; exports provided; active RW/RO verification of each live mount (mountpoint check, write+readback, hung-detection)
  • services — systemd unit failures
  • docker — container state, restart counts, image age
  • apps — per-host process watchlist (a missing expected process = fail)
  • ports — listening sockets

Results render in a tabbed web UI:

  • Overview — color-coded status table, one row per host
  • Topology · Infra — Cytoscape mount-relationship graph (provider → consumer); 4 layouts, vCenter/FS-type/health filters, PNG/JSON export; node color = probe status; OneFS/Isilon clusters render as distinct storage nodes
  • Topology · Services — hand-curated app-flow diagram (services.yaml); same color overlay
  • Analysis — mount health, redundancy, circular dependencies, orphans, and consolidation suggestions
  • Run — OliveTin embedded; buttons to re-run all probes, just docker, just mounts, one host group, etc.
  • Ops — parameterized host-affecting operations: create a network mount, expand a disk (hypervisor virtual-disk grow on vCenter or Proxmox + in-guest partition/LVM/FS extend); confirm step + audit log
  • Broken — latest-run failures + drift from a blessed baseline
  • Settings (admin only) — local users & groups with per-tab access control; a credential store (uploadable SSH keys + username/password credentials); manage vCenters, Proxmox VE endpoints, OneFS/Isilon clusters, and physical (non-hypervisor) servers

Access is gated by login. Local users belong to a group, and the group's permissions decide which tabs they see — e.g. a readonly group with no Run or Ops access. (AD integration is a future enhancement; local accounts for now.)

Screenshots

Hosts from a vCenter, a Proxmox VE endpoint, and a bare-metal server, side by side (the shots below come from the bundled demo dataset — see Quick start).

Topology · Infra — mount relationships drawn provider → consumer; node color is worst-of probe status, storage clusters render as distinct nodes:

Topology graph

Analysis — health, redundancy, circular dependencies, orphans, and consolidation suggestions derived from the mounts probe across the fleet:

Mount analysis

Broken — current failures/warnings plus drift from a blessed baseline:

What's broken

Ops — parameterized, audited, host-affecting operations:

Operations

Architecture

                ┌──────────────┐
   you  ───►    │  nginx :80   │
                └──┬────────┬──┘
        /          │        │     /olivetin/
                   ▼        ▼
         ┌─────────────┐  ┌──────────────────┐
         │ Flask :5000 │  │ OliveTin :1337   │
         │ static HTML │  │ button runner    │
         │ JSON API    │  └──────┬───────────┘
         └──────┬──────┘         │ shells out
                │                ▼
                │     ┌──────────────────────────┐
                │     │ /opt/opsview/orchestrator│
                │     │ cli.py run|triage|...    │
                │     └────────────┬─────────────┘
                │                  │ ssh (parallel fan-out)
                ▼                  ▼
   /var/lib/opsview/state     ┌──────────────┐
   <host>/<probe>/JSON        │ fleet hosts  │
   read by Flask              │ run probes,  │
                              │ emit JSON    │
                              └──────────────┘

Requirements

  • A Linux host to run opsview on (Ubuntu/Debian for the ansible role; any host with Python 3 for manual runs).
  • Python 3.9+ on the opsview host and python3 on every target you probe.
  • An SSH key whose login user has passwordless sudo on the targets (needed for the mount-verify and Ops features).
  • Optional, for automatic inventory: a read-only vCenter account and/or a Proxmox VE API token (PVEAuditor is enough). Without either, add hosts manually in Settings.

Quick start

Try it locally (no real fleet)

A populated demo — the dataset shown in the screenshots above (vCenter + Proxmox + physical hosts, mixed statuses, populated Settings) — runs with one command:

./dev/run-demo.sh          # Linux/macOS
.\dev\run-demo.ps1         # Windows PowerShell
# open http://127.0.0.1:5000  (login: admin / admin)

Or use the docker-compose harness against the bare sample data:

cd dev/
docker compose up --build
# open http://localhost:5000

See dev/README.md for details and a no-docker (Flask-direct) option.

Deploy for real

  1. Provision a host (any VM or bare-metal box).
  2. Run the ansible role against it (see roles/opsview/ and RUNBOOK.md). It installs Python deps, OliveTin, nginx, the Flask service, and the hourly/daily systemd timers.
  3. Log in to the web UI (default admin / admin — change it immediately), then under Settings add your credentials, vCenters / storage clusters / physical servers, and tune host groups in inventory/groups.yaml.

The RUNBOOK walks through every phase: build, deploy, verify, rollback, and operating tips.

Repo layout

opsview/
├── README.md                ← you are here
├── RUNBOOK.md               ← phase-by-phase build/deploy/operate guide
├── roles/opsview/           ← ansible role: installs + configures the opsview host
├── orchestrator/            ← Python: enumerate, fan out, gather, triage
├── probes/                  ← per-OS probe scripts (Linux)
├── inventory/               ← groups.yaml + cached vCenter enumeration
├── web/                     ← Flask app + tabbed static UI
├── dev/                     ← docker-compose + sample data for local testing
├── olivetin/                ← OliveTin actions catalog (docs)
└── services.yaml            ← hand-curated service-flow graph

Configuration

opsview reads its settings from environment variables (see .env.example) and from settings.json managed through the Settings tab. Nothing about your environment is hardcoded — host groups live in inventory/groups.yaml (edit the example patterns to match your naming convention), and the curated service flow lives in services.yaml.

Windows probes

Linux probes ship today. Windows (WinRM) probes are a planned addition — the runner and probe shapes are designed to extend to them.

About

Fleet observability for vCenter estates and standalone Linux hosts — SSH probes, web UI, topology analysis, and OliveTin actions.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages