This is an automated email from the ASF dual-hosted git repository.

krathbun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/main by this push:
     new 480c88a2d2 Manager info on Monitor `rest/manager` -> `rest-v2/manager` 
(#5894)
480c88a2d2 is described below

commit 480c88a2d29c0a5f18c58d90832df6bdf85fd93c
Author: Kevin Rathbun <[email protected]>
AuthorDate: Mon Feb 2 11:27:35 2026 -0500

    Manager info on Monitor `rest/manager` -> `rest-v2/manager` (#5894)
    
    * Manager info on Monitor `rest/manager` -> `rest-v2/manager`
    
    Manager info on the Monitor (displayed on homepage (`/`) and Manager page 
(`/manager`)) now obtains and displays info from the existing (but unused) 
`rest-v2/manager` endpoint.
    
    * Updated the homepage to display table data corresponding to the 
`rest-v2/manager` endpoint.
    * Updated the manager page to display table data corresponding to the 
`rest-v2/manager` endpoint.
    * Created new endpoint `rest-v2/manager/metrics` which returns the Manager 
metrics as json. This is linked in the Manager table in both the homepage and 
the manager page.
    * Server navigation bar now only considers the Manager status (as obtained 
from `rest/status`) (ERROR, WARN, OK). Previously took into account the manager 
state (e.g., if the state or goal state was SAFE_MODE or CLEAN_STOP), but this 
info was only included in the `rest/manager` endpoint.
    * Deleted the `rest/manager` endpoint and associated code used to gather 
data for this endpoint.
    * Deleted `systemAlert.js` and `systemAlert.ftl` as this alert was entirely 
based on Manager info included in `rest/manager` (manager state being SAFE_MODE 
or CLEAN_STOP). No longer applicable with `rest-v2/manager`.
---
 server/monitor/pom.xml                             |   4 -
 .../apache/accumulo/monitor/next/Endpoints.java    |  12 +
 .../accumulo/monitor/rest/SummaryInformation.java  |  34 +--
 .../org/apache/accumulo/monitor/rest/Totals.java   |  48 ----
 .../apache/accumulo/monitor/rest/XMLResource.java  |   5 +-
 .../accumulo/monitor/rest/logs/DeadLoggerList.java |  42 ---
 .../monitor/rest/manager/ManagerInformation.java   | 131 ---------
 .../monitor/rest/manager/ManagerResource.java      | 271 -------------------
 .../rest/tservers/BadTabletServerInformation.java  |  49 ----
 .../monitor/rest/tservers/BadTabletServers.java    |  43 ---
 .../rest/tservers/DeadServerInformation.java       |  54 ----
 .../monitor/rest/tservers/DeadServerList.java      |  42 ---
 .../tservers/ServerShuttingDownInformation.java    |  44 ---
 .../monitor/rest/tservers/ServersShuttingDown.java |  42 ---
 .../rest/tservers/TabletServerResource.java        |   3 -
 .../tservers/TabletServerWithTableInformation.java |  47 ----
 .../monitor/rest/tservers/TabletServers.java       |  14 -
 .../accumulo/monitor/resources/js/functions.js     |   5 +-
 .../accumulo/monitor/resources/js/manager.js       | 301 +++++++++------------
 .../apache/accumulo/monitor/resources/js/navbar.js |  89 +++---
 .../accumulo/monitor/resources/js/overview.js      |  37 ++-
 .../accumulo/monitor/resources/js/systemAlert.js   | 172 ------------
 .../accumulo/monitor/resources/js/tservers.js      | 110 +-------
 .../apache/accumulo/monitor/templates/default.ftl  |   2 -
 .../apache/accumulo/monitor/templates/manager.ftl  |  21 +-
 .../apache/accumulo/monitor/templates/overview.ftl |  20 +-
 .../accumulo/monitor/templates/systemAlert.ftl     |  31 ---
 .../apache/accumulo/monitor/templates/tservers.ftl |  28 --
 28 files changed, 213 insertions(+), 1488 deletions(-)

diff --git a/server/monitor/pom.xml b/server/monitor/pom.xml
index 72a2c764cf..fad0af4ab1 100644
--- a/server/monitor/pom.xml
+++ b/server/monitor/pom.xml
@@ -103,10 +103,6 @@
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-start</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-web</artifactId>
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/next/Endpoints.java 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/next/Endpoints.java
index c0eb1b2e1d..58f45b5542 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/next/Endpoints.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/next/Endpoints.java
@@ -151,6 +151,18 @@ public class Endpoints {
     return monitor.getInformationFetcher().getAllMetrics().asMap().get(s);
   }
 
+  @GET
+  @Path("manager/metrics")
+  @Produces(MediaType.APPLICATION_JSON)
+  @Description("Returns the metrics for the Manager")
+  public List<FMetric> getManagerMetrics() {
+    var managerMetrics = getManager().getMetrics();
+    if (managerMetrics != null) {
+      return 
managerMetrics.stream().map(FMetric::getRootAsFMetric).collect(Collectors.toList());
+    }
+    return List.of();
+  }
+
   @GET
   @Path("gc")
   @Produces(MediaType.APPLICATION_JSON)
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/SummaryInformation.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/SummaryInformation.java
index 3880c2e79f..f468819df3 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/SummaryInformation.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/SummaryInformation.java
@@ -23,12 +23,7 @@ import java.util.List;
 
 import jakarta.xml.bind.annotation.XmlRootElement;
 
-import org.apache.accumulo.monitor.rest.logs.DeadLoggerList;
-import org.apache.accumulo.monitor.rest.manager.ManagerInformation;
 import org.apache.accumulo.monitor.rest.tables.TableInformationList;
-import org.apache.accumulo.monitor.rest.tservers.BadTabletServers;
-import org.apache.accumulo.monitor.rest.tservers.DeadServerList;
-import org.apache.accumulo.monitor.rest.tservers.ServersShuttingDown;
 import org.apache.accumulo.monitor.rest.tservers.TabletServer;
 
 /**
@@ -40,46 +35,23 @@ import 
org.apache.accumulo.monitor.rest.tservers.TabletServer;
 public class SummaryInformation {
 
   // Variable names become JSON keys
-  public List<TabletServer> servers = new ArrayList<>();
-
-  public String managerGoalState;
-  public String managerState;
-
-  public BadTabletServers badTabletServers;
-  public ServersShuttingDown tabletServersShuttingDown;
-  public Integer unassignedTablets;
-  public DeadServerList deadTabletServers;
-
-  public DeadLoggerList deadLoggers;
+  public List<TabletServer> servers;
 
   public TableInformationList tables;
 
-  public Totals totals;
-
+  // do not remove
   public SummaryInformation() {}
 
   /**
    * Stores Monitor information as XML or JSON
    *
    * @param size Number of tservers
-   * @param info Manager information
    * @param tablesList Table list
    */
-  public SummaryInformation(int size, ManagerInformation info, 
TableInformationList tablesList) {
+  public SummaryInformation(int size, TableInformationList tablesList) {
     this.servers = new ArrayList<>(size);
 
-    this.managerGoalState = info.managerGoalState;
-    this.managerState = info.managerState;
-
-    this.badTabletServers = info.badTabletServers;
-    this.tabletServersShuttingDown = info.tabletServersShuttingDown;
-    this.unassignedTablets = info.unassignedTablets;
-    this.deadTabletServers = info.deadTabletServers;
-    this.deadLoggers = info.deadLoggers;
-
     this.tables = tablesList;
-
-    this.totals = new Totals(info.ingestrate, info.queryrate, info.numentries);
   }
 
   /**
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/Totals.java 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/Totals.java
deleted file mode 100644
index 1697f1885b..0000000000
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/Totals.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest;
-
-/**
- * Generates the totals for XML summary
- *
- * @since 2.0.0
- */
-public class Totals {
-
-  // Variable names become JSON keys
-  public double ingestrate = 0.0;
-  public double queryrate = 0.0;
-  public double diskrate = 0.0;
-  public long numentries = 0L;
-
-  public Totals() {}
-
-  /**
-   * Initializes totals
-   *
-   * @param ingestrate Total ingest rate
-   * @param queryrate Total query rate
-   * @param numentries Total number of entries
-   */
-  public Totals(double ingestrate, double queryrate, long numentries) {
-    this.ingestrate = ingestrate;
-    this.queryrate = queryrate;
-    this.numentries = numentries;
-  }
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/XMLResource.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/XMLResource.java
index 33ab3654c0..cb52c0174c 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/XMLResource.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/XMLResource.java
@@ -29,7 +29,6 @@ import jakarta.ws.rs.core.Response.Status;
 import org.apache.accumulo.core.manager.thrift.ManagerMonitorInfo;
 import org.apache.accumulo.core.manager.thrift.TabletServerStatus;
 import org.apache.accumulo.monitor.Monitor;
-import org.apache.accumulo.monitor.rest.manager.ManagerResource;
 import org.apache.accumulo.monitor.rest.tables.TablesResource;
 import org.apache.accumulo.monitor.rest.tservers.TabletServer;
 
@@ -58,8 +57,8 @@ public class XMLResource {
     }
 
     // Add Monitor information
-    SummaryInformation xml = new SummaryInformation(mmi.tServerInfo.size(),
-        ManagerResource.getTables(monitor), TablesResource.getTables(monitor));
+    SummaryInformation xml =
+        new SummaryInformation(mmi.tServerInfo.size(), 
TablesResource.getTables(monitor));
 
     // Add tserver information
     for (TabletServerStatus status : mmi.tServerInfo) {
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/logs/DeadLoggerList.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/logs/DeadLoggerList.java
deleted file mode 100644
index 2cdec7750e..0000000000
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/logs/DeadLoggerList.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest.logs;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Stores a new dead logger object
- *
- * @since 2.0.0
- */
-public class DeadLoggerList {
-
-  // Variable names become JSON keys
-  public List<DeadLoggerInformation> deadLogger = new ArrayList<>();
-
-  /**
-   * Adds a new dead logger to the list
-   *
-   * @param deadLogger dead logger to add
-   */
-  public void addDeadLogger(DeadLoggerInformation deadLogger) {
-    this.deadLogger.add(deadLogger);
-  }
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerInformation.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerInformation.java
deleted file mode 100644
index c202f076d9..0000000000
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerInformation.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest.manager;
-
-import org.apache.accumulo.monitor.rest.logs.DeadLoggerList;
-import org.apache.accumulo.monitor.rest.tservers.BadTabletServers;
-import org.apache.accumulo.monitor.rest.tservers.DeadServerList;
-import org.apache.accumulo.monitor.rest.tservers.ServersShuttingDown;
-
-/**
- * Responsible for storing manager information as a JSON object
- *
- * @since 2.0.0
- */
-public class ManagerInformation {
-
-  // Variable names become JSON keys
-  public String manager = "No Managers running";
-  public String lastGC = "0";
-  public String gcStatus;
-  public String managerGoalState;
-  public String managerState;
-
-  public Integer onlineTabletServers = 0;
-  public Integer totalTabletServers = 0;
-  public Integer tablets = 0;
-  public Integer unassignedTablets = 0;
-
-  public long numentries = 0L;
-  public double osload = 0L;
-  public double ingestrate = 0d;
-  public double entriesRead = 0d;
-  public double queryrate = 0d; // entriesReturned same as queryrate
-
-  public long holdTime = 0L;
-
-  public int tables;
-  public int deadTabletServersCount;
-  public long lookups;
-  public long uptime;
-
-  public BadTabletServers badTabletServers;
-  public ServersShuttingDown tabletServersShuttingDown;
-  public DeadServerList deadTabletServers;
-  public DeadLoggerList deadLoggers;
-
-  /**
-   * Creates an empty manager JSON object
-   */
-  public ManagerInformation() {}
-
-  public ManagerInformation(String manager) {
-    this.manager = manager;
-  }
-
-  /**
-   * Stores a new manager JSON object
-   *
-   * @param manager Manager location
-   * @param onlineTabletServers Number of online tservers
-   * @param totalTabletServers Total number of tservers
-   * @param lastGC Time of the last gc
-   * @param tablets Number of tablet
-   * @param unassignedTablets Number of unassigned tablets
-   * @param entries Number of entries
-   * @param ingest Number of ingest
-   * @param entriesRead Number of queries
-   * @param entriesReturned Number of returned queries
-   * @param holdTime Amount of hold time
-   * @param osLoad Amount of load to the OS
-   * @param tables Number of tables
-   * @param deadTabletServersCount Number of dead tservers
-   * @param lookups Number of lookups
-   * @param uptime Time the Monitor has been running
-   * @param gcStatus Status of the garbage collector
-   * @param managerGoalState Goal state of the manager
-   * @param managerState Current state of the manager
-   * @param badTabletServers Number of bad tservers
-   * @param tabletServersShuttingDown Number of tservers shutting down
-   * @param deadTabletServers Number of dead tservers
-   * @param deadLoggers Number of dead loggers
-   */
-  public ManagerInformation(String manager, int onlineTabletServers, int 
totalTabletServers,
-      String lastGC, int tablets, int unassignedTablets, long entries, double 
ingest,
-      double entriesRead, double entriesReturned, long holdTime, double 
osLoad, int tables,
-      int deadTabletServersCount, long lookups, long uptime, String gcStatus,
-      String managerGoalState, String managerState, BadTabletServers 
badTabletServers,
-      ServersShuttingDown tabletServersShuttingDown, DeadServerList 
deadTabletServers,
-      DeadLoggerList deadLoggers) {
-
-    this.manager = manager;
-    this.onlineTabletServers = onlineTabletServers;
-    this.totalTabletServers = totalTabletServers;
-    this.lastGC = lastGC;
-    this.tablets = tablets;
-    this.unassignedTablets = unassignedTablets;
-    this.numentries = entries;
-    this.ingestrate = ingest;
-    this.entriesRead = entriesRead;
-    this.queryrate = entriesReturned;
-    this.holdTime = holdTime;
-    this.osload = osLoad;
-    this.tables = tables;
-    this.deadTabletServersCount = deadTabletServersCount;
-    this.lookups = lookups;
-    this.uptime = uptime;
-    this.gcStatus = gcStatus;
-    this.managerGoalState = managerGoalState;
-    this.managerState = managerState;
-    this.badTabletServers = badTabletServers;
-    this.tabletServersShuttingDown = tabletServersShuttingDown;
-    this.deadTabletServers = deadTabletServers;
-    this.deadLoggers = deadLoggers;
-  }
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java
deleted file mode 100644
index eab9eee7e9..0000000000
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest.manager;
-
-import java.lang.management.ManagementFactory;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import jakarta.inject.Inject;
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.core.MediaType;
-
-import org.apache.accumulo.core.client.admin.servers.ServerId;
-import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.gc.thrift.GCStatus;
-import org.apache.accumulo.core.manager.thrift.DeadServer;
-import org.apache.accumulo.core.manager.thrift.ManagerMonitorInfo;
-import org.apache.accumulo.core.manager.thrift.TabletServerStatus;
-import org.apache.accumulo.monitor.Monitor;
-import org.apache.accumulo.monitor.rest.logs.DeadLoggerInformation;
-import org.apache.accumulo.monitor.rest.logs.DeadLoggerList;
-import org.apache.accumulo.monitor.rest.tservers.BadTabletServerInformation;
-import org.apache.accumulo.monitor.rest.tservers.BadTabletServers;
-import org.apache.accumulo.monitor.rest.tservers.DeadServerInformation;
-import org.apache.accumulo.monitor.rest.tservers.DeadServerList;
-import org.apache.accumulo.monitor.rest.tservers.ServerShuttingDownInformation;
-import org.apache.accumulo.monitor.rest.tservers.ServersShuttingDown;
-import org.apache.accumulo.server.manager.state.TabletServerState;
-import org.apache.commons.lang3.StringUtils;
-
-/**
- * Responsible for generating a new Manager information JSON object
- *
- * @since 2.0.0
- */
-@Path("/manager")
-@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
-public class ManagerResource {
-  public static final String NO_MANAGERS = "No Managers running";
-
-  @Inject
-  private Monitor monitor;
-
-  /**
-   * Generates a manager information JSON object
-   *
-   * @return manager JSON object
-   */
-  @GET
-  public ManagerInformation getTables() {
-    return getTables(monitor);
-  }
-
-  public static ManagerInformation getTables(Monitor monitor) {
-    ManagerInformation managerInformation;
-    ManagerMonitorInfo mmi = monitor.getMmi();
-
-    if (mmi != null) {
-      GCStatus gcStatusObj = monitor.getGcStatus();
-      String gcStatus = "Waiting";
-      String label = "";
-      if (gcStatusObj != null) {
-        long start = 0;
-        if (gcStatusObj.current.started != 0 || gcStatusObj.currentLog.started 
!= 0) {
-          start = Math.max(gcStatusObj.current.started, 
gcStatusObj.currentLog.started);
-          label = "Running";
-        } else if (gcStatusObj.lastLog.finished != 0) {
-          start = gcStatusObj.lastLog.finished;
-        }
-        if (start != 0) {
-          gcStatus = String.valueOf(start);
-        }
-      } else {
-        gcStatus = "Down";
-      }
-
-      List<String> tservers = new ArrayList<>();
-      for (TabletServerStatus up : mmi.tServerInfo) {
-        tservers.add(up.name);
-      }
-      for (DeadServer down : mmi.deadTabletServers) {
-        tservers.add(down.server);
-      }
-
-      Set<ServerId> managers =
-          
monitor.getContext().instanceOperations().getServers(ServerId.Type.MANAGER);
-      String manager = "Down";
-      if (managers != null && !managers.isEmpty()) {
-        manager = managers.iterator().next().getHost();
-      }
-
-      int onlineTabletServers = mmi.tServerInfo.size();
-      int totalTabletServers = tservers.size();
-      int tablets = monitor.getTotalTabletCount();
-      int unassignedTablets = mmi.unassignedTablets;
-      long entries = monitor.getTotalEntries();
-      double ingest = monitor.getTotalIngestRate();
-      double entriesRead = monitor.getTotalScanRate();
-      double entriesReturned = monitor.getTotalQueryRate();
-      long holdTime = monitor.getTotalHoldTime();
-      double osLoad = 
ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage();
-
-      int tables = monitor.getTotalTables();
-      int deadTabletServers = mmi.deadTabletServers.size();
-      long lookups = monitor.getTotalLookups();
-      long uptime = System.currentTimeMillis() - monitor.getStartTime();
-
-      managerInformation = new ManagerInformation(manager, 
onlineTabletServers, totalTabletServers,
-          gcStatus, tablets, unassignedTablets, entries, ingest, entriesRead, 
entriesReturned,
-          holdTime, osLoad, tables, deadTabletServers, lookups, uptime, label,
-          getGoalState(monitor), getState(monitor), getNumBadTservers(monitor),
-          getServersShuttingDown(monitor), getDeadTservers(monitor), 
getDeadLoggers(monitor));
-    } else {
-      managerInformation = new ManagerInformation();
-    }
-    return managerInformation;
-  }
-
-  /**
-   * Returns the current state of the manager
-   *
-   * @return manager state
-   */
-  public static String getState(Monitor monitor) {
-    ManagerMonitorInfo mmi = monitor.getMmi();
-    if (mmi == null) {
-      return NO_MANAGERS;
-    }
-    return mmi.state.toString();
-  }
-
-  /**
-   * Returns the goal state of the manager
-   *
-   * @return manager goal state
-   */
-  public static String getGoalState(Monitor monitor) {
-    ManagerMonitorInfo mmi = monitor.getMmi();
-    if (mmi == null) {
-      return NO_MANAGERS;
-    }
-    return mmi.goalState.name();
-  }
-
-  /**
-   * Generates a dead server list as a JSON object
-   *
-   * @return dead server list
-   */
-  public static DeadServerList getDeadTservers(Monitor monitor) {
-    ManagerMonitorInfo mmi = monitor.getMmi();
-    if (mmi == null) {
-      return new DeadServerList();
-    }
-
-    DeadServerList deadServers = new DeadServerList();
-
-    String prop = 
monitor.getConfiguration().get(Property.MONITOR_DEAD_LIST_RG_EXCLUSIONS);
-    Set<String> exclusions = null;
-    if (StringUtils.isNotBlank(prop)) {
-      String[] rgs = prop.split(",");
-      exclusions = new HashSet<>(rgs.length);
-      for (String s : rgs) {
-        exclusions.add(s.trim());
-      }
-    }
-
-    // Add new dead servers to the list
-    for (DeadServer dead : mmi.deadTabletServers) {
-      if (exclusions == null || !exclusions.contains(dead.getResourceGroup())) 
{
-        deadServers
-            .addDeadServer(new DeadServerInformation(dead.server, 
dead.lastStatus, dead.status));
-      }
-    }
-    return deadServers;
-  }
-
-  /**
-   * Generates a dead logger list as a JSON object
-   *
-   * @return dead logger list
-   */
-  public static DeadLoggerList getDeadLoggers(Monitor monitor) {
-    ManagerMonitorInfo mmi = monitor.getMmi();
-    if (mmi == null) {
-      return new DeadLoggerList();
-    }
-
-    DeadLoggerList deadLoggers = new DeadLoggerList();
-    // Add new dead loggers to the list
-    for (DeadServer dead : mmi.deadTabletServers) {
-      deadLoggers
-          .addDeadLogger(new DeadLoggerInformation(dead.server, 
dead.lastStatus, dead.status));
-    }
-    return deadLoggers;
-  }
-
-  /**
-   * Generates bad tserver lists as a JSON object
-   *
-   * @return bad tserver list
-   */
-  public static BadTabletServers getNumBadTservers(Monitor monitor) {
-    ManagerMonitorInfo mmi = monitor.getMmi();
-    if (mmi == null) {
-      return new BadTabletServers();
-    }
-
-    Map<String,Byte> badServers = mmi.getBadTServers();
-
-    if (badServers == null || badServers.isEmpty()) {
-      return new BadTabletServers();
-    }
-
-    BadTabletServers readableBadServers = new BadTabletServers();
-    // Add new bad tservers to the list
-    for (Entry<String,Byte> badServer : badServers.entrySet()) {
-      try {
-        TabletServerState state = 
TabletServerState.getStateById(badServer.getValue());
-        readableBadServers
-            .addBadServer(new BadTabletServerInformation(badServer.getKey(), 
state.name()));
-      } catch (IndexOutOfBoundsException e) {
-        readableBadServers
-            .addBadServer(new BadTabletServerInformation(badServer.getKey(), 
"Unknown state"));
-      }
-    }
-    return readableBadServers;
-  }
-
-  /**
-   * Generates a JSON object of a list of servers shutting down
-   *
-   * @return servers shutting down list
-   */
-  public static ServersShuttingDown getServersShuttingDown(Monitor monitor) {
-    ManagerMonitorInfo mmi = monitor.getMmi();
-    ServersShuttingDown servers = new ServersShuttingDown();
-    if (mmi == null) {
-      return servers;
-    }
-
-    // Add new servers to the list
-    for (String server : mmi.serversShuttingDown) {
-      servers.addServerShuttingDown(new ServerShuttingDownInformation(server));
-    }
-    return servers;
-  }
-
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/BadTabletServerInformation.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/BadTabletServerInformation.java
deleted file mode 100644
index 5a39894335..0000000000
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/BadTabletServerInformation.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest.tservers;
-
-import jakarta.xml.bind.annotation.XmlAttribute;
-
-/**
- * Generates a bad tserver information
- *
- * @since 2.0.0
- */
-public class BadTabletServerInformation {
-
-  // Variable names become JSON keys
-  @XmlAttribute
-  public String id;
-
-  @XmlAttribute
-  public String status;
-
-  public BadTabletServerInformation() {}
-
-  /**
-   * Stores a bad tserver
-   *
-   * @param id ID of the tserver
-   * @param status Status of the tserver
-   */
-  public BadTabletServerInformation(String id, String status) {
-    this.id = id;
-    this.status = status;
-  }
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/BadTabletServers.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/BadTabletServers.java
deleted file mode 100644
index c3654b9c2a..0000000000
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/BadTabletServers.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest.tservers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Generates a list of bad tservers
- *
- * @since 2.0.0
- */
-public class BadTabletServers {
-
-  // Variable names become JSON keys
-  public List<BadTabletServerInformation> badTabletServer = new ArrayList<>();
-
-  /**
-   * Adds a new bad tserver to the list
-   *
-   * @param badTabletServer Bad tserver to add
-   */
-  public void addBadServer(BadTabletServerInformation badTabletServer) {
-    this.badTabletServer.add(badTabletServer);
-  }
-
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/DeadServerInformation.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/DeadServerInformation.java
deleted file mode 100644
index 6b78187976..0000000000
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/DeadServerInformation.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest.tservers;
-
-import jakarta.xml.bind.annotation.XmlAttribute;
-
-/**
- * Generates a dead tserver information
- *
- * @since 2.0.0
- */
-public class DeadServerInformation {
-
-  // Variable names become JSON keys
-  @XmlAttribute
-  public String server;
-
-  @XmlAttribute
-  public long lastStatus;
-
-  @XmlAttribute
-  public String status;
-
-  public DeadServerInformation() {}
-
-  /**
-   * Stores a new dead tserver
-   *
-   * @param server Location of the tserver
-   * @param lastStatus Last know status of the tserver
-   * @param status Current status of the tserver
-   */
-  public DeadServerInformation(String server, long lastStatus, String status) {
-    this.server = server;
-    this.lastStatus = lastStatus;
-    this.status = status;
-  }
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/DeadServerList.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/DeadServerList.java
deleted file mode 100644
index 64f930f1f6..0000000000
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/DeadServerList.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest.tservers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Generates a list of dead tservers
- *
- * @since 2.0.0
- */
-public class DeadServerList {
-
-  // Variable names become JSON keys
-  public List<DeadServerInformation> deadTabletServer = new ArrayList<>();
-
-  /**
-   * Adds a new dead tserver to the list
-   *
-   * @param deadTabletServer Dead tserver to add
-   */
-  public void addDeadServer(DeadServerInformation deadTabletServer) {
-    this.deadTabletServer.add(deadTabletServer);
-  }
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/ServerShuttingDownInformation.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/ServerShuttingDownInformation.java
deleted file mode 100644
index 4b6165696b..0000000000
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/ServerShuttingDownInformation.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest.tservers;
-
-import jakarta.xml.bind.annotation.XmlAttribute;
-
-/**
- * Generates a tserver shutting down
- *
- * @since 2.0.0
- */
-public class ServerShuttingDownInformation {
-
-  // Variable names become JSON keys
-  @XmlAttribute
-  public String id;
-
-  public ServerShuttingDownInformation() {}
-
-  /**
-   * Stores ID of the tserver shutting down
-   *
-   * @param id ID of the tserver shutting down
-   */
-  public ServerShuttingDownInformation(String id) {
-    this.id = id;
-  }
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/ServersShuttingDown.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/ServersShuttingDown.java
deleted file mode 100644
index ed00f3a981..0000000000
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/ServersShuttingDown.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest.tservers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Generates a list of servers shutting down
- *
- * @since 2.0.0
- */
-public class ServersShuttingDown {
-
-  // Variable names become JSON keys
-  public List<ServerShuttingDownInformation> server = new ArrayList<>();
-
-  /**
-   * Adds a new tserver to the list
-   *
-   * @param server TServer to add
-   */
-  public void addServerShuttingDown(ServerShuttingDownInformation server) {
-    this.server.add(server);
-  }
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
index b21407049c..c96cd611c3 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
@@ -50,7 +50,6 @@ import 
org.apache.accumulo.core.tabletserver.thrift.TabletStats;
 import org.apache.accumulo.core.trace.TraceUtil;
 import org.apache.accumulo.core.util.AddressUtil;
 import org.apache.accumulo.monitor.Monitor;
-import org.apache.accumulo.monitor.rest.manager.ManagerResource;
 import org.apache.accumulo.server.manager.state.DeadServerList;
 import org.apache.accumulo.server.util.ActionStatsUpdator;
 
@@ -89,8 +88,6 @@ public class TabletServerResource {
       tserverInfo.addTablet(new TabletServer(monitor, status));
     }
 
-    tserverInfo.addBadTabletServer(ManagerResource.getTables(monitor));
-
     return tserverInfo;
   }
 
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerWithTableInformation.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerWithTableInformation.java
deleted file mode 100644
index 30c8eb932f..0000000000
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerWithTableInformation.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.monitor.rest.tservers;
-
-import org.apache.accumulo.monitor.rest.tables.TableInformation;
-
-/**
- * Generates a tserver with table information
- *
- * @since 2.0.0
- */
-public class TabletServerWithTableInformation {
-
-  // Variable names become JSON keys
-  public TabletServerInformation tserver;
-  public TableInformation table;
-
-  public TabletServerWithTableInformation() {}
-
-  /**
-   * Stores a new tserver
-   *
-   * @param tserverInfo Tserver to add
-   * @param tableInfo Table information
-   */
-  public TabletServerWithTableInformation(TabletServerInformation tserverInfo,
-      TableInformation tableInfo) {
-    this.tserver = tserverInfo;
-    this.table = tableInfo;
-  }
-}
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServers.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServers.java
index 4b794b7899..231ca61e51 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServers.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServers.java
@@ -21,8 +21,6 @@ package org.apache.accumulo.monitor.rest.tservers;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.accumulo.monitor.rest.manager.ManagerInformation;
-
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
@@ -36,8 +34,6 @@ public class TabletServers {
 
   // Variable names become JSON keys
   public List<TabletServerInformation> servers = new ArrayList<>();
-  public List<BadTabletServerInformation> badServers = new ArrayList<>();
-  public List<DeadServerInformation> deadServers = new ArrayList<>();
 
   public TabletServers() {}
 
@@ -45,16 +41,6 @@ public class TabletServers {
     servers = new ArrayList<>(size);
   }
 
-  /**
-   * Adds bad and dead servers to the list
-   *
-   * @param info Manager information to get bad and dead server information
-   */
-  public void addBadTabletServer(ManagerInformation info) {
-    badServers = info.badTabletServers.badTabletServer;
-    deadServers = info.deadTabletServers.deadTabletServer;
-  }
-
   /**
    * Adds new tservers to the list
    *
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/functions.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/functions.js
index 2fbcf1f9f7..22622b69cc 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/functions.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/functions.js
@@ -26,6 +26,7 @@
 var QUANTITY_SUFFIX = ['', 'K', 'M', 'B', 'T', 'e15', 'e18', 'e21'];
 // Suffixes for size
 var SIZE_SUFFIX = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB'];
+const REST_V2_PREFIX = contextPath + 'rest-v2';
 
 // Override Length Menu options for dataTables
 if ($.fn && $.fn.dataTable) {
@@ -349,7 +350,7 @@ function doLoggedPostCall(call, callback, shouldSanitize) {
  * stores it on a sessionStorage variable
  */
 function getManager() {
-  return getJSONForTable(contextPath + 'rest/manager', 'manager');
+  return getJSONForTable(REST_V2_PREFIX + '/manager', 'manager');
 }
 
 /**
@@ -472,8 +473,6 @@ function clearAllTableCells(tableId) {
 
 // NEW REST CALLS
 
-const REST_V2_PREFIX = contextPath + 'rest-v2';
-
 /**
  * REST GET call for /problems,
  * stores it on a sessionStorage variable
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/manager.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/manager.js
index 11a966e205..b651975739 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/manager.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/manager.js
@@ -23,57 +23,94 @@
 */
 "use strict";
 
-var managerStatusTable, recoveryListTable;
+var managerStatusTable, recoveryListTable, managerStatus;
 
-function refreshManagerBanners() {
-  getStatus().then(function () {
-    const managerStatus = JSON.parse(sessionStorage.status).managerStatus;
-
-    // If manager status is error
-    if (managerStatus === 'ERROR') {
-      // show the manager error banner and hide table
-      $('#managerRunningBanner').show();
-      $('#managerStatus_wrapper').hide();
-    } else {
-      // otherwise, hide the error banner and show manager table
-      $('#managerRunningBanner').hide();
-      $('#managerStatus_wrapper').show();
-    }
-  });
-
-  getManager().then(function () {
-    const managerData = JSON.parse(sessionStorage.manager);
-    const managerState = managerData.managerState;
-    const managerGoalState = managerData.managerGoalState;
-
-    const isStateGoalSame = managerState === managerGoalState;
-
-    // if the manager state is normal and the goal state is the same as the 
current state,
-    // or of the manager is not running, hide the state banner and return early
-    if ((managerState === 'NORMAL' && isStateGoalSame) || managerState === 
null) {
-      $('#managerStateBanner').hide();
-      return;
-    }
-
-    // update the manager state banner message and show it
-    let bannerMessage = 'Manager state: ' + managerState;
-    if (!isStateGoalSame) {
-      // only show the goal state if it differs from the manager's current 
state
-      bannerMessage += '. Manager goal state: ' + managerGoalState;
-    }
-    $('#manager-banner-message').text(bannerMessage);
-    $('#managerStateBanner').show();
+function createManagerTable() {
+  // Generates the manager table
+  managerStatusTable = $('#managerStatusTable').DataTable({
+    "ajax": function (data, callback, settings) {
+      $.ajax({
+        url: contextPath + 'rest-v2/manager',
+        method: 'GET'
+      }).done(function (json) {
+        callback({
+          "data": [json]
+        });
+      }).fail(function (jqXHR, textStatus, errorThrown) {
+        // This is needed if the url is not yet available, but the manager is 
up. E.g., Short
+        // window where a 404 could occur, which would lead to DataTables 
error/alert w/out fail()
+        console.error("DataTables Ajax error :", errorThrown);
+        callback({
+          "data": []
+        });
+      });
+    },
+    "stateSave": true,
+    "searching": false,
+    "paging": false,
+    "info": false,
+    "columnDefs": [{
+        "targets": "timestamp",
+        "render": function (data, type) {
+          if (type === 'display') {
+            data = dateFormat(data);
+          }
+          return data;
+        }
+      },
+      {
+        "targets": "metrics",
+        "orderable": false,
+        "render": function () {
+          return "<a href=\"rest-v2/manager/metrics\">Metrics</a>";
+        }
+      }
+    ],
+    "columns": [{
+        "data": "host"
+      },
+      {
+        "data": "resourceGroup"
+      },
+      {
+        "data": "timestamp"
+      },
+      {
+        "data": "metrics"
+      }
+    ]
   });
+}
 
+function refreshManagerBanners() {
+  // If manager status is error
+  if (managerStatus === 'ERROR') {
+    // show the manager error banner and hide manager table
+    $('#managerRunningBanner').show();
+    $('#managerStatusTable').hide();
+  } else {
+    // otherwise, hide the error banner and show manager table
+    $('#managerRunningBanner').hide();
+    $('#managerStatusTable').show();
+  }
 }
 
 /**
  * Populates tables with the new information
  */
 function refreshManagerTables() {
-  ajaxReloadTable(managerStatusTable);
-  refreshManagerBanners();
-  ajaxReloadTable(recoveryListTable);
+  getStatus().then(function () {
+    managerStatus = JSON.parse(sessionStorage.status).managerStatus;
+    refreshManagerBanners();
+    if (managerStatusTable === undefined && managerStatus !== 'ERROR') {
+      // Can happen if the manager is dead on first loading the page, but 
later comes back online
+      // while using auto-refresh
+      createManagerTable();
+    } else if (managerStatus !== 'ERROR') {
+      ajaxReloadTable(managerStatusTable);
+    }
+    ajaxReloadTable(recoveryListTable);
+  });
 }
 
 /*
@@ -92,146 +129,62 @@ function refreshManagerTables() {
  */
 $(function () {
 
-  // Generates the manager table
-  managerStatusTable = $('#managerStatus').DataTable({
-    "ajax": {
-      "url": contextPath + 'rest/manager',
-      "dataSrc": function (json) {
-        // the data needs to be in an array to work with DataTables
-        var arr = [json];
-        return arr;
-      }
-    },
-    "stateSave": true,
-    "searching": false,
-    "paging": false,
-    "info": false,
-    "columnDefs": [{
-        "targets": "big-num",
-        "render": function (data, type) {
-          if (type === 'display') {
-            data = bigNumberForQuantity(data);
-          }
-          return data;
-        }
-      },
-      {
-        "targets": "big-num-rounded",
-        "render": function (data, type) {
-          if (type === 'display') {
-            data = bigNumberForQuantity(Math.round(data));
-          }
-          return data;
-        }
-      },
-      {
-        "targets": "duration",
-        "render": function (data, type) {
-          if (type === 'display') {
-            data = timeDuration(parseInt(data, 10));
+  getStatus().then(function () {
+    managerStatus = JSON.parse(sessionStorage.status).managerStatus;
+    if (managerStatus !== 'ERROR') {
+      createManagerTable();
+    }
+
+    // Generates the recovery table
+    recoveryListTable = $('#recoveryList').DataTable({
+      "ajax": {
+        "url": contextPath + 'rest/tservers/recovery',
+        "dataSrc": function (data) {
+          data = data.recoveryList;
+          if (data.length === 0) {
+            console.info('Recovery list is empty, hiding recovery table');
+            $('#recoveryList_wrapper').hide();
+          } else {
+            $('#recoveryList_wrapper').show();
           }
           return data;
         }
-      }
-    ],
-    "columns": [{
-        "data": "manager"
-      },
-      {
-        "data": "onlineTabletServers"
-      },
-      {
-        "data": "totalTabletServers"
       },
-      {
-        "data": "lastGC",
-        "type": "html",
-        "render": function (data, type) {
-          if (type === 'display') {
-            if (data !== 'Waiting') {
-              data = dateFormat(parseInt(data, 10));
+      "columnDefs": [{
+          "targets": "duration",
+          "render": function (data, type) {
+            if (type === 'display') {
+              data = timeDuration(parseInt(data, 10));
             }
-            data = '<a href="gc">' + data + '</a>';
+            return data;
           }
-          return data;
-        }
-      },
-      {
-        "data": "tablets"
-      },
-      {
-        "data": "unassignedTablets"
-      },
-      {
-        "data": "numentries"
-      },
-      {
-        "data": "ingestrate"
-      },
-      {
-        "data": "entriesRead"
-      },
-      {
-        "data": "queryrate"
-      },
-      {
-        "data": "holdTime"
-      },
-      {
-        "data": "osload"
-      },
-    ]
-  });
-
-  // Generates the recovery table
-  recoveryListTable = $('#recoveryList').DataTable({
-    "ajax": {
-      "url": contextPath + 'rest/tservers/recovery',
-      "dataSrc": function (data) {
-        data = data.recoveryList;
-        if (data.length === 0) {
-          console.info('Recovery list is empty, hiding recovery table');
-          $('#recoveryList_wrapper').hide();
-        } else {
-          $('#recoveryList_wrapper').show();
-        }
-        return data;
-      }
-    },
-    "columnDefs": [{
-        "targets": "duration",
-        "render": function (data, type) {
-          if (type === 'display') {
-            data = timeDuration(parseInt(data, 10));
+        },
+        {
+          "targets": "percent",
+          "render": function (data, type) {
+            if (type === 'display') {
+              data = (data * 100).toFixed(2) + '%';
+            }
+            return data;
           }
-          return data;
         }
-      },
-      {
-        "targets": "percent",
-        "render": function (data, type) {
-          if (type === 'display') {
-            data = (data * 100).toFixed(2) + '%';
-          }
-          return data;
+      ],
+      "stateSave": true,
+      "columns": [{
+          "data": "server"
+        },
+        {
+          "data": "log"
+        },
+        {
+          "data": "time"
+        },
+        {
+          "data": "progress"
         }
-      }
-    ],
-    "stateSave": true,
-    "columns": [{
-        "data": "server"
-      },
-      {
-        "data": "log"
-      },
-      {
-        "data": "time"
-      },
-      {
-        "data": "progress"
-      }
-    ]
-  });
+      ]
+    });
 
-  refreshManagerTables();
+    refreshManagerTables();
+  });
 });
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/navbar.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/navbar.js
index 7559378336..2070a32065 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/navbar.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/navbar.js
@@ -64,59 +64,47 @@ function updateElementStatus(elementId, status) {
  * @param {JSON} statusData object containing the status info for the servers
  */
 function updateServerNotifications(statusData) {
-  getManager().then(function () {
-
-    // gather information about the manager
-    const managerData = JSON.parse(sessionStorage.manager);
-    const managerState = managerData.managerState;
-    const managerGoalState = managerData.managerGoalState;
-
-    const isSafeMode = managerState === 'SAFE_MODE' || managerGoalState === 
'SAFE_MODE';
-    const isCleanStop = managerState === 'CLEAN_STOP' || managerGoalState === 
'CLEAN_STOP';
-
-    // setting manager status notification
-    if (statusData.managerStatus === STATUS.ERROR || isCleanStop) {
-      updateElementStatus('managerStatusNotification', STATUS.ERROR);
-    } else if (statusData.managerStatus === STATUS.WARN || isSafeMode) {
-      updateElementStatus('managerStatusNotification', STATUS.WARN);
-    } else if (statusData.managerStatus === STATUS.OK) {
-      updateElementStatus('managerStatusNotification', STATUS.OK);
-    } else {
-      console.error('Unrecognized manager state: ' + statusData.managerStatus 
+ '. Could not properly set manager status notification.');
-    }
-
-    // setting tserver status notification
-    if (statusData.tServerStatus === STATUS.OK) {
-      updateElementStatus('serverStatusNotification', STATUS.OK);
-    } else if (statusData.tServerStatus === STATUS.WARN) {
-      updateElementStatus('serverStatusNotification', STATUS.WARN);
-    } else {
-      updateElementStatus('serverStatusNotification', STATUS.ERROR);
-    }
+  // setting manager status notification
+  if (statusData.managerStatus === STATUS.ERROR) {
+    updateElementStatus('managerStatusNotification', STATUS.ERROR);
+  } else if (statusData.managerStatus === STATUS.WARN) {
+    updateElementStatus('managerStatusNotification', STATUS.WARN);
+  } else if (statusData.managerStatus === STATUS.OK) {
+    updateElementStatus('managerStatusNotification', STATUS.OK);
+  } else {
+    console.error('Unrecognized manager state: ' + statusData.managerStatus + 
'. Could not properly set manager status notification.');
+  }
 
-    // setting gc status notification
-    if (statusData.gcStatus === STATUS.OK) {
-      updateElementStatus('gcStatusNotification', STATUS.OK);
-    } else {
-      updateElementStatus('gcStatusNotification', STATUS.ERROR);
-    }
+  // setting tserver status notification
+  if (statusData.tServerStatus === STATUS.OK) {
+    updateElementStatus('serverStatusNotification', STATUS.OK);
+  } else if (statusData.tServerStatus === STATUS.WARN) {
+    updateElementStatus('serverStatusNotification', STATUS.WARN);
+  } else {
+    updateElementStatus('serverStatusNotification', STATUS.ERROR);
+  }
 
-    // Setting overall servers status notification
-    if ((statusData.managerStatus === STATUS.OK && !isSafeMode && 
!isCleanStop) &&
-      statusData.tServerStatus === STATUS.OK &&
-      statusData.gcStatus === STATUS.OK) {
-      updateElementStatus('statusNotification', STATUS.OK);
-    } else if (statusData.managerStatus === STATUS.ERROR || isCleanStop ||
-      statusData.tServerStatus === STATUS.ERROR ||
-      statusData.gcStatus === STATUS.ERROR) {
-      updateElementStatus('statusNotification', STATUS.ERROR);
-    } else if (statusData.managerStatus === STATUS.WARN || isSafeMode ||
-      statusData.tServerStatus === STATUS.WARN ||
-      statusData.gcStatus === STATUS.WARN) {
-      updateElementStatus('statusNotification', STATUS.WARN);
-    }
+  // setting gc status notification
+  if (statusData.gcStatus === STATUS.OK) {
+    updateElementStatus('gcStatusNotification', STATUS.OK);
+  } else {
+    updateElementStatus('gcStatusNotification', STATUS.ERROR);
+  }
 
-  });
+  // Setting overall servers status notification
+  if (statusData.managerStatus === STATUS.OK &&
+    statusData.tServerStatus === STATUS.OK &&
+    statusData.gcStatus === STATUS.OK) {
+    updateElementStatus('statusNotification', STATUS.OK);
+  } else if (statusData.managerStatus === STATUS.ERROR ||
+    statusData.tServerStatus === STATUS.ERROR ||
+    statusData.gcStatus === STATUS.ERROR) {
+    updateElementStatus('statusNotification', STATUS.ERROR);
+  } else if (statusData.managerStatus === STATUS.WARN ||
+    statusData.tServerStatus === STATUS.WARN ||
+    statusData.gcStatus === STATUS.WARN) {
+    updateElementStatus('statusNotification', STATUS.WARN);
+  }
 }
 
 /**
@@ -140,7 +128,6 @@ function refreshSidebar() {
  */
 function refreshNavBar() {
   refreshSidebar();
-  updateSystemAlerts();
 }
 
 /**
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/overview.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/overview.js
index f4a9b19679..a0255e32c9 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/overview.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/overview.js
@@ -29,8 +29,16 @@ $(function () {
  * Makes the REST calls, generates the table with the new information
  */
 function refreshOverview() {
-  getManager().then(function () {
-    refreshManagerTable();
+  getStatus().then(function () {
+    var managerStatus = JSON.parse(sessionStorage.status).managerStatus;
+    // If the manager is down, show only the first row, otherwise refresh old 
values
+    $('#manager tr td').hide();
+    if (managerStatus === 'ERROR') {
+      $('#manager tr td:first').show();
+    } else {
+      $('#manager tr td:not(:first)').show();
+      refreshManagerTable();
+    }
   });
 }
 
@@ -45,24 +53,13 @@ function refresh() {
  * Refreshes the manager table
  */
 function refreshManagerTable() {
-  var data = sessionStorage.manager === undefined ? [] : 
JSON.parse(sessionStorage.manager);
-
-  $('#manager tr td:first').hide();
-  $('#manager tr td').hide();
-
-  // If the manager is down, show the first row, otherwise refresh old values
-  if (data.length === 0 || data.manager === 'No Managers running') {
-    $('#manager tr td:first').show();
-  } else {
-    $('#manager tr td:not(:first)').show();
+  getManager().then(function () {
+    var data = JSON.parse(sessionStorage.manager);
     var table = $('#manager td.right');
 
-    table.eq(0).html(bigNumberForQuantity(data.tables));
-    table.eq(1).html(bigNumberForQuantity(data.totalTabletServers));
-    table.eq(2).html(bigNumberForQuantity(data.deadTabletServersCount));
-    table.eq(3).html(bigNumberForQuantity(data.tablets));
-    table.eq(4).html(bigNumberForQuantity(data.numentries));
-    table.eq(5).html(bigNumberForQuantity(data.lookups));
-    table.eq(6).html(timeDuration(data.uptime));
-  }
+    table.eq(0).html(data.host);
+    table.eq(1).html(data.resourceGroup);
+    table.eq(2).html(dateFormat(data.timestamp));
+    table.eq(3).html('<a href="' + contextPath + 
'rest-v2/manager/metrics">Metrics</a>');
+  });
 }
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/systemAlert.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/systemAlert.js
deleted file mode 100644
index 1aa876a688..0000000000
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/systemAlert.js
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-"use strict";
-
-/**
- * Add new system-wide messages to this object.
- */
-const alertMap = {
-  /**
-   * @property {string} message - The message to display within the alert 
banner.
-   * @property {string} id - Short string used to identify the message.
-   * @property {string} alertClass - The bootstrap class for which alert style 
to apply.
-   * @property {string} notificationClass - The color class to apply to the 
status notification in the navbar.
-   */
-  CLEAN_STOP: {
-    message: "The manager state is CLEAN_STOP.",
-    id: "cleanStop",
-    alertClass: "alert-danger",
-    notificationClass: "error-inv"
-  },
-  SAFE_MODE: {
-    message: "The manager state is SAFE_MODE.",
-    id: "safeMode",
-    alertClass: "alert-warning",
-    notificationClass: "warning-inv"
-  }
-};
-
-/**
- * Idempotently append an alert message
- */
-function appendAlertMessage(alertInfo) {
-  if (alertInfo && $('#' + alertInfo.id).length === 0) {
-    const li = $('<li></li>').text(alertInfo.message).attr('id', alertInfo.id);
-    $("#alertMessages").append(li);
-  }
-}
-
-function removeAlertMessage(alertInfo) {
-  if (alertInfo) {
-    $('#' + alertInfo.id).remove();
-  }
-}
-
-/**
- * Set the class for system alert.
- * 
- * @param {string} alertClass - Class to be applied to system alert.
- */
-function setAlertClass(alertClass) {
-  $("#systemAlert").removeClass("alert-warning 
alert-danger").addClass(alertClass);
-}
-
-/**
- * Set the class for notification status.
- * 
- * @param {string} notificationClass - Class to be applied to notification 
status.
- */
-function setNotificationClass(notificationClass) {
-  $("#alertStatus").removeClass("warning error").addClass(notificationClass);
-}
-
-function updateAlertVisibility() {
-  if ($("#alertMessages").children().length === 0) {
-    $("#systemAlert").hide();
-    $("#alertStatus").hide();
-  } else if (localStorage.getItem('alertDismissed') === 'true') {
-    $("#systemAlert").hide();
-  } else {
-    $("#systemAlert").show();
-  }
-}
-
-/**
- * Appends or removes an alert message based on the provided parameters.
- * 
- * @param {string} alertType - Type of alert (e.g., 'CLEAN_STOP', 'SAFE_MODE').
- * @param {string} operation - Operation to perform ('apply' or 'remove').
- */
-function handleAlert(alertType, operation) {
-  const alertInfo = alertMap[alertType];
-  switch (operation) {
-  case 'apply':
-    appendAlertMessage(alertInfo);
-    setAlertClass(alertInfo.alertClass);
-    setNotificationClass(alertInfo.notificationClass);
-    $("#alertStatus").show();
-    break;
-  case 'remove':
-    removeAlertMessage(alertInfo);
-    break;
-  default:
-    console.error('Alert operation not recognized: ' + operation);
-    return;
-  }
-
-  updateAlertVisibility();
-}
-
-function updateManagerAlerts() {
-  getManager().then(function () {
-
-    // gather information about the manager
-    const managerData = JSON.parse(sessionStorage.manager);
-    const managerState = managerData.managerState;
-    const managerGoalState = managerData.managerGoalState;
-
-    const isSafeMode = managerState === 'SAFE_MODE' || managerGoalState === 
'SAFE_MODE';
-    const isCleanStop = managerState === 'CLEAN_STOP' || managerGoalState === 
'CLEAN_STOP';
-
-    const currentState = isCleanStop ? 'CLEAN_STOP' : isSafeMode ? 'SAFE_MODE' 
: null;
-    const prevStoredState = localStorage.getItem('currentState');
-
-    if (currentState !== prevStoredState) {
-      localStorage.removeItem('alertDismissed');
-      localStorage.setItem('currentState', currentState);
-    }
-
-    if (isCleanStop) {
-      handleAlert('SAFE_MODE', 'remove');
-      handleAlert('CLEAN_STOP', 'apply');
-    } else if (isSafeMode) {
-      handleAlert('CLEAN_STOP', 'remove');
-      handleAlert('SAFE_MODE', 'apply');
-    } else {
-      handleAlert('CLEAN_STOP', 'remove');
-      handleAlert('SAFE_MODE', 'remove');
-    }
-  }).catch(function () {
-    console.error('Failed to retrieve manager data');
-  })
-}
-
-/**
- * Pulls the neccesarry data then refreshes the system wide alert banner and 
status notification
- */
-function updateSystemAlerts() {
-  updateManagerAlerts();
-}
-
-$(function () {
-
-  // dismiss the alert when clicked
-  $('#systemAlertCloseButton').click(function () {
-    $("#systemAlert").hide();
-    localStorage.setItem('alertDismissed', 'true');
-  });
-
-  // when clicked, the status icon will bring the alert back up
-  $('#alertStatus').click(function () {
-    $("#systemAlert").show();
-    localStorage.removeItem('alertDismissed');
-  });
-
-  updateSystemAlerts();
-});
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/tservers.js
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/tservers.js
index 1d9b11384d..d879c2d02b 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/tservers.js
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/resources/js/tservers.js
@@ -18,12 +18,12 @@
  */
 /* JSLint global definitions */
 /*global
-    $, document, sessionStorage, getTServers, clearDeadServers, refreshNavBar,
-    getRecoveryList, bigNumberForQuantity, timeDuration, dateFormat, 
ajaxReloadTable
+    $, sessionStorage, getTServers, getRecoveryList, bigNumberForQuantity, 
timeDuration,
+    ajaxReloadTable
 */
 "use strict";
 
-var tserversTable, deadTServersTable, badTServersTable;
+var tserversTable;
 var recoveryList = [];
 
 /**
@@ -69,41 +69,11 @@ function refreshTServersTable() {
   ajaxReloadTable(tserversTable);
 }
 
-/**
- * Refreshes data in the deadtservers table
- */
-function refreshDeadTServersTable() {
-  ajaxReloadTable(deadTServersTable);
-
-  // Only show the table if there are non-empty rows
-  if ($('#deadtservers tbody .dataTables_empty').length) {
-    $('#deadtservers_wrapper').hide();
-  } else {
-    $('#deadtservers_wrapper').show();
-  }
-}
-
-/**
- * Refreshes data in the badtservers table
- */
-function refreshBadTServersTable() {
-  ajaxReloadTable(badTServersTable);
-
-  // Only show the table if there are non-empty rows
-  if ($('#badtservers tbody .dataTables_empty').length) {
-    $('#badtservers_wrapper').hide();
-  } else {
-    $('#badtservers_wrapper').show();
-  }
-}
-
 /**
  * Makes the REST calls, generates the tables with the new information
  */
 function refreshTServers() {
   getTServers().then(function () {
-    refreshBadTServersTable();
-    refreshDeadTServersTable();
     refreshTServersTable();
   });
 }
@@ -115,17 +85,6 @@ function refresh() {
   refreshTServers();
 }
 
-/**
- * Makes the REST POST call to clear dead table server
- *
- * @param {string} server Dead TServer to clear
- */
-function clearDeadTServers(server) {
-  clearDeadServers(server);
-  refreshTServers();
-  refreshNavBar();
-}
-
 /**
  * Creates initial tables
  */
@@ -260,68 +219,5 @@ $(function () {
     }
   });
 
-  // Create a table for deadServers list
-  deadTServersTable = $('#deadtservers').DataTable({
-    "ajax": {
-      "url": contextPath + 'rest/tservers',
-      "dataSrc": "deadServers"
-    },
-    "stateSave": true,
-    "columnDefs": [{
-      "targets": "date",
-      "render": function (data, type) {
-        if (type === 'display' && data > 0) {
-          data = dateFormat(data);
-        }
-        return data;
-      }
-    }],
-    "columns": [{
-        "data": "server"
-      },
-      {
-        "data": "lastStatus"
-      },
-      {
-        "data": "status"
-      },
-      {
-        "data": "server",
-        "type": "html",
-        "render": function (data, type) {
-          if (type === 'display') {
-            data = '<a href="javascript:clearDeadTServers(\'' + data + 
'\');">clear</a>';
-          }
-          return data;
-        }
-      }
-    ]
-  });
-
-  // Create a table for badServers list
-  badTServersTable = $('#badtservers').DataTable({
-    "ajax": {
-      "url": contextPath + 'rest/tservers',
-      "dataSrc": "badServers"
-    },
-    "stateSave": true,
-    "columnDefs": [{
-      "targets": "date",
-      "render": function (data, type) {
-        if (type === 'display' && data > 0) {
-          data = dateFormat(data);
-        }
-        return data;
-      }
-    }],
-    "columns": [{
-        "data": "id"
-      },
-      {
-        "data": "status"
-      }
-    ]
-  });
-
   refreshTServers();
 });
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/default.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/default.ftl
index 3d802c533c..24cf215268 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/default.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/default.ftl
@@ -58,7 +58,6 @@
       <script src="resources/js/${js}"></script>
     </#if>
     <script src="resources/js/navbar.js"></script>
-    <script src="resources/js/systemAlert.js"></script>
     <script src="resources/js/modals.js"></script>
   </head>
 
@@ -66,7 +65,6 @@
     <#include "navbar.ftl">
 
     <div id="main" class="container-fluid">
-      <#include "systemAlert.ftl">
       <#include "${template}">
     </div>
 
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/manager.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/manager.ftl
index a26b3b4616..1fae7a5931 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/manager.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/manager.ftl
@@ -26,25 +26,14 @@
     <div id="managerRunningBanner" style="display: none;">
         <div class="alert alert-danger" role="alert">Manager Server Not 
Running</div>
     </div>
-    <div id="managerStateBanner" style="display: none;">
-        <div id="manager-banner-message" class="alert alert-warning" 
role="alert"></div>
-    </div>
-    <table id="managerStatus" class="table caption-top table-bordered 
table-striped table-condensed">
+    <table id="managerStatusTable" class="table caption-top table-bordered 
table-striped table-condensed">
         <caption><span class="table-caption">${title}</span><br /></caption>
         <thead>
             <tr>
-                <th class="firstcell" title="The hostname of the manager 
server">Hostname</th>
-                <th title="Number of tablet servers currently 
available">Online TServers&nbsp;</th>
-                <th title="The total number of tablet servers 
configured">TotalTServers&nbsp;</th>
-                <th title="The last time files were cleaned-up from 
HDFS.">Last&nbsp;GC</th>
-                <th class="big-num" title="Tables are broken down into ranges 
of rows called tablets.">Tablets</th>
-                <th class="big-num">Unassigned Tablets&nbsp;</th>
-                <th class="big-num" title="The total number of key/value pairs 
in Accumulo">Entries</th>
-                <th class="big-num-rounded" title="The number of Key/Value 
pairs inserted. (Note that deletes are considered inserted)">Ingest</th>
-                <th class="big-num-rounded" title="The total number of 
Key/Value pairs read on the server side.  Not all may be returned because of 
filtering.">Entries Read</th>
-                <th class="big-num-rounded" title="The total number of 
Key/Value pairs returned as a result of scans.">Entries Returned</th>
-                <th class="duration" title="The maximum amount of time that 
ingest has been held across all servers due to a lack of memory to store the 
records">Hold&nbsp;Time</th>
-                <th class="big-num" title="The Unix one minute load average. 
The average number of processes in the run queue over a one minute 
interval.">OS&nbsp;Load</th>
+                <th class="host" title="The hostname:port of the manager 
server">Server</th>
+                <th class="resourceGroup" title="The resource group of the 
manager server">Resource&nbsp;Group</th>
+                <th class="timestamp" title="The last time data was retrieved 
from the manager server">Last&nbsp;Contact</th>
+                <th class="metrics" title="The metrics of the manager 
server">Metrics</th>
             </tr>
         </thead>
         <tbody></tbody>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/overview.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/overview.ftl
index 1763c3f2a5..55a6f2cad5 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/overview.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/overview.ftl
@@ -34,31 +34,19 @@
                 <td colspan="2" class="center" style="display:none;"><span 
class="label label-danger nowrap">Manager is Down</span></td>
               </tr>
               <tr>
-                <td class="left"><a href="tables">Tables</a></td>
+                <td class="left">Server</td>
                 <td class="right"></td>
               </tr>
               <tr>
-                <td class="left"><a 
href="tservers">Total&nbsp;Known&nbsp;Tablet&nbsp;Servers</a></td>
+                <td class="left">Resource&nbsp;Group</td>
                 <td class="right"></td>
               </tr>
               <tr>
-                <td class="left"><a 
href="tservers">Dead&nbsp;Tablet&nbsp;Servers</a></td>
+                <td class="left">Last&nbsp;Contact</td>
                 <td class="right"></td>
               </tr>
               <tr>
-                <td class="left">Tablets</td>
-                <td class="right"></td>
-              </tr>
-              <tr>
-                <td class="left">Entries</td>
-                <td class="right"></td>
-              </tr>
-              <tr>
-                <td class="left">Lookups</td>
-                <td class="right"></td>
-              </tr>
-              <tr>
-                <td class="left">Uptime</td>
+                <td class="left">Metrics</td>
                 <td class="right"></td>
               </tr>
             </thead>
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/systemAlert.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/systemAlert.ftl
deleted file mode 100644
index 94adc19a44..0000000000
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/systemAlert.ftl
+++ /dev/null
@@ -1,31 +0,0 @@
-<#--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      https://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-<div id="systemAlert" class="alert position-relative" style="display: none;" 
role="alert">
-    <button id="systemAlertCloseButton" type="button" class="btn-close 
position-absolute m-2 top-0 end-0" aria-label="Close"></button>
-    <div class="d-flex">
-        <h3 class="d-flex align-items-center me-3">
-            <span class="bi bi-exclamation-triangle-fill"></span>
-        </h3>
-        <ul id="alertMessages" class="mb-0 flex-grow-1">
-            <!-- Messages will be appended here -->
-        </ul>
-    </div>
-</div>
\ No newline at end of file
diff --git 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tservers.ftl
 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tservers.ftl
index 290fc0ce78..0a5904b102 100644
--- 
a/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tservers.ftl
+++ 
b/server/monitor/src/main/resources/org/apache/accumulo/monitor/templates/tservers.ftl
@@ -49,33 +49,5 @@
           </thead>
           <tbody></tbody>
         </table>
-        <br />
-        <table id="badtservers" class="table caption-top table-bordered 
table-striped table-condensed">
-          <caption><span class="table-caption">Non-Functioning Tablet 
Servers</span><br />
-            <span class="table-subcaption">The following tablet servers 
reported a status other than Online.</span><br />
-          </caption>
-          <thead>
-            <tr>
-              <th>Server</th>
-              <th>Status</th>
-            </tr>
-          </thead>
-          <tbody></tbody>
-        </table>
-        <br />
-        <table id="deadtservers" class="table caption-top table-bordered 
table-striped table-condensed">
-          <caption><span class="table-caption">Dead Tablet Servers</span><br />
-            <span class="table-subcaption">The following tablet servers are no 
longer reachable.</span><br />
-          </caption>
-          <thead>
-            <tr>
-              <th>Server</th>
-              <th class="date">Last Updated</th>
-              <th>Event</th>
-              <th>Clear</th>
-            </tr>
-          </thead>
-          <tbody></tbody>
-        </table>
       </div>
     </div>

Reply via email to