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 <wuzhi...@apache.org> 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); } } }