diff --git a/lib/Site/VMHostStatus.pm b/lib/Site/VMHostStatus.pm
new file mode 100644
index 0000000000000000000000000000000000000000..7ca2c180325c5e337acae7d11cad7ce6def3377a
--- /dev/null
+++ b/lib/Site/VMHostStatus.pm
@@ -0,0 +1,101 @@
+package Site::VMHostStatus;
+
+use strict;
+use warnings;
+use DBI;
+
+use base 'Resmon::Module';
+
+=pod
+
+=head1 NAME
+
+Site::VMHostStatus - Monitor various stats of RHEV hosts
+
+=head1 SYNOPSIS
+
+ Site::VMHostStatus {
+     hostname : host => hostname
+ }
+
+=head1 DESCRIPTION
+
+This module collects the CPU, Memory and Network usage of VM hosts, both hypervisor and storage, 
+and the number of active VMs for hypervisors. 
+
+=head1 CONFIGURATION
+
+=over
+
+=item check_name
+
+This should alway be "cpu".
+
+=item host
+
+This is the hostname (qualified or not) of the host to check.
+
+=back
+
+=head1 METRICS
+
+=over
+
+=item cpu
+
+The average CPU utilization of the processor cores on the server
+
+=back
+
+=cut
+
+sub handler {
+    my $self = shift;
+    my $config = $self->{config};
+
+    my $hostname = $config->{host};
+    if ( $hostname !~ /cs.umd.edu$/ ) {
+        $hostname = "$hostname.cs.umd.edu";
+    }
+
+    my $dbh = DBI->connect( "DBI:Pg:dbname = engine;host = localhost; port=5432", 'engine', 'KugWS7NOOUl5SnpurWX5vg');
+    if ( ! defined( $dbh ) ) {
+       # Try one more time.
+       sleep(5);
+       $dbh = DBI->connect( "DBI:Pg:dbname = engine;host = localhost; port=5432", 'engine', 'KugWS7NOOUl5SnpurWX5vg');
+    }
+
+    # First get the CPU/mem/net stats.
+    my $sth = $dbh->prepare( "SELECT usage_cpu_percent, usage_mem_percent, usage_network_percent FROM vds_statistics LEFT JOIN vds_static ON vds_statistics.vds_id = vds_static.vds_id WHERE vds_static.vds_name = ?" );
+    my $qresult = $sth->execute( $hostname );
+
+    my @dresult = $sth->fetchrow_array();
+    my $cpu = $dresult[0] // 0;
+    my $mem = $dresult[1] // 0;
+    my $net = $dresult[2] // 0;
+
+    # Now get the VM stats.
+    $sth = $dbh->prepare( "SELECT status, vm_active, vm_migrating FROM vds_dynamic LEFT JOIN vds_static ON vds_dynamic.vds_id = vds_static.vds_id WHERE vds_static.vds_name = ?" );
+    $qresult = $sth->execute( $hostname );
+
+    @dresult = $sth->fetchrow_array();
+    my $status = 3 - ($dresult[0] // 0);
+    my $vma = $dresult[1] // 0;
+    my $vmm = $dresult[2] // 0;
+
+    # To avoid an error message we query the statement handle once more.
+    @dresult = $sth->fetchrow_array();
+
+    # Close the database connection.
+    $dbh->disconnect();
+
+    return { "cpu" => [$cpu, "i"],
+             "mem" => [$mem, "i"],
+             "net" => [$net, "i"],
+             "vms" => [$vma, "i"],
+             "vmm" => [$vmm, "i"],
+             "status" => [$status, "i"]
+    }
+};
+
+1;