@Override
  public ObjectNode execute(final HttpServletRequest request) throws Exception {

    String userName = request.getUserPrincipal().getName();

    // get cluster object
    Cluster cluster = repository.getCluster();

    // json object to be sent as response
    ObjectNode responseJSON = mapper.createObjectNode();

    JsonNode requestDataJSON = mapper.readTree(request.getParameter("pulseData"));
    String memberName = requestDataJSON.get("MemberDetails").get("memberName").textValue();

    Cluster.Member clusterMember = cluster.getMember(makeCompliantName(memberName));
    if (clusterMember != null) {
      responseJSON.put("memberId", clusterMember.getId());
      responseJSON.put("name", clusterMember.getName());
      responseJSON.put("host", clusterMember.getHost());
      responseJSON.put("clusterId", cluster.getId());
      responseJSON.put("clusterName", cluster.getServerName());
      responseJSON.put("userName", userName);
      double loadAvg = clusterMember.getLoadAverage();
      responseJSON.put("loadAverage", TWO_PLACE_DECIMAL_FORMAT.format(loadAvg));
      responseJSON.put("sockets", clusterMember.getTotalFileDescriptorOpen());
      responseJSON.put("threads", clusterMember.getNumThreads());
      responseJSON.put("offHeapFreeSize", clusterMember.getOffHeapFreeSize());
      responseJSON.put("offHeapUsedSize", clusterMember.getOffHeapUsedSize());
      responseJSON.put("regionsCount", clusterMember.getMemberRegionsList().length);

      // Number of member clients
      responseJSON.put("numClients", clusterMember.getMemberClientsHMap().size());

      long diskUsageVal = clusterMember.getTotalDiskUsage();
      double diskUsage = diskUsageVal / 1024D;

      responseJSON.put("diskStorageUsed", TWO_PLACE_DECIMAL_FORMAT.format(diskUsage));

      Cluster.Alert[] alertsList = cluster.getAlertsList();

      String status = "Normal";

      for (Cluster.Alert alert : alertsList) {
        if (clusterMember.getName().equals(alert.getMemberName())) {
          if (alert.getSeverity() == Cluster.Alert.SEVERE) {
            status = "Severe";
            break;
          } else if (alert.getSeverity() == Cluster.Alert.ERROR) {
            status = "Error";
          } else if (alert.getSeverity() == Cluster.Alert.WARNING) {
            status = "Warning";
          }
        }
      }

      responseJSON.put("status", status);

    } else {
      responseJSON.put("errorOnMember", "Member [" + memberName + "] is not available");
    }

    // Send json response
    return responseJSON;
  }
Class MemberDetailsService

This class contains implementations of getting Memeber's Statistics.

@since GemFire version 7.5
geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/service/MemberDetailsService.java