Skip to content

Commit 5b47df7

Browse files
authored
Merge branch 'master' into 0722-yuluo/optimize-collector
2 parents 15129dc + 9080ccd commit 5b47df7

File tree

35 files changed

+284
-648
lines changed

35 files changed

+284
-648
lines changed

common/src/main/java/org/apache/hertzbeat/common/entity/grafana/GrafanaDashboard.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@
2828
import lombok.Data;
2929
import lombok.NoArgsConstructor;
3030

31-
32-
33-
3431
/**
3532
* Grafana dashboard entity
3633
*/
@@ -42,23 +39,32 @@
4239
@NoArgsConstructor
4340
@Schema(description = "Grafana dashboard entity")
4441
public class GrafanaDashboard implements Serializable {
42+
43+
@Id
44+
@Schema(description = "Monitor id")
45+
private Long monitorId;
46+
4547
@Schema(description = "Dashboard folderUid")
4648
private String folderUid;
49+
4750
@Schema(description = "Dashboard slug")
4851
private String slug;
52+
4953
@Schema(description = "Dashboard status")
5054
private String status;
55+
5156
@Schema(description = "Dashboard uid")
5257
private String uid;
58+
5359
@Schema(description = "Dashboard url")
5460
private String url;
61+
5562
@Schema(description = "Dashboard version")
5663
private Long version;
57-
@Id
58-
@Schema(description = "Monitor id")
59-
private Long monitorId;
64+
6065
@Schema(description = "is enabled")
6166
private boolean enabled;
67+
6268
@Schema(description = "template")
6369
@Transient
6470
private String template;

common/src/main/java/org/apache/hertzbeat/common/entity/grafana/ServiceAccount.java

Lines changed: 0 additions & 61 deletions
This file was deleted.

common/src/main/java/org/apache/hertzbeat/common/entity/manager/Monitor.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import jakarta.persistence.JoinTable;
3333
import jakarta.persistence.ManyToMany;
3434
import jakarta.persistence.Table;
35-
import jakarta.persistence.Transient;
3635
import jakarta.validation.constraints.Max;
3736
import jakarta.validation.constraints.Min;
3837
import jakarta.validation.constraints.Size;
@@ -42,7 +41,6 @@
4241
import lombok.Builder;
4342
import lombok.Data;
4443
import lombok.NoArgsConstructor;
45-
import org.apache.hertzbeat.common.entity.grafana.GrafanaDashboard;
4644
import org.apache.hertzbeat.common.support.valid.HostValid;
4745
import org.springframework.data.annotation.CreatedBy;
4846
import org.springframework.data.annotation.CreatedDate;
@@ -168,11 +166,4 @@ public class Monitor {
168166
joinColumns = {@JoinColumn(name = "monitor_id", referencedColumnName = "id")},
169167
inverseJoinColumns = {@JoinColumn(name = "tag_id", referencedColumnName = "id")})
170168
private List<Tag> tags;
171-
172-
/**
173-
* grafana dashboard
174-
*/
175-
@Schema(title = "grafana dashboard")
176-
@Transient
177-
private GrafanaDashboard grafanaDashboard;
178169
}

common/src/main/java/org/apache/hertzbeat/common/util/CommonUtil.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Map;
2424
import java.util.Objects;
2525
import java.util.Optional;
26+
import java.util.Random;
2627
import java.util.regex.Matcher;
2728
import java.util.regex.Pattern;
2829
import lombok.extern.slf4j.Slf4j;
@@ -223,4 +224,40 @@ public static void validDefineI18n(Map<String, String> i18nMap, String field) {
223224
}
224225
}
225226

227+
/**
228+
* generate random word
229+
* @param length length
230+
* @return words
231+
*/
232+
public static String generateRandomWord(int length) {
233+
StringBuilder word = new StringBuilder();
234+
Random random = new Random();
235+
// 'a' ASCII
236+
int minVowel = 97;
237+
// 'z' ASCII
238+
int maxVowel = 122;
239+
// 'A' ASCII
240+
int minConsonant = 65;
241+
// 'Z' ASCII
242+
int maxConsonant = 90;
243+
// '0' ASCII
244+
int minDigit = 48;
245+
// '9' ASCII
246+
int maxDigit = 57;
247+
word.append((char) (minVowel + random.nextInt(5)));
248+
for (int i = 1; i < length; i++) {
249+
switch (random.nextInt(3)) {
250+
case 0:
251+
word.append((char) (minVowel + random.nextInt(5)));
252+
break;
253+
case 1:
254+
word.append((char) (minDigit + random.nextInt(10)));
255+
break;
256+
default:
257+
word.append((char) (minConsonant + random.nextInt(26)));
258+
break;
259+
}
260+
}
261+
return word.toString();
262+
}
226263
}

