Skip to content

Commit

Permalink
Merge branch 'm-cmp:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
hyeon-inno authored Sep 13, 2024
2 parents 85c8cda + ce8d909 commit 0c8b024
Show file tree
Hide file tree
Showing 19 changed files with 612 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,14 @@ type ClusterNodeMonitoringReqInfo struct {
}

type TimestampValue struct {
Timestamp time.Time
Value string
Timestamp time.Time `json:"timestamp"`
Value string `json:"value"`
}

type MetricData struct {
MetricName string
MetricUnit string
TimestampValues []TimestampValue
MetricName string `json:"metricName"`
MetricUnit string `json:"metricUnit"`
TimestampValues []TimestampValue `json:"timestampValues"`
}

type MetricType string
Expand Down
1 change: 1 addition & 0 deletions java-module/.env.sample
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
TUMBLEBUG_URL=http://cb-tumblebug:1323
TUMBLEBUG_ID=default
TUMBLEBUG_PW=default
SPIDER_URL=http://cb-spider:1024
DATABASE_HOST=mc-o11y-maria
DATABASE_NAME=mc-observability
DATABASE_ID=mc-agent
Expand Down
3 changes: 3 additions & 0 deletions java-module/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,6 @@ out/

### VS Code ###
.vscode/

### log files ###
*.log*
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package mcmp.mc.observability.mco11yagent.monitoring.client;

import mcmp.mc.observability.mco11yagent.monitoring.config.SpiderFeignConfig;
import mcmp.mc.observability.mco11yagent.monitoring.model.SpiderMonitoringInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

