diff --git a/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/common/GrafanaConstants.java b/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/common/GrafanaConstants.java index ce4bf0aff8..9c26924a13 100644 --- a/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/common/GrafanaConstants.java +++ b/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/common/GrafanaConstants.java @@ -48,15 +48,15 @@ public interface GrafanaConstants { String QUERY_DATASOURCE_API = "/api/datasources/name/" + DATASOURCE_NAME; - String GET_SERVICE_ACCOUNTS_API = "%s:%s@%s/api/serviceaccounts/search"; + String GET_SERVICE_ACCOUNTS_API = "%s/api/serviceaccounts/search"; String ACCOUNT_NAME = ConfigConstants.SystemConstant.PROJECT_NAME; String ACCOUNT_ROLE = "Admin"; - String CREATE_SERVICE_ACCOUNT_API = "%s:%s@%s/api/serviceaccounts"; + String CREATE_SERVICE_ACCOUNT_API = "%s/api/serviceaccounts"; - String CREATE_SERVICE_TOKEN_API = "%s:%s@%s/api/serviceaccounts/%d/tokens"; + String CREATE_SERVICE_TOKEN_API = "%s/api/serviceaccounts/%d/tokens"; String GRAFANA_CONFIG = "grafanaConfig"; } diff --git a/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/config/GrafanaProperties.java b/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/config/GrafanaProperties.java index 0018c6cab6..74144b76fd 100644 --- a/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/config/GrafanaProperties.java +++ b/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/config/GrafanaProperties.java @@ -31,6 +31,7 @@ import org.springframework.boot.context.properties.bind.DefaultValue; @ConfigurationProperties(prefix = ConfigConstants.FunctionModuleConstants.GRAFANA) public record GrafanaProperties(@DefaultValue("false") boolean enabled, @DefaultValue("http://127.0.0.1:3000") String url, + @DefaultValue("http://127.0.0.1:3000") String exposeUrl, @DefaultValue(GrafanaConstants.ADMIN) String username, @DefaultValue(GrafanaConstants.ADMIN) String password) { /** diff --git a/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/service/DashboardService.java b/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/service/DashboardService.java index 8b895da821..679db31128 100644 --- a/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/service/DashboardService.java +++ b/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/service/DashboardService.java @@ -89,7 +89,7 @@ public class DashboardService { GrafanaDashboard grafanaDashboard = JsonUtil.fromJson(response.getBody(), GrafanaDashboard.class); if (grafanaDashboard != null) { grafanaDashboard.setEnabled(true); - grafanaDashboard.setUrl(grafanaProperties.getPrefix() + grafanaProperties.getUrl() + grafanaDashboard.setUrl(grafanaProperties.exposeUrl() + grafanaDashboard.getUrl().replace(grafanaProperties.getUrl(), "") + KIOSK + REFRESH + INSTANCE + monitorId + USE_DATASOURCE); grafanaDashboard.setMonitorId(monitorId); diff --git a/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/service/ServiceAccountService.java b/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/service/ServiceAccountService.java index 35d1578afe..50427a2b84 100644 --- a/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/service/ServiceAccountService.java +++ b/hertzbeat-grafana/src/main/java/org/apache/hertzbeat/grafana/service/ServiceAccountService.java @@ -42,6 +42,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.http.client.support.BasicAuthenticationInterceptor; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @@ -92,10 +93,10 @@ public class ServiceAccountService { return account.get("id").asLong(); } } - String endpoint = String.format(prefix + CREATE_SERVICE_ACCOUNT_API, username, password, url); + String endpoint = String.format(prefix + CREATE_SERVICE_ACCOUNT_API, url); HttpHeaders headers = createHeaders(); String body = String.format("{\"name\":\"%s\",\"role\":\"%s\",\"isDisabled\":false}", ACCOUNT_NAME, ACCOUNT_ROLE); - + restTemplate.getInterceptors().add(new BasicAuthenticationInterceptor(username, password)); HttpEntity request = new HttpEntity<>(body, headers); try { ResponseEntity response = restTemplate.postForEntity(endpoint, request, String.class); @@ -122,10 +123,10 @@ public class ServiceAccountService { log.error("Service account not found"); throw new RuntimeException("Service account not found"); } - String endpoint = String.format(prefix + CREATE_SERVICE_TOKEN_API, username, password, url, accountId); + String endpoint = String.format(prefix + CREATE_SERVICE_TOKEN_API, url, accountId); HttpHeaders headers = createHeaders(); String body = String.format("{\"name\":\"%s\"}", CommonUtil.generateRandomWord(6)); - + restTemplate.getInterceptors().add(new BasicAuthenticationInterceptor(username, password)); HttpEntity request = new HttpEntity<>(body, headers); try { ResponseEntity response = restTemplate.postForEntity(endpoint, request, String.class); @@ -173,9 +174,9 @@ public class ServiceAccountService { * @return ResponseEntity containing the list of service accounts */ public ResponseEntity getAccounts() { - String endpoint = String.format(prefix + GET_SERVICE_ACCOUNTS_API, username, password, url); + String endpoint = String.format(prefix + GET_SERVICE_ACCOUNTS_API, url); HttpHeaders headers = createHeaders(); - + restTemplate.getInterceptors().add(new BasicAuthenticationInterceptor(username, password)); HttpEntity request = new HttpEntity<>(headers); try { ResponseEntity response = restTemplate.exchange(endpoint, HttpMethod.GET, request, String.class); diff --git a/hertzbeat-manager/src/main/resources/application.yml b/hertzbeat-manager/src/main/resources/application.yml index 1d0d878d85..82728fc5fc 100644 --- a/hertzbeat-manager/src/main/resources/application.yml +++ b/hertzbeat-manager/src/main/resources/application.yml @@ -208,6 +208,7 @@ scheduler: grafana: enabled: false url: http://127.0.0.1:3000 + expose-url: http://127.0.0.1:3000 username: admin password: admin diff --git a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/vm/VictoriaMetricsClusterDataStorage.java b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/vm/VictoriaMetricsClusterDataStorage.java index c4747282ae..ec521be973 100644 --- a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/vm/VictoriaMetricsClusterDataStorage.java +++ b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/vm/VictoriaMetricsClusterDataStorage.java @@ -133,6 +133,7 @@ public class VictoriaMetricsClusterDataStorage extends AbstractHistoryDataStorag boolean isPrometheusAuto = false; if (metricsData.getApp().startsWith(CommonConstants.PROMETHEUS_APP_PREFIX)) { isPrometheusAuto = true; + defaultLabels.remove(MONITOR_METRICS_KEY); defaultLabels.put(LABEL_KEY_JOB, metricsData.getApp().substring(CommonConstants.PROMETHEUS_APP_PREFIX.length())); } else { @@ -168,7 +169,9 @@ public class VictoriaMetricsClusterDataStorage extends AbstractHistoryDataStorag String labelName = isPrometheusAuto ? metricsData.getMetrics() : metricsData.getMetrics() + SPILT + entry.getKey(); labels.put(LABEL_KEY_NAME, labelName); - labels.put(MONITOR_METRIC_KEY, entry.getKey()); + if (!isPrometheusAuto) { + labels.put(MONITOR_METRIC_KEY, entry.getKey()); + } VictoriaMetricsContent content = VictoriaMetricsContent.builder().metric(labels) .values(new Double[]{entry.getValue()}).timestamps(timestamp).build(); HttpHeaders headers = new HttpHeaders(); diff --git a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/vm/VictoriaMetricsDataStorage.java b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/vm/VictoriaMetricsDataStorage.java index a830ff26d3..7dd905f999 100644 --- a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/vm/VictoriaMetricsDataStorage.java +++ b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/vm/VictoriaMetricsDataStorage.java @@ -139,6 +139,7 @@ public class VictoriaMetricsDataStorage extends AbstractHistoryDataStorage { boolean isPrometheusAuto = false; if (metricsData.getApp().startsWith(CommonConstants.PROMETHEUS_APP_PREFIX)) { isPrometheusAuto = true; + defaultLabels.remove(MONITOR_METRICS_KEY); defaultLabels.put(LABEL_KEY_JOB, metricsData.getApp() .substring(CommonConstants.PROMETHEUS_APP_PREFIX.length())); } else { @@ -174,7 +175,9 @@ public class VictoriaMetricsDataStorage extends AbstractHistoryDataStorage { String labelName = isPrometheusAuto ? metricsData.getMetrics() : metricsData.getMetrics() + SPILT + entry.getKey(); labels.put(LABEL_KEY_NAME, labelName); - labels.put(MONITOR_METRIC_KEY, entry.getKey()); + if (!isPrometheusAuto) { + labels.put(MONITOR_METRIC_KEY, entry.getKey()); + } VictoriaMetricsContent content = VictoriaMetricsContent.builder() .metric(labels) .values(new Double[]{entry.getValue()})