grafana/src/main/java/org/apache/hertzbeat/grafana/common/CommonConstants.java renamed to grafana/src/main/java/org/apache/hertzbeat/grafana/common/GrafanaConstants.java

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
/**
2121
* Grafana Common Constants
2222
*/
23-
public interface CommonConstants {
23+
public interface GrafanaConstants {
24+
2425
String HTTP = "http://";
2526

2627
String HTTPS = "https://";
@@ -30,48 +31,36 @@ public interface CommonConstants {
3031
String REFRESH = "&refresh=15s";
3132

3233
String INSTANCE = "&var-instance=";
33-
34-
String AUTHORIZATION = "Authorization";
35-
36-
String BEARER = "Bearer ";
3734

3835
String CREATE_DASHBOARD_API = "/api/dashboards/db";
3936

4037
String DELETE_DASHBOARD_API = "/api/dashboards/uid/%s";
4138

4239
String DATASOURCE_NAME = "hertzbeat-victoria-metrics";
4340

41+
String USE_DATASOURCE = "&var-ds=" + DATASOURCE_NAME;
42+
4443
String DATASOURCE_TYPE = "prometheus";
4544

4645
String DATASOURCE_ACCESS = "proxy";
4746

48-
String CREATE_DATASOURCE_API = "%s:%s@%s/api/datasources";
47+
String CREATE_DATASOURCE_API = "/api/datasources";
4948

50-
String DELETE_DATASOURCE_API = "%s:%s@%s/api/datasources/name/%s";
49+
String QUERY_DATASOURCE_API = "/api/datasources/name/" + DATASOURCE_NAME;
5150

51+
String GET_SERVICE_ACCOUNTS_API = "%s:%s@%s/api/serviceaccounts/search";
52+
5253
String ACCOUNT_NAME = "hertzbeat";
5354

5455
String ACCOUNT_ROLE = "Admin";
5556

56-
String ACCOUNT_TOKEN_NAME = "hertzbeat-token";
57-
5857
String CREATE_SERVICE_ACCOUNT_API = "%s:%s@%s/api/serviceaccounts";
5958

60-
String GET_SERVICE_ACCOUNTS_API = "%s:%s@%s/api/serviceaccounts/search";
61-
62-
String DELETE_SERVICE_ACCOUNT_API = "%s:%s@%s/api/serviceaccounts/%d";
63-
6459
String CREATE_SERVICE_TOKEN_API = "%s:%s@%s/api/serviceaccounts/%d/tokens";
65-
66-
String GET_SERVICE_TOKENS_API = "%s:%s@%s/api/serviceaccounts/%d/tokens";
67-
68-
String NAME = "name";
6960

7061
String APPLICATION_JSON = "application/json";
71-
72-
String HERTZBEAT_TOKEN = "hertzbeat-token";
73-
74-
String TYPE = "type";
7562

7663
String URL = "url";
64+
65+
String GRAFANA_CONFIG = "grafanaConfig";
7766
}

grafana/src/main/java/org/apache/hertzbeat/grafana/config/GrafanaInit.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,17 @@ public class GrafanaInit implements CommandLineRunner {
4242
//3. Determine whether there is a token, if not, create and ensure that the account is unique.
4343
@Override
4444
public void run(String... args) throws Exception {
45-
if (grafanaProperties.enabled() && grafanaProperties.url() != null && grafanaProperties.username() != null && grafanaProperties.password() != null) {
46-
serviceAccountService.reload();
45+
if (grafanaProperties.enabled()) {
46+
log.info("grafana init start");
4747
try {
48-
serviceAccountService.getAccount();
49-
} catch (RuntimeException e) {
50-
log.error("service account is not exist, create service account");
51-
serviceAccountService.createServiceAccount();
48+
String token = serviceAccountService.getToken();
49+
if (token == null) {
50+
token = serviceAccountService.applyForToken();
51+
}
52+
datasourceService.existOrCreateDatasource(token);
53+
} catch (Exception e) {
54+
log.error("grafana init error", e);
5255
}
53-
try {
54-
serviceAccountService.getToken();
55-
} catch (RuntimeException e) {
56-
log.error("service token is not exist, create service token");
57-
serviceAccountService.createToken();
58-
}
59-
datasourceService.deleteDatasource();
60-
datasourceService.createDatasource();
6156
}
6257
}
6358

grafana/src/main/java/org/apache/hertzbeat/grafana/config/GrafanaProperties.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717

1818
package org.apache.hertzbeat.grafana.config;
1919

20-
import static org.apache.hertzbeat.grafana.common.CommonConstants.HTTP;
21-
import static org.apache.hertzbeat.grafana.common.CommonConstants.HTTPS;
20+
import static org.apache.hertzbeat.grafana.common.GrafanaConstants.HTTP;
21+
import static org.apache.hertzbeat.grafana.common.GrafanaConstants.HTTPS;
2222
import lombok.extern.slf4j.Slf4j;
2323
import org.springframework.boot.context.properties.ConfigurationProperties;
2424
import org.springframework.boot.context.properties.bind.DefaultValue;

grafana/src/main/java/org/apache/hertzbeat/grafana/controller/DashboardController.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import lombok.extern.slf4j.Slf4j;
2626
import org.apache.hertzbeat.common.entity.dto.Message;
2727
import org.apache.hertzbeat.common.entity.grafana.GrafanaDashboard;
28-
import org.apache.hertzbeat.grafana.config.GrafanaProperties;
2928
import org.apache.hertzbeat.grafana.service.DashboardService;
3029
import org.springframework.beans.factory.annotation.Autowired;
3130
import org.springframework.http.ResponseEntity;
@@ -48,9 +47,6 @@ public class DashboardController {
4847
@Autowired
4948
private DashboardService dashboardService;
5049

51-
@Autowired
52-
private GrafanaProperties grafanaProperties;
53-
5450
/**
5551
* Creates a new Grafana dashboard.
5652
*
@@ -62,7 +58,7 @@ public class DashboardController {
6258
@PostMapping
6359
public ResponseEntity<Message<?>> createDashboard(@RequestParam String dashboardJson, @RequestParam Long monitorId) {
6460
try {
65-
ResponseEntity<?> response = dashboardService.createDashboard(dashboardJson, monitorId);
61+
ResponseEntity<?> response = dashboardService.createOrUpdateDashboard(dashboardJson, monitorId);
6662
if (response.getStatusCode().is2xxSuccessful()) {
6763
return ResponseEntity.ok(Message.success("create dashboard success"));
6864
}

0 commit comments

Comments
 (0)