feat: output more server info

This commit is contained in:
tjq 2021-04-05 13:54:16 +08:00
parent 7527b31ece
commit c8a1f536c3
5 changed files with 54 additions and 19 deletions

View File

@ -1,6 +1,7 @@
package tech.powerjob.server.migrate;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.GetMapping;
import tech.powerjob.common.response.ResultDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
@ -29,7 +30,7 @@ public class MigrateController {
/**
* 修复对应 APP 下的任务信息
*/
@RequestMapping("/v4/job")
@GetMapping("/v4/job")
public ResultDTO<JSONObject> fixJobInfoFromV3ToV4(@RequestParam Long appId) {
return ResultDTO.success(v3ToV4MigrateService.fixDeprecatedProcessType(appId));
}
@ -37,7 +38,7 @@ public class MigrateController {
/**
* 修复对应 APP 下的工作流信息
*/
@RequestMapping("/v4/workflow")
@GetMapping("/v4/workflow")
public ResultDTO<JSONObject> fixWorkflowInfoFromV3ToV4(@RequestParam Long appId){
return ResultDTO.success(v3ToV4MigrateService.fixWorkflowInfoFromV3ToV4(appId));
}

View File

@ -1,5 +1,7 @@
package tech.powerjob.server.remote.server;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.info.BuildProperties;
import tech.powerjob.common.exception.PowerJobException;
import tech.powerjob.common.utils.CommonUtils;
import tech.powerjob.common.utils.NetUtils;
@ -33,6 +35,8 @@ public class ServerInfoService {
private final ServerInfoRepository serverInfoRepository;
private String version = "UNKNOWN";
private static final long MAX_SERVER_CLUSTER_SIZE = 10000;
private static final String SERVER_INIT_LOCK = "server_init_lock";
@ -42,6 +46,15 @@ public class ServerInfoService {
return serverId;
}
public String getServerIp() {
return ip;
}
public String getServerVersion() {
return version;
}
@Autowired
public ServerInfoService(LockService lockService, ServerInfoRepository serverInfoRepository) {
@ -121,4 +134,15 @@ public class ServerInfoService {
}
throw new PowerJobException("impossible");
}
@Autowired(required = false)
public void setBuildProperties(BuildProperties buildProperties) {
if (buildProperties == null) {
return;
}
String pomVersion = buildProperties.getVersion();
if (StringUtils.isNotBlank(pomVersion)) {
version = pomVersion;
}
}
}

View File

@ -1,10 +1,6 @@
package tech.powerjob.server.config;
import tech.powerjob.server.common.PowerJobServerConfigKey;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.info.BuildProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
@ -12,6 +8,10 @@ import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import tech.powerjob.server.common.PowerJobServerConfigKey;
import tech.powerjob.server.remote.server.ServerInfoService;
import javax.annotation.Resource;
import static springfox.documentation.builders.PathSelectors.any;
@ -27,28 +27,19 @@ import static springfox.documentation.builders.PathSelectors.any;
@ConditionalOnProperty(name = PowerJobServerConfigKey.SWAGGER_UI_ENABLE, havingValue = "true")
public class SwaggerConfig {
private final BuildProperties buildProperties;
public SwaggerConfig(@Autowired(required = false) final BuildProperties buildProperties) {
this.buildProperties = buildProperties;
}
@Resource
private ServerInfoService serverInfoService;
@Bean
public Docket createRestApi() {
String version = "unknown";
if (buildProperties != null) {
String pomVersion = buildProperties.getVersion();
if (StringUtils.isNotBlank(pomVersion)) {
version = pomVersion;
}
}
// apiInfo()用来创建该Api的基本信息这些基本信息会展现在文档页面中
ApiInfo apiInfo = new ApiInfoBuilder()
.title("PowerJob")
.description("Distributed scheduling and computing framework.")
.license("Apache Licence 2")
.termsOfServiceUrl("https://github.com/PowerJob/PowerJob")
.version(version)
.version(serverInfoService.getServerVersion())
.build();
return new Docket(DocumentationType.SWAGGER_2)

View File

@ -6,6 +6,7 @@ import tech.powerjob.common.response.ResultDTO;
import tech.powerjob.server.common.constants.SwitchableStatus;
import tech.powerjob.server.persistence.remote.repository.InstanceInfoRepository;
import tech.powerjob.server.persistence.remote.repository.JobInfoRepository;
import tech.powerjob.server.remote.server.ServerInfoService;
import tech.powerjob.server.remote.worker.WorkerClusterQueryService;
import tech.powerjob.server.common.module.WorkerInfo;
import tech.powerjob.server.web.response.SystemOverviewVO;
@ -39,6 +40,8 @@ public class SystemInfoController {
@Resource
private InstanceInfoRepository instanceInfoRepository;
@Resource
private ServerInfoService serverInfoService;
@Resource
private WorkerClusterQueryService workerClusterQueryService;
@ -67,6 +70,9 @@ public class SystemInfoController {
// 服务器时间
overview.setServerTime(DateFormatUtils.format(new Date(), OmsConstant.TIME_PATTERN));
SystemOverviewVO.CurrentServerInfo info = new SystemOverviewVO.CurrentServerInfo(serverInfoService.getServerId(), serverInfoService.getServerIp(), serverInfoService.getServerVersion());
overview.setCurrentServerInfo(info);
return ResultDTO.success(overview);
}

View File

@ -1,6 +1,8 @@
package tech.powerjob.server.web.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
/**
* 系统概览
@ -10,6 +12,7 @@ import lombok.Data;
*/
@Data
public class SystemOverviewVO {
private long jobCount;
private long runningInstanceCount;
private long failedInstanceCount;
@ -17,4 +20,14 @@ public class SystemOverviewVO {
private String timezone;
// 服务器时间
private String serverTime;
private CurrentServerInfo currentServerInfo;
@Getter
@AllArgsConstructor
public static class CurrentServerInfo {
private final long id;
private final String ip;
private final String version;
}
}