@FeignClient(name = "cb-spider", url = "${feign.cb-spider.url:}", configuration = SpiderFeignConfig.class)
public interface SpiderClient {
@GetMapping(value = "/spider/monitoring/vm/{vmName}/{metricType}", produces = "application/json")
SpiderMonitoringInfo.Data getVMMonitoring(@PathVariable String vmName, @PathVariable String metricType,
@RequestParam("ConnectionName") String connectionName,
@RequestParam("TimeBeforeHour") String timeBeforeHour,
@RequestParam("IntervalMinute") String intervalMinute);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package mcmp.mc.observability.mco11yagent.monitoring.client;

import mcmp.mc.observability.mco11yagent.monitoring.config.TumblebugFeignConfig;
import mcmp.mc.observability.mco11yagent.monitoring.model.TumblebugMCI;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

@FeignClient(name = "cb-tumblebug", url = "${feign.cb-tumblebug.url:}", configuration = TumblebugFeignConfig.class)
public interface TumblebugClient {
@GetMapping(value = "/tumblebug/ns/{nsId}/mci/{mciId}/vm/{vmId}", produces = "application/json")
TumblebugMCI.Vm getVM(@PathVariable String nsId, @PathVariable String mciId, @PathVariable String vmId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package mcmp.mc.observability.mco11yagent.monitoring.config;

import feign.RequestInterceptor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.nio.charset.StandardCharsets;
import java.util.Base64;

@Configuration
public class SpiderFeignConfig {
@Value("${feign.cb-spider.id}")
private String id;
@Value("${feign.cb-spider.pw}")
private String pw;

@Bean
public RequestInterceptor spiderBasicAuthRequestInterceptor() {
return requestTemplate -> {
if (authRequired()) {
String auth = id + ":" + pw;
byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes(StandardCharsets.UTF_8));
String authHeader = "Basic " + new String(encodedAuth);
requestTemplate.header("Authorization", authHeader);
}
};
}

private boolean authRequired() {
return id != null && pw != null && !id.isEmpty() && !pw.isEmpty();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package mcmp.mc.observability.mco11yagent.monitoring.config;

import feign.RequestInterceptor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.nio.charset.StandardCharsets;
import java.util.Base64;

@Configuration
public class TumblebugFeignConfig {
@Value("${feign.cb-tumblebug.id}")
private String id;
@Value("${feign.cb-tumblebug.pw}")
private String pw;

@Bean
public RequestInterceptor tumblebugBasicAuthRequestInterceptor() {
return requestTemplate -> {
String auth = id + ":" + pw;
byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes(StandardCharsets.UTF_8));
String authHeader = "Basic " + new String(encodedAuth);

requestTemplate.header("Authorization", authHeader);
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package mcmp.mc.observability.mco11yagent.monitoring.enums;

import lombok.Getter;

public enum MetricType {
CPU_USAGE("cpu_usage"),
MEMORY_USAGE("memory_usage"),
DISK_READ("disk_read"),
DISK_WRITE("disk_write"),
DISK_READ_OPS("disk_read_ops"),
DISK_WRITE_OPS("disk_write_ops"),
NETWORK_IN("network_in"),
NETWORK_OUT("network_out"),
UNKNOWN("unknown");

private final String value;

MetricType(String value) {
this.value = value;
}

@Override
public String toString() {
return this.value;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public class InfluxDBConnector {

private void setInfluxDB() {
influxDB = (StringUtils.isBlank(username) && StringUtils.isBlank(password))? InfluxDBFactory.connect(url): InfluxDBFactory.connect(url, username, password);
influxDB.setDatabase(database);
}

public InfluxDBConnector(InfluxDBInfo influxDBInfo) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package mcmp.mc.observability.mco11yagent.monitoring.model;

import lombok.Getter;
import lombok.Setter;

import java.sql.Timestamp;
import java.util.List;

@Getter
@Setter
public class SpiderMonitoringInfo {
@Getter
@Setter
public static class Data {
private String metricName;
private String metricUnit;
private List<TimestampValue> timestampValues;

@Getter
@Setter
public static class TimestampValue {
private String timestamp;
private String value;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
package mcmp.mc.observability.mco11yagent.monitoring.model;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
public class TumblebugMCI {
private String configureCloudAdaptiveNetwork;
private String description;
private String id;
private String installMonAgent;
private String label;
private String name;
private List<String> newVmList;
private String placementAlgo;
private String status;
private StatusCount statusCount;
private String systemLabel;
private String systemMessage;
private String targetAction;
private String targetStatus;
private Vm[] vm;

@Getter
@Setter
public static class StatusCount {
private Long countCreating;
private Long countFailed;
private Long countRebooting;
private Long countResuming;
private Long countRunning;
private Long countSuspended;
private Long countSuspending;
private Long countTerminated;
private Long countTerminating;
private Long countTotal;
private Long countUndefined;
}

@Getter
@Setter
public static class Vm {
private ConnectionConfig connectionConfig;
private String connectionName;
private String createdTime;
private CspViewVmDetail cspViewVmDetail;
private List<String> dataDiskIds;
private String description;
private String id;
private String uid;
private String cspResourceName;
private String cspResourceId;
private String imageId;
private String label;
private Location location;
private String monAgentStatus;
private String name;
private String networkAgentStatus;
private String privateDNS;
private String privateIP;
private String publicDNS;
private String publicIP;
private Region region;
private String rootDeviceName;
private String rootDiskSize;
private String rootDiskType;
private List<String> securityGroupIds;
private String specId;
private String sshKeyId;
private String sshPort;
private String status;
private String subGroupId;
private String subnetId;
private String systemMessage;
private String targetAction;
private String targetStatus;
private String vNetId;
private String vmUserName;
private String vmUserAccount;
private String vmUserPassword;
}

@Getter
@Setter
public static class ConnectionConfig {
private String configName;
private String credentialHolder;
private String credentialName;
private String driverName;
private String providerName;
private RegionDetail regionDetail;
private Boolean regionRepresentative;
private RegionZoneInfo regionZoneInfo;
private String regionZoneInfoName;
private Boolean verified;
}

@Getter
@Setter
public static class RegionDetail {
private String description;
private Location location;
private String regionId;
private String regionName;
private List<String> zones;
}

@Getter
@Setter
public static class Location {
private String display;
private Long latitude;
private Long longitude;
}

@Getter
@Setter
public static class RegionZoneInfo {
private String assignedRegion;
private String assignedZone;
}

@Getter
@Setter
public static class CspViewVmDetail {
private String cspid;
private List<IID> dataDiskIIDs;
private List<String> dataDiskNames;
private String iid;
private IID imageIID;
private String imageName;
private String imageType;
private IID keyPairIID;
private String keyPairName;
private List<KeyValue> keyValueList;
private String name;
private String networkInterface;
private String privateDNS;
private String privateIP;
private String publicDNS;
private String publicIP;
private String region;
private String rootDeviceName;
private String rootDiskSize;
private String rootDiskType;
private List<IID> securityGroupIIds;
private List<String> securityGroupNames;
private String sshaccessPoint;
private String startTime;
private String subnetIID;
private String subnetName;
private String vmspecName;
private String vmuserPasswd;
private IID vpcIID;
private String vpcname;

}

@Getter
@Setter
public static class Region {
private String region;
private String zone;
}

@Getter
@Setter
public static class IID {
private String nameId;
private String systemId;
}

@Getter
@Setter
public static class KeyValue {
private String key;
private String value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package mcmp.mc.observability.mco11yagent.monitoring.model;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
public class TumblebugNS {
private List<NS> ns;
@Getter
@Setter
public static class NS {
private String id;
private String description;
private String name;
private String resourceType;
private String uid;
}
}
Loading

0 comments on commit 0c8b024

Please sign in to comment.