This is an automated email from the ASF dual-hosted git repository.
houyu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bigtop-manager.git
The following commit(s) were added to refs/heads/main by this push:
new 39dc8c7f BIGTOP-4505: Add charts template for ZooKeeper (#276)
39dc8c7f is described below
commit 39dc8c7fed652dca506ae997f82ecf57833965e4
Author: Zhiguo Wu <[email protected]>
AuthorDate: Thu Oct 9 19:12:26 2025 +0800
BIGTOP-4505: Add charts template for ZooKeeper (#276)
---
.../server/controller/MetricsController.java | 20 +++++---
.../ChartValueTypeEnum.java} | 25 +++++++---
.../dto/ServiceChartDTO.java} | 21 +++++---
.../vo/ServiceMetricsChartVO.java} | 18 ++++---
.../vo/ServiceMetricsSeriesVO.java} | 16 +++---
.../vo/ServiceMetricsVO.java} | 14 +++---
.../manager/server/prometheus/PrometheusProxy.java | 58 +++++++++++++++++++++-
.../manager/server/service/MetricsService.java | 7 ++-
.../server/service/impl/MetricsServiceImpl.java | 31 ++++++++++--
.../bigtop/manager/server/utils/StackUtils.java | 15 ++++++
.../bigtop/3.3.0/services/zookeeper/charts.json | 34 +++++++++++++
.../server/controller/MetricsControllerTest.java | 8 +--
.../stack/bigtop/v3_3_0/hadoop/HadoopParams.java | 12 +++--
.../stack/bigtop/v3_3_0/hadoop/HadoopSetup.java | 2 +-
14 files changed, 228 insertions(+), 53 deletions(-)
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/MetricsController.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/MetricsController.java
index 65fb6a1e..8a26cdb0 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/MetricsController.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/MetricsController.java
@@ -20,6 +20,7 @@ package org.apache.bigtop.manager.server.controller;
import org.apache.bigtop.manager.server.model.vo.ClusterMetricsVO;
import org.apache.bigtop.manager.server.model.vo.HostMetricsVO;
+import org.apache.bigtop.manager.server.model.vo.ServiceMetricsVO;
import org.apache.bigtop.manager.server.service.MetricsService;
import org.apache.bigtop.manager.server.utils.ResponseEntity;
@@ -42,17 +43,24 @@ public class MetricsController {
@Resource
private MetricsService metricsService;
- @Operation(summary = "host info", description = "host info query")
+ @Operation(summary = "host metrics", description = "host metrics")
@GetMapping("/hosts/{id}")
- public ResponseEntity<HostMetricsVO> queryAgentInfo(
+ public ResponseEntity<HostMetricsVO> hostMetrics(
@RequestParam(value = "interval", defaultValue = "1m") String
interval, @PathVariable Long id) {
- return ResponseEntity.success(metricsService.queryAgentsInfo(id,
interval));
+ return ResponseEntity.success(metricsService.hostMetrics(id,
interval));
}
- @Operation(summary = "cluster info", description = "cluster info query")
+ @Operation(summary = "cluster metrics", description = "cluster metrics")
@GetMapping("/clusters/{id}")
- public ResponseEntity<ClusterMetricsVO> queryCluster(
+ public ResponseEntity<ClusterMetricsVO> clusterMetrics(
@RequestParam(value = "interval", defaultValue = "1m") String
interval, @PathVariable Long id) {
- return ResponseEntity.success(metricsService.queryClustersInfo(id,
interval));
+ return ResponseEntity.success(metricsService.clusterMetrics(id,
interval));
+ }
+
+ @Operation(summary = "service metrics", description = "service metrics")
+ @GetMapping("/services/{id}")
+ public ResponseEntity<ServiceMetricsVO> serviceMetrics(
+ @RequestParam(value = "interval", defaultValue = "1m") String
interval, @PathVariable Long id) {
+ return ResponseEntity.success(metricsService.serviceMetrics(id,
interval));
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/ChartValueTypeEnum.java
similarity index 60%
copy from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/ChartValueTypeEnum.java
index 8e25da1a..678d48be 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/ChartValueTypeEnum.java
@@ -16,14 +16,27 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.service;
+package org.apache.bigtop.manager.server.enums;
-import org.apache.bigtop.manager.server.model.vo.ClusterMetricsVO;
-import org.apache.bigtop.manager.server.model.vo.HostMetricsVO;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
-public interface MetricsService {
+public enum ChartValueTypeEnum {
+ NUMBER,
+ PERCENT,
+ BYTE,
+ MILLISECOND,
+ BPS, // Byte per second
+ NPS // Number per second
+;
- HostMetricsVO queryAgentsInfo(Long id, String interval);
+ @JsonCreator
+ public static ChartValueTypeEnum fromString(String value) {
+ return ChartValueTypeEnum.valueOf(value.toUpperCase());
+ }
- ClusterMetricsVO queryClustersInfo(Long clusterId, String interval);
+ @JsonValue
+ public String toLowerCase() {
+ return name().toLowerCase();
+ }
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ServiceChartDTO.java
similarity index 68%
copy from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ServiceChartDTO.java
index 8e25da1a..819ebc5e 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ServiceChartDTO.java
@@ -16,14 +16,23 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.service;
+package org.apache.bigtop.manager.server.model.dto;
-import org.apache.bigtop.manager.server.model.vo.ClusterMetricsVO;
-import org.apache.bigtop.manager.server.model.vo.HostMetricsVO;
+import org.apache.bigtop.manager.server.enums.ChartValueTypeEnum;
-public interface MetricsService {
+import lombok.Data;
- HostMetricsVO queryAgentsInfo(Long id, String interval);
+@Data
+public class ServiceChartDTO {
- ClusterMetricsVO queryClustersInfo(Long clusterId, String interval);
+ private String title;
+
+ private ChartValueTypeEnum valueType;
+
+ // line, number etc.
+ private String type;
+
+ private String dataExpression;
+
+ private Integer dataScale = 0;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceMetricsChartVO.java
similarity index 70%
copy from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceMetricsChartVO.java
index 8e25da1a..017d1b1b 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceMetricsChartVO.java
@@ -16,14 +16,20 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.service;
+package org.apache.bigtop.manager.server.model.vo;
-import org.apache.bigtop.manager.server.model.vo.ClusterMetricsVO;
-import org.apache.bigtop.manager.server.model.vo.HostMetricsVO;
+import org.apache.bigtop.manager.server.enums.ChartValueTypeEnum;
-public interface MetricsService {
+import lombok.Data;
- HostMetricsVO queryAgentsInfo(Long id, String interval);
+import java.util.List;
- ClusterMetricsVO queryClustersInfo(Long clusterId, String interval);
+@Data
+public class ServiceMetricsChartVO {
+
+ private String title;
+
+ private ChartValueTypeEnum valueType;
+
+ private List<ServiceMetricsSeriesVO> series;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceMetricsSeriesVO.java
similarity index 70%
copy from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceMetricsSeriesVO.java
index 8e25da1a..910e0ffd 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceMetricsSeriesVO.java
@@ -16,14 +16,18 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.service;
+package org.apache.bigtop.manager.server.model.vo;
-import org.apache.bigtop.manager.server.model.vo.ClusterMetricsVO;
-import org.apache.bigtop.manager.server.model.vo.HostMetricsVO;
+import lombok.Data;
-public interface MetricsService {
+import java.util.List;
- HostMetricsVO queryAgentsInfo(Long id, String interval);
+@Data
+public class ServiceMetricsSeriesVO {
- ClusterMetricsVO queryClustersInfo(Long clusterId, String interval);
+ private String name;
+
+ private String type;
+
+ private List<String> data;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceMetricsVO.java
similarity index 70%
copy from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceMetricsVO.java
index 8e25da1a..5bcd4963 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceMetricsVO.java
@@ -16,14 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.service;
+package org.apache.bigtop.manager.server.model.vo;
-import org.apache.bigtop.manager.server.model.vo.ClusterMetricsVO;
-import org.apache.bigtop.manager.server.model.vo.HostMetricsVO;
+import lombok.Data;
-public interface MetricsService {
+import java.util.List;
- HostMetricsVO queryAgentsInfo(Long id, String interval);
+@Data
+public class ServiceMetricsVO {
- ClusterMetricsVO queryClustersInfo(Long clusterId, String interval);
+ private List<ServiceMetricsChartVO> charts;
+
+ private List<String> timestamps;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/prometheus/PrometheusProxy.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/prometheus/PrometheusProxy.java
index a41cfc0a..776658a5 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/prometheus/PrometheusProxy.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/prometheus/PrometheusProxy.java
@@ -18,8 +18,13 @@
*/
package org.apache.bigtop.manager.server.prometheus;
+import org.apache.bigtop.manager.server.model.dto.ServiceChartDTO;
import org.apache.bigtop.manager.server.model.vo.ClusterMetricsVO;
import org.apache.bigtop.manager.server.model.vo.HostMetricsVO;
+import org.apache.bigtop.manager.server.model.vo.ServiceMetricsChartVO;
+import org.apache.bigtop.manager.server.model.vo.ServiceMetricsSeriesVO;
+import org.apache.bigtop.manager.server.model.vo.ServiceMetricsVO;
+import org.apache.bigtop.manager.server.utils.StackUtils;
import org.springframework.http.MediaType;
import org.springframework.util.CollectionUtils;
@@ -93,7 +98,7 @@ public class PrometheusProxy {
.block();
}
- public HostMetricsVO queryAgentsInfo(String agentIpv4, String interval) {
+ public HostMetricsVO queryHostMetrics(String agentIpv4, String interval) {
timestampCache.set(getTimestampsList(processInternal(interval)));
HostMetricsVO res = new HostMetricsVO();
@@ -147,7 +152,7 @@ public class PrometheusProxy {
return res;
}
- public ClusterMetricsVO queryClustersInfo(List<String> agentIpv4s, String
interval) {
+ public ClusterMetricsVO queryClusterMetrics(List<String> agentIpv4s,
String interval) {
timestampCache.set(getTimestampsList(processInternal(interval)));
ClusterMetricsVO res = new ClusterMetricsVO();
@@ -253,6 +258,55 @@ public class PrometheusProxy {
return res;
}
+ public ServiceMetricsVO queryServiceMetrics(String clusterName, String
serviceName, String interval) {
+ List<ServiceChartDTO> charts =
StackUtils.SERVICE_CHARTS_MAP.get(serviceName);
+ if (CollectionUtils.isEmpty(charts)) {
+ return new ServiceMetricsVO();
+ }
+
+ List<String> timestamps = getTimestampsList(processInternal(interval));
+ ServiceMetricsVO res = new ServiceMetricsVO();
+ List<ServiceMetricsChartVO> resultCharts = new ArrayList<>();
+ for (ServiceChartDTO chart : charts) {
+ String params = chart.getDataExpression().replace("$cluster",
clusterName);
+ PrometheusResponse response = queryRange(
+ params,
+ timestamps.get(0),
+ timestamps.get(timestamps.size() - 1),
+ number2Param(processInternal(interval)));
+
+ ServiceMetricsChartVO metrics = new ServiceMetricsChartVO();
+ List<ServiceMetricsSeriesVO> series = new ArrayList<>();
+ for (PrometheusResult result : response.getData().getResult()) {
+ List<String> emptyList = new
ArrayList<>(Collections.nCopies(timestamps.size(), null));
+ String key = result.getMetric().get("instance");
+ for (List<String> value : result.getValues()) {
+ String timestamp = value.get(0);
+ int index = timestamps.indexOf(timestamp);
+ String roundValue = new BigDecimal(value.get(1))
+ .setScale(chart.getDataScale(),
RoundingMode.HALF_UP)
+ .toString();
+ emptyList.set(index, roundValue);
+ }
+
+ ServiceMetricsSeriesVO seriesItem = new
ServiceMetricsSeriesVO();
+ seriesItem.setName(key);
+ seriesItem.setData(emptyList);
+ seriesItem.setType(chart.getType());
+ series.add(seriesItem);
+ }
+
+ metrics.setSeries(series);
+ metrics.setTitle(chart.getTitle());
+ metrics.setValueType(chart.getValueType());
+ resultCharts.add(metrics);
+ }
+
+ res.setCharts(resultCharts);
+ res.setTimestamps(timestamps);
+ return res;
+ }
+
public Map<String, BigDecimal> retrieveAgentCpu(String iPv4addr) {
Map<String, BigDecimal> map = new HashMap<>();
String params =
String.format("agent_host_monitoring_cpu{iPv4addr=\"%s\"}", iPv4addr);
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
index 8e25da1a..4e9517f0 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/MetricsService.java
@@ -20,10 +20,13 @@ package org.apache.bigtop.manager.server.service;
import org.apache.bigtop.manager.server.model.vo.ClusterMetricsVO;
import org.apache.bigtop.manager.server.model.vo.HostMetricsVO;
+import org.apache.bigtop.manager.server.model.vo.ServiceMetricsVO;
public interface MetricsService {
- HostMetricsVO queryAgentsInfo(Long id, String interval);
+ HostMetricsVO hostMetrics(Long id, String interval);
- ClusterMetricsVO queryClustersInfo(Long clusterId, String interval);
+ ClusterMetricsVO clusterMetrics(Long clusterId, String interval);
+
+ ServiceMetricsVO serviceMetrics(Long serviceId, String interval);
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/MetricsServiceImpl.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/MetricsServiceImpl.java
index 10519aef..976091a3 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/MetricsServiceImpl.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/MetricsServiceImpl.java
@@ -18,18 +18,23 @@
*/
package org.apache.bigtop.manager.server.service.impl;
+import org.apache.bigtop.manager.dao.po.ClusterPO;
import org.apache.bigtop.manager.dao.po.ComponentPO;
import org.apache.bigtop.manager.dao.po.HostPO;
import org.apache.bigtop.manager.dao.po.ServiceConfigPO;
+import org.apache.bigtop.manager.dao.po.ServicePO;
import org.apache.bigtop.manager.dao.query.ComponentQuery;
+import org.apache.bigtop.manager.dao.repository.ClusterDao;
import org.apache.bigtop.manager.dao.repository.ComponentDao;
import org.apache.bigtop.manager.dao.repository.HostDao;
import org.apache.bigtop.manager.dao.repository.ServiceConfigDao;
+import org.apache.bigtop.manager.dao.repository.ServiceDao;
import org.apache.bigtop.manager.server.model.converter.ServiceConfigConverter;
import org.apache.bigtop.manager.server.model.dto.PropertyDTO;
import org.apache.bigtop.manager.server.model.dto.ServiceConfigDTO;
import org.apache.bigtop.manager.server.model.vo.ClusterMetricsVO;
import org.apache.bigtop.manager.server.model.vo.HostMetricsVO;
+import org.apache.bigtop.manager.server.model.vo.ServiceMetricsVO;
import org.apache.bigtop.manager.server.prometheus.PrometheusProxy;
import org.apache.bigtop.manager.server.service.MetricsService;
@@ -44,28 +49,34 @@ import java.util.List;
@Service
public class MetricsServiceImpl implements MetricsService {
+ @Resource
+ private ClusterDao clusterDao;
+
@Resource
private HostDao hostDao;
@Resource
private ComponentDao componentDao;
+ @Resource
+ private ServiceDao serviceDao;
+
@Resource
private ServiceConfigDao serviceConfigDao;
@Override
- public HostMetricsVO queryAgentsInfo(Long id, String interval) {
+ public HostMetricsVO hostMetrics(Long id, String interval) {
PrometheusProxy proxy = getProxy();
if (proxy == null) {
return new HostMetricsVO();
}
String ipv4 = hostDao.findById(id).getIpv4();
- return proxy.queryAgentsInfo(ipv4, interval);
+ return proxy.queryHostMetrics(ipv4, interval);
}
@Override
- public ClusterMetricsVO queryClustersInfo(Long clusterId, String interval)
{
+ public ClusterMetricsVO clusterMetrics(Long clusterId, String interval) {
PrometheusProxy proxy = getProxy();
if (proxy == null) {
return new ClusterMetricsVO();
@@ -74,7 +85,19 @@ public class MetricsServiceImpl implements MetricsService {
List<String> ipv4s = hostDao.findAllByClusterId(clusterId).stream()
.map(HostPO::getIpv4)
.toList();
- return proxy.queryClustersInfo(ipv4s, interval);
+ return proxy.queryClusterMetrics(ipv4s, interval);
+ }
+
+ @Override
+ public ServiceMetricsVO serviceMetrics(Long serviceId, String interval) {
+ PrometheusProxy proxy = getProxy();
+ if (proxy == null) {
+ return new ServiceMetricsVO();
+ }
+
+ ServicePO servicePO = serviceDao.findById(serviceId);
+ ClusterPO clusterPO = clusterDao.findById(servicePO.getClusterId());
+ return proxy.queryServiceMetrics(clusterPO.getName(),
servicePO.getName(), interval);
}
private PrometheusProxy getProxy() {
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/utils/StackUtils.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/utils/StackUtils.java
index edd38fd6..85467cd1 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/utils/StackUtils.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/utils/StackUtils.java
@@ -29,6 +29,7 @@ import
org.apache.bigtop.manager.server.exception.ServerException;
import org.apache.bigtop.manager.server.model.converter.ServiceConverter;
import org.apache.bigtop.manager.server.model.dto.ComponentDTO;
import org.apache.bigtop.manager.server.model.dto.PropertyDTO;
+import org.apache.bigtop.manager.server.model.dto.ServiceChartDTO;
import org.apache.bigtop.manager.server.model.dto.ServiceConfigDTO;
import org.apache.bigtop.manager.server.model.dto.ServiceDTO;
import org.apache.bigtop.manager.server.model.dto.StackDTO;
@@ -41,6 +42,7 @@ import
org.apache.bigtop.manager.server.stack.xml.ServiceMetainfoXml;
import org.apache.commons.lang3.EnumUtils;
import org.apache.commons.lang3.StringUtils;
+import com.fasterxml.jackson.core.type.TypeReference;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -70,6 +72,8 @@ public class StackUtils {
private static final String DEPENDENCY_FILE_NAME = "order.json";
+ private static final String CHARTS_FILE_NAME = "charts.json";
+
public static final Map<String, List<ServiceConfigDTO>> SERVICE_CONFIG_MAP
= new HashMap<>();
public static final Map<String, Map<String, String>> SERVICE_TEMPLATE_MAP
= new HashMap<>();
@@ -78,6 +82,8 @@ public class StackUtils {
public static final DAG<String, ComponentCommandWrapper, DagGraphEdge> DAG
= new DAG<>();
+ public static final Map<String, List<ServiceChartDTO>> SERVICE_CHARTS_MAP
= new HashMap<>();
+
private static boolean parsed = false;
public static synchronized void parseStack() {
@@ -122,6 +128,7 @@ public class StackUtils {
parseServiceTemplates(file, serviceDTO.getName());
parseDag(file);
+ parseCharts(file, serviceDTO.getName());
}
}
@@ -205,6 +212,14 @@ public class StackUtils {
}
}
+ private static void parseCharts(File file, String serviceName) {
+ File chartsFile = new File(file.getAbsolutePath(), CHARTS_FILE_NAME);
+ if (chartsFile.exists()) {
+ List<ServiceChartDTO> charts = JsonUtils.readFromFile(chartsFile,
new TypeReference<>() {});
+ SERVICE_CHARTS_MAP.put(serviceName, charts);
+ }
+ }
+
private static ComponentCommandWrapper getCommandWrapper(String
roleCommand) {
String[] split = roleCommand.split(ROLE_COMMAND_SPLIT);
String role = split[0];
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/charts.json
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/charts.json
new file mode 100644
index 00000000..3582f281
--- /dev/null
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/charts.json
@@ -0,0 +1,34 @@
+[
+ {
+ "title": "Max Latency",
+ "valueType": "millisecond",
+ "type": "line",
+ "dataExpression": "max_latency{cluster=\"$cluster\"}"
+ },
+ {
+ "title": "Min Latency",
+ "valueType": "millisecond",
+ "type": "line",
+ "dataExpression": "min_latency{cluster=\"$cluster\"}"
+ },
+ {
+ "title": "Avg Latency",
+ "valueType": "millisecond",
+ "type": "line",
+ "dataExpression": "avg_latency{cluster=\"$cluster\"}"
+ },
+ {
+ "title": "Packets Received",
+ "valueType": "nps",
+ "type": "line",
+ "dataExpression": "increase(packets_received{cluster=\"$cluster\"}[1m])",
+ "dataScale": 2
+ },
+ {
+ "title": "Packets Sent",
+ "valueType": "nps",
+ "type": "line",
+ "dataExpression": "increase(packets_sent{cluster=\"$cluster\"}[1m])",
+ "dataScale": 2
+ }
+]
diff --git
a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/MetricsControllerTest.java
b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/MetricsControllerTest.java
index b99d30ab..00b71953 100644
---
a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/MetricsControllerTest.java
+++
b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/MetricsControllerTest.java
@@ -69,9 +69,9 @@ class MetricsControllerTest {
mockResponse.setCpuUsageCur("50%");
mockResponse.setMemoryUsageCur("70%");
- when(metricsService.queryAgentsInfo(hostId,
interval)).thenReturn(mockResponse);
+ when(metricsService.hostMetrics(hostId,
interval)).thenReturn(mockResponse);
- ResponseEntity<HostMetricsVO> response =
metricsController.queryAgentInfo(interval, hostId);
+ ResponseEntity<HostMetricsVO> response =
metricsController.hostMetrics(interval, hostId);
assertEquals("Mocked message", response.getMessage());
assertTrue(response.isSuccess());
@@ -86,9 +86,9 @@ class MetricsControllerTest {
mockResponse.setCpuUsageCur("60%");
mockResponse.setMemoryUsageCur("80%");
- when(metricsService.queryClustersInfo(clusterId,
interval)).thenReturn(mockResponse);
+ when(metricsService.clusterMetrics(clusterId,
interval)).thenReturn(mockResponse);
- ResponseEntity<ClusterMetricsVO> response =
metricsController.queryCluster(interval, clusterId);
+ ResponseEntity<ClusterMetricsVO> response =
metricsController.clusterMetrics(interval, clusterId);
assertEquals("Mocked message", response.getMessage());
assertTrue(response.isSuccess());
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hadoop/HadoopParams.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hadoop/HadoopParams.java
index 22c27739..9c1798a5 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hadoop/HadoopParams.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hadoop/HadoopParams.java
@@ -58,6 +58,8 @@ public class HadoopParams extends BigtopParams {
private final String nodeManagerPidFile = hadoopPidDir +
"/hadoop-hadoop-nodemanager.pid";
private final String historyServerPidFile = hadoopPidDir +
"/hadoop-hadoop-historyserver.pid";
+ private String hadoopConfContent;
+
private String dfsDataDir;
private String dfsNameNodeDir;
private String dfsNameNodeCheckPointDir;
@@ -70,8 +72,8 @@ public class HadoopParams extends BigtopParams {
public HadoopParams(ComponentCommandPayload componentCommandPayload) {
super(componentCommandPayload);
- globalParamsMap.put("hdfs_user", user());
- globalParamsMap.put("hdfs_group", group());
+ globalParamsMap.put("hadoop_user", user());
+ globalParamsMap.put("hadoop_group", group());
globalParamsMap.put("datanode_hosts",
LocalSettings.componentHosts("datanode"));
globalParamsMap.put("java_home", javaHome());
globalParamsMap.put("hadoop_home", serviceHome());
@@ -80,9 +82,11 @@ public class HadoopParams extends BigtopParams {
globalParamsMap.put("exclude_hosts", new ArrayList<>());
}
- public String hadoopLimits() {
+ @GlobalParams
+ public Map<String, Object> hadoopLimits() {
Map<String, Object> hadoopConf =
LocalSettings.configurations(getServiceName(), "hadoop.conf");
- return (String) hadoopConf.get("content");
+ hadoopConfContent = hadoopConf.get("content").toString();
+ return hadoopConf;
}
public String workers() {
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hadoop/HadoopSetup.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hadoop/HadoopSetup.java
index c96b185d..a15dcf72 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hadoop/HadoopSetup.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hadoop/HadoopSetup.java
@@ -109,7 +109,7 @@ public class HadoopSetup {
hadoopParams.getHadoopPidDir(), hadoopUser, hadoopGroup,
Constants.PERMISSION_755, true);
LinuxFileUtils.toFileByTemplate(
- hadoopParams.hadoopLimits(),
+ hadoopParams.getHadoopConfContent(),
MessageFormat.format("{0}/hadoop.conf",
HadoopParams.LIMITS_CONF_DIR),
Constants.ROOT_USER,
Constants.ROOT_USER,