Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Eladmin
Commits
2b6d94f8
Commit
2b6d94f8
authored
Nov 05, 2019
by
zhanghouying
Browse files
实现第一版服务器监控
parent
aaa373bd
Changes
38
Show whitespace changes
Inline
Side-by-side
eladmin-monitor/src/main/resources/sigar-lib/libsigar-universal-macosx.dylib
0 → 100644
View file @
2b6d94f8
File added
eladmin-monitor/src/main/resources/sigar-lib/libsigar-universal64-macosx.dylib
0 → 100644
View file @
2b6d94f8
File added
eladmin-monitor/src/main/resources/sigar-lib/libsigar-x86-freebsd-5.so
0 → 100644
View file @
2b6d94f8
File added
eladmin-monitor/src/main/resources/sigar-lib/libsigar-x86-freebsd-6.so
0 → 100644
View file @
2b6d94f8
File added
eladmin-monitor/src/main/resources/sigar-lib/libsigar-x86-linux.so
0 → 100644
View file @
2b6d94f8
File added
eladmin-monitor/src/main/resources/sigar-lib/libsigar-x86-solaris.so
0 → 100644
View file @
2b6d94f8
File added
eladmin-monitor/src/main/resources/sigar-lib/sigar-amd64-winnt.dll
0 → 100644
View file @
2b6d94f8
File added
eladmin-monitor/src/main/resources/sigar-lib/sigar-x86-winnt.dll
0 → 100644
View file @
2b6d94f8
File added
eladmin-monitor/src/main/resources/sigar-lib/sigar-x86-winnt.lib
0 → 100644
View file @
2b6d94f8
File added
eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/Server.java
0 → 100644
View file @
2b6d94f8
package
me.zhengjie.modules.monitor.domain
;
import
lombok.Data
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
javax.persistence.*
;
import
java.io.Serializable
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Entity
@Data
@Table
(
name
=
"monitor_server"
)
public
class
Server
implements
Serializable
{
/**
* 编号
*/
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
private
Integer
id
;
/**
* 名称
*/
@Column
(
name
=
"name"
)
private
String
name
;
/**
* IP地址
*/
@Column
(
name
=
"ip"
,
nullable
=
false
)
private
String
ip
;
/**
* 访问端口
*/
@Column
(
name
=
"port"
)
private
Integer
port
;
/**
* 状态
*/
@Column
(
name
=
"state"
)
private
String
state
;
/**
* CPU使用率
*/
@Column
(
name
=
"cpu_rate"
)
private
Double
cpuRate
;
/**
* CPU内核数
*/
@Column
(
name
=
"cpu_core"
)
private
Integer
cpuCore
;
/**
* 内存总数
*/
@Column
(
name
=
"mem_total"
)
private
Double
memTotal
;
/**
* 内存使用量
*/
@Column
(
name
=
"mem_used"
)
private
Double
memUsed
;
/**
* 磁盘总量
*/
@Column
(
name
=
"disk_total"
)
private
Double
diskTotal
;
/**
* 磁盘使用量
*/
@Column
(
name
=
"disk_used"
)
private
Double
diskUsed
;
/**
* 交换区总量
*/
@Column
(
name
=
"swap_total"
)
private
Double
swapTotal
;
/**
* 交换区使用量
*/
@Column
(
name
=
"swap_used"
)
private
Double
swapUsed
;
/**
* 排序
*/
@Column
(
name
=
"sort"
)
private
Integer
sort
;
public
void
copy
(
Server
source
){
BeanUtil
.
copyProperties
(
source
,
this
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
));
}
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/ServerRepository.java
0 → 100644
View file @
2b6d94f8
package
me.zhengjie.modules.monitor.repository
;
import
me.zhengjie.modules.monitor.domain.Server
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
public
interface
ServerRepository
extends
JpaRepository
<
Server
,
Integer
>,
JpaSpecificationExecutor
<
Server
>
{
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/ServerController.java
0 → 100644
View file @
2b6d94f8
package
me.zhengjie.modules.monitor.rest
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
me.zhengjie.aop.log.Log
;
import
me.zhengjie.modules.monitor.domain.Server
;
import
me.zhengjie.modules.monitor.service.ServerService
;
import
me.zhengjie.modules.monitor.service.dto.ServerQueryCriteria
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Api
(
tags
=
"Server管理"
)
@RestController
@RequestMapping
(
"/api/server"
)
public
class
ServerController
{
private
final
ServerService
serverService
;
public
ServerController
(
ServerService
serverService
)
{
this
.
serverService
=
serverService
;
}
@GetMapping
@Log
(
"查询Server"
)
@ApiOperation
(
"查询Server"
)
@PreAuthorize
(
"@el.check('server:list')"
)
public
ResponseEntity
getServers
(
ServerQueryCriteria
criteria
,
Pageable
pageable
){
return
new
ResponseEntity
<>(
serverService
.
queryAll
(
criteria
,
pageable
),
HttpStatus
.
OK
);
}
@PostMapping
@Log
(
"新增Server"
)
@ApiOperation
(
"新增Server"
)
@PreAuthorize
(
"@el.check('server:add')"
)
public
ResponseEntity
create
(
@Validated
@RequestBody
Server
resources
){
return
new
ResponseEntity
<>(
serverService
.
create
(
resources
),
HttpStatus
.
CREATED
);
}
@PutMapping
@Log
(
"修改Server"
)
@ApiOperation
(
"修改Server"
)
@PreAuthorize
(
"@el.check('server:edit')"
)
public
ResponseEntity
update
(
@Validated
@RequestBody
Server
resources
){
serverService
.
update
(
resources
);
return
new
ResponseEntity
(
HttpStatus
.
NO_CONTENT
);
}
@DeleteMapping
(
value
=
"/{id}"
)
@Log
(
"删除Server"
)
@ApiOperation
(
"删除Server"
)
@PreAuthorize
(
"@el.check('server:del')"
)
public
ResponseEntity
delete
(
@PathVariable
Integer
id
){
serverService
.
delete
(
id
);
return
new
ResponseEntity
(
HttpStatus
.
OK
);
}
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/ServerService.java
0 → 100644
View file @
2b6d94f8
package
me.zhengjie.modules.monitor.service
;
import
me.zhengjie.modules.monitor.domain.Server
;
import
me.zhengjie.modules.monitor.service.dto.ServerDTO
;
import
me.zhengjie.modules.monitor.service.dto.ServerQueryCriteria
;
import
org.springframework.data.domain.Pageable
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
public
interface
ServerService
{
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map
<
String
,
Object
>
queryAll
(
ServerQueryCriteria
criteria
,
Pageable
pageable
);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<ServerDTO>
*/
List
<
ServerDTO
>
queryAll
(
ServerQueryCriteria
criteria
);
/**
* 根据ID查询
* @param id ID
* @return ServerDTO
*/
ServerDTO
findById
(
Integer
id
);
ServerDTO
create
(
Server
resources
);
void
update
(
Server
resources
);
void
delete
(
Integer
id
);
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/dto/ServerDTO.java
0 → 100644
View file @
2b6d94f8
package
me.zhengjie.modules.monitor.service.dto
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Data
public
class
ServerDTO
implements
Serializable
{
// 编号
private
Integer
id
;
// 名称
private
String
name
;
// IP地址
private
String
ip
;
// 访问端口
private
Integer
port
;
// 状态
private
String
state
;
// CPU使用率
private
Float
cpuRate
;
// CPU内核数
private
Integer
cpuCore
;
// 内存总数
private
Float
memTotal
;
// 内存使用量
private
Float
memUsed
;
// 磁盘总量
private
Float
diskTotal
;
// 磁盘使用量
private
Float
diskUsed
;
// 交换区总量
private
Float
swapTotal
;
// 交换区使用量
private
Float
swapUsed
;
// 排序
private
Integer
sort
;
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/dto/ServerQueryCriteria.java
0 → 100644
View file @
2b6d94f8
package
me.zhengjie.modules.monitor.service.dto
;
import
lombok.Data
;
import
me.zhengjie.annotation.Query
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Data
public
class
ServerQueryCriteria
{
// 模糊
@Query
(
type
=
Query
.
Type
.
INNER_LIKE
)
private
String
name
;
// 模糊
@Query
(
type
=
Query
.
Type
.
INNER_LIKE
)
private
String
ip
;
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/ServerServiceImpl.java
0 → 100644
View file @
2b6d94f8
package
me.zhengjie.modules.monitor.service.impl
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
me.zhengjie.modules.monitor.domain.Server
;
import
me.zhengjie.modules.monitor.repository.ServerRepository
;
import
me.zhengjie.modules.monitor.service.ServerService
;
import
me.zhengjie.modules.monitor.service.dto.ServerDTO
;
import
me.zhengjie.modules.monitor.service.dto.ServerQueryCriteria
;
import
me.zhengjie.modules.monitor.service.mapper.ServerMapper
;
import
me.zhengjie.utils.PageUtil
;
import
me.zhengjie.utils.QueryHelp
;
import
me.zhengjie.utils.ValidationUtil
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
ServerServiceImpl
implements
ServerService
{
private
final
ServerRepository
serverRepository
;
private
final
ServerMapper
serverMapper
;
public
ServerServiceImpl
(
ServerRepository
serverRepository
,
ServerMapper
serverMapper
)
{
this
.
serverRepository
=
serverRepository
;
this
.
serverMapper
=
serverMapper
;
}
@Override
public
Map
<
String
,
Object
>
queryAll
(
ServerQueryCriteria
criteria
,
Pageable
pageable
){
Page
<
Server
>
page
=
serverRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
),
pageable
);
page
.
forEach
(
server
->
{
try
{
server
.
setState
(
"1"
);
String
url
=
String
.
format
(
"http://%s:%d/api/serverMonitor"
,
server
.
getIp
(),
server
.
getPort
());
String
res
=
HttpUtil
.
get
(
url
,
1000
);
JSONObject
obj
=
JSONObject
.
parseObject
(
res
);
server
.
setCpuRate
(
obj
.
getDouble
(
"cpuRate"
));
server
.
setCpuCore
(
obj
.
getInteger
(
"cpuCore"
));
server
.
setMemTotal
(
obj
.
getDouble
(
"memTotal"
));
server
.
setMemUsed
(
obj
.
getDouble
(
"memUsed"
));
server
.
setDiskTotal
(
obj
.
getDouble
(
"diskTotal"
));
server
.
setDiskUsed
(
obj
.
getDouble
(
"diskUsed"
));
server
.
setSwapTotal
(
obj
.
getDouble
(
"swapTotal"
));
server
.
setSwapUsed
(
obj
.
getDouble
(
"swapUsed"
));
}
catch
(
Exception
e
)
{
server
.
setState
(
"0"
);
e
.
printStackTrace
();
}
});
return
PageUtil
.
toPage
(
page
.
map
(
serverMapper:
:
toDto
));
}
@Override
public
List
<
ServerDTO
>
queryAll
(
ServerQueryCriteria
criteria
){
return
serverMapper
.
toDto
(
serverRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
)));
}
@Override
public
ServerDTO
findById
(
Integer
id
)
{
Server
server
=
serverRepository
.
findById
(
id
).
orElseGet
(
Server:
:
new
);
ValidationUtil
.
isNull
(
server
.
getId
(),
"Server"
,
"id"
,
id
);
return
serverMapper
.
toDto
(
server
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ServerDTO
create
(
Server
resources
)
{
return
serverMapper
.
toDto
(
serverRepository
.
save
(
resources
));
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
Server
resources
)
{
Server
server
=
serverRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
Server:
:
new
);
ValidationUtil
.
isNull
(
server
.
getId
(),
"Server"
,
"id"
,
resources
.
getId
());
server
.
copy
(
resources
);
serverRepository
.
save
(
server
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Integer
id
)
{
serverRepository
.
deleteById
(
id
);
}
}
eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/mapper/ServerMapper.java
0 → 100644
View file @
2b6d94f8
package
me.zhengjie.modules.monitor.service.mapper
;
import
me.zhengjie.base.BaseMapper
;
import
me.zhengjie.modules.monitor.domain.Server
;
import
me.zhengjie.modules.monitor.service.dto.ServerDTO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.ReportingPolicy
;
/**
* @author Zhang houying
* @date 2019-11-03
*/
@Mapper
(
componentModel
=
"spring"
,
unmappedTargetPolicy
=
ReportingPolicy
.
IGNORE
)
public
interface
ServerMapper
extends
BaseMapper
<
ServerDTO
,
Server
>
{
}
pom.xml
View file @
2b6d94f8
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
<module>
eladmin-system
</module>
<module>
eladmin-system
</module>
<module>
eladmin-tools
</module>
<module>
eladmin-tools
</module>
<module>
eladmin-generator
</module>
<module>
eladmin-generator
</module>
<module>
eladmin-monitor
</module>
</modules>
</modules>
<name>
EL-ADMIN后台管理系统
</name>
<name>
EL-ADMIN后台管理系统
</name>
...
...
Prev
1
2
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment