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 ce5dde68 BIGTOP-4441: Fix use error prometheus port for metrics
retrieve
ce5dde68 is described below
commit ce5dde68a82155d97fd9c8b10ba220cde6852e49
Author: Zhiguo Wu <[email protected]>
AuthorDate: Sun Jun 15 14:18:34 2025 +0800
BIGTOP-4441: Fix use error prometheus port for metrics retrieve
---
.../manager/dao/repository/ServiceConfigDao.java | 2 ++
.../resources/mapper/mysql/ServiceConfigMapper.xml | 12 +++++++++++
.../mapper/postgresql/ServiceConfigMapper.xml | 12 +++++++++++
.../manager/server/proxy/PrometheusProxy.java | 18 ++++++++++++----
.../server/service/impl/HostServiceImpl.java | 4 ----
.../server/service/impl/MetricsServiceImpl.java | 24 +++++++++++++++++++++-
6 files changed, 63 insertions(+), 9 deletions(-)
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ServiceConfigDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ServiceConfigDao.java
index e3cf5151..9a6c87bb 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ServiceConfigDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ServiceConfigDao.java
@@ -27,6 +27,8 @@ import java.util.List;
public interface ServiceConfigDao extends BaseDao<ServiceConfigPO> {
+ ServiceConfigPO findByServiceIdAndName(@Param("serviceId") Long serviceId,
@Param("name") String name);
+
List<ServiceConfigPO> findByServiceId(@Param("serviceId") Long serviceId);
List<ServiceConfigPO> findByClusterId(@Param("clusterId") Long clusterId);
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceConfigMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceConfigMapper.xml
index e9d45579..f36bb011 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceConfigMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceConfigMapper.xml
@@ -31,6 +31,18 @@
${alias}.id, ${alias}.name, ${alias}.properties_json,
${alias}.cluster_id, ${alias}.service_id, ${alias}.create_time,
${alias}.update_time
</sql>
+ <select id="findByServiceIdAndName"
resultType="org.apache.bigtop.manager.dao.po.ServiceConfigPO">
+ SELECT
+ <include refid="baseColumnsV2">
+ <property name="alias" value="sc"/>
+ </include>, s.name as service_name
+ FROM service_config sc
+ LEFT JOIN service s
+ ON sc.service_id = s.id
+ WHERE sc.service_id = #{serviceId}
+ AND sc.name = #{name}
+ </select>
+
<select id="findByServiceId"
resultType="org.apache.bigtop.manager.dao.po.ServiceConfigPO">
SELECT
<include refid="baseColumnsV2">
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceConfigMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceConfigMapper.xml
index 0cabf5ff..8d1c87a2 100644
---
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceConfigMapper.xml
+++
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceConfigMapper.xml
@@ -31,6 +31,18 @@
${alias}.id, ${alias}.name, ${alias}.properties_json,
${alias}.cluster_id, ${alias}.service_id, ${alias}.create_time,
${alias}.update_time
</sql>
+ <select id="findByServiceIdAndName"
resultType="org.apache.bigtop.manager.dao.po.ServiceConfigPO">
+ SELECT
+ <include refid="baseColumnsV2">
+ <property name="alias" value="sc"/>
+ </include>, s.name as service_name
+ FROM service_config sc
+ LEFT JOIN service s
+ ON sc.service_id = s.id
+ WHERE sc.service_id = #{serviceId}
+ AND sc.name = #{name}
+ </select>
+
<select id="findByServiceId"
resultType="org.apache.bigtop.manager.dao.po.ServiceConfigPO">
SELECT
<include refid="baseColumnsV2">
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/proxy/PrometheusProxy.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/proxy/PrometheusProxy.java
index 2ccf4f9d..78e1b284 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/proxy/PrometheusProxy.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/proxy/PrometheusProxy.java
@@ -55,8 +55,10 @@ public class PrometheusProxy {
public static final String DISK_READ = "diskRead";
public static final String DISK_WRITE = "diskWrite";
- public PrometheusProxy(String prometheusHost) {
- this.webClient = WebClient.builder().baseUrl(prometheusHost).build();
+ public PrometheusProxy(String prometheusHost, Integer prometheusPort) {
+ this.webClient = WebClient.builder()
+ .baseUrl("http://" + prometheusHost + ":" + prometheusPort)
+ .build();
}
/**
* Retrieve current data
@@ -286,7 +288,11 @@ public class PrometheusProxy {
JsonNode agentCpuMetric = agentCpus.get(0).get("metric");
ObjectNode agentInfo = objectMapper.createObjectNode();
agentInfo.put("hostname",
agentCpuMetric.get("hostname").asText());
- agentInfo.put("cpuInfo",
agentCpuMetric.get("cpu_info").asText());
+ agentInfo.put(
+ "cpuInfo",
+ agentCpuMetric.get("cpu_info") == null
+ ? ""
+ : agentCpuMetric.get("cpu_info").asText());
agentInfo.put("iPv4addr",
agentCpuMetric.get("iPv4addr").asText());
agentInfo.put("os", agentCpuMetric.get("os").asText());
agentInfo.put("architecture",
agentCpuMetric.get("arch").asText());
@@ -328,7 +334,11 @@ public class PrometheusProxy {
// metric
JsonNode agentCpuMetrics = agentCpu.get(0).get("metric");
agentCpuInfo.put("hostname",
agentCpuMetrics.get("hostname").asText());
- agentCpuInfo.put("cpuInfo",
agentCpuMetrics.get("cpu_info").asText());
+ agentCpuInfo.put(
+ "cpuInfo",
+ agentCpuInfo.get("cpu_info") == null
+ ? ""
+ : agentCpuInfo.get("cpu_info").asText());
agentCpuInfo.put("iPv4addr",
agentCpuMetrics.get("iPv4addr").asText());
agentCpuInfo.put("os", agentCpuMetrics.get("os").asText());
agentCpuInfo.put("architecture",
agentCpuMetrics.get("arch").asText());
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
index 906b741f..4fd2ade6 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
@@ -28,7 +28,6 @@ import org.apache.bigtop.manager.dao.query.ComponentQuery;
import org.apache.bigtop.manager.dao.query.HostQuery;
import org.apache.bigtop.manager.dao.repository.ComponentDao;
import org.apache.bigtop.manager.dao.repository.HostDao;
-import org.apache.bigtop.manager.dao.repository.RepoDao;
import org.apache.bigtop.manager.dao.repository.ToolDao;
import org.apache.bigtop.manager.server.enums.ApiExceptionEnum;
import org.apache.bigtop.manager.server.enums.HealthyStatusEnum;
@@ -72,9 +71,6 @@ import java.util.stream.Collectors;
@Service
public class HostServiceImpl implements HostService {
- @Resource
- private RepoDao repoDao;
-
@Resource
private HostDao hostDao;
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 ba431bb9..c34721a7 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
@@ -20,9 +20,14 @@ package org.apache.bigtop.manager.server.service.impl;
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.query.ComponentQuery;
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.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.proxy.PrometheusProxy;
import org.apache.bigtop.manager.server.service.MetricsService;
@@ -45,6 +50,9 @@ public class MetricsServiceImpl implements MetricsService {
@Resource
private ComponentDao componentDao;
+ @Resource
+ private ServiceConfigDao serviceConfigDao;
+
@Override
public JsonNode queryAgentsHealthyStatus() {
PrometheusProxy proxy = getProxy();
@@ -88,7 +96,21 @@ public class MetricsServiceImpl implements MetricsService {
} else {
ComponentPO componentPO = componentPOList.get(0);
HostPO hostPO = hostDao.findById(componentPO.getHostId());
- return new PrometheusProxy(hostPO.getHostname());
+ ServiceConfigPO serviceConfigPO =
+
serviceConfigDao.findByServiceIdAndName(componentPO.getServiceId(),
"prometheus");
+ int port = 9090;
+ ServiceConfigDTO serviceConfigDTO =
ServiceConfigConverter.INSTANCE.fromPO2DTO(serviceConfigPO);
+ for (PropertyDTO property : serviceConfigDTO.getProperties()) {
+ if ("port".equals(property.getName())) {
+ port = Integer.parseInt(property.getValue());
+ if (port <= 0) {
+ log.warn("Invalid port {} for Prometheus server, using
default port 9090", port);
+ port = 9090; // Default Prometheus port
+ }
+ }
+ }
+
+ return new PrometheusProxy(hostPO.getHostname(), port);
}
}
}