diff --git a/Linux服务器监听运维功能.md b/Linux服务器监听运维功能.md new file mode 100644 index 0000000..2e2fd1f --- /dev/null +++ b/Linux服务器监听运维功能.md @@ -0,0 +1,462 @@ +# 1. 基础资源占用 + +## 1.1 获取指定module的输出 + +| 调用方式 | 接口地址 | +| ------------ | :-------------------------------------------------------- | +| POST | http://ip:port/occupationOfBasicResources/getInfoByModule | +| Content-Type | application/json;charset=UTF-8 | + +| 请求参数 | | | | | +| ----------- | ------------ | ------ | ---- | ------------------------------------- | +| 参数项 | 名称 | 类型 | 必选 | 描述 | +| module | 功能编码 | string | 是 | | +``` +请求示例 +{ + "module": "disk_partitions" +} +``` + +| 返回结果 | | | | +| -------- | -------- | ------ | -------------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 返回提示信息 | +| data | 返回信息 | string | 200,返回操作成功;其他code对应失败信息 | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": []// 对应module返回内容信息 +} +``` + +## 1.2 jar包发布 + +| 调用方式 | 接口地址 | +| ------------ | :------------------------------------------------------ | +| POST | http://ip:port/occupationOfBasicResources/deployJarFile | +| Content-Type | application/json;charset=UTF-8 | + +| 请求参数 | | | | | +| -------- | ------------- | ------ | ---- | -------------------------------------------- | +| 参数项 | 名称 | 类型 | 必选 | 描述 | +| filePath | jar包保存位置 | string | 是 | jar包保存位置 | +| logPath | 日志输出位置 | string | 否 | 默认jar包相同位置名称和jar包文件名相同 | +| user | 用户信息 | string | 否 | 用户信息(权限用, 默认-1, 表示超级管理员权限) | + +``` +请求示例 +{ + "filePath": "/home/liuhaoyu/linuxTest/linuxTest-1.0-SNAPSHOT.jar" +} +``` + +| 返回结果 | | | | +| -------- | -------- | ------ | ------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 返回提示信息 | +| data | 返回信息 | string | 发布包对应的进程id | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": { + "taskId" : "12390" + } +} +``` + +## 1.3 获取当前进行中的java服务 + +| 调用方式 | 接口地址 | +| ------------ | :-------------------------------------------------------- | +| POST | http://ip:port/occupationOfBasicResources/getJpsInfo | +| Content-Type | application/json;charset=UTF-8 | + +| 返回结果 | | | | +| -------- | -------- | -------- | ------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 返回提示信息 | +| data | 返回信息 | string | | +| +process | 线程信息 | string[] | 对应的进程信息 | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": { + "process": [ + "39921 Jps", + "39864 linuxListener-0.0.1-SNAPSHOT.jar" + ] + } +} +``` + +## 1.4 停止jar包进程 + +| 调用方式 | 接口地址 | +| ------------ | :---------------------------------------------------- | +| POST | http://ip:port/occupationOfBasicResources/killJarTask | +| Content-Type | application/json;charset=UTF-8 | + +| 请求参数 | | | | | +| -------- | -------- | ------ | ---- | ---------------------- | +| 参数项 | 名称 | 类型 | 必选 | 描述 | +| taskId | 进程号 | string | 是 | 需要停止的进程号 | +| user | 用户信息 | string | 是 | 用户信息(做权限控制用) | + +``` +请求示例 +{ + "user": "-1", + "taskId": "37527" +} +``` + +| 返回结果 | | | | +| -------- | -------- | ------ | --------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 | +| data | 返回信息 | | | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": {} +} +``` + + + +# 2. 日志监控 + +## 2.1 设置log文件所在位置信息 + +| 调用方式 | 接口地址 | +| ------------ | :----------------------------------- | +| POST | http://ip:port/logListener/setLogMsg | +| Content-Type | application/json;charset=UTF-8 | + +| 请求参数 | | | | | +| -------- | ---------------- | ------ | ---- | ---------------- | +| 参数项 | 名称 | 类型 | 必选 | 描述 | +| filePath | 日志文件存在位置 | string | 是 | 日志文件存在位置 | + +``` +请求示例 +{ + "filePath": "/home/liuhaoyu/linuxTest.log" +} +``` + +| 返回结果 | | | | +| -------- | ------------- | ------ | --------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 | +| data | 返回信息 | | | +| +logKey | 监听用日志key | String | 监听用日志key | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": { + "logKey": "linuxTest-1.0-SNAPSHOT.log|1575596806840" + } +} +``` + + + +## 2.2 开启日志监控输出 + +| 调用方式 | 接口地址 | +| ------------ | :------------------------------------------ | +| POST | http://ip:port/logListener/startLogListener | +| Content-Type | application/json;charset=UTF-8 | + +| 请求参数 | | | | | +| -------- | ------------- | ------ | ---- | ------------- | +| 参数项 | 名称 | 类型 | 必选 | 描述 | +| logKey | 监听用日志key | string | 是 | 监听用日志key | + +``` +请求示例 +{ + "logKey": "linuxTest-1.0-SNAPSHOT.log|1575596806840" +} +``` + +| 返回结果 | | | | +| -------- | -------- | ------ | --------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 | +| data | 返回信息 | | | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": null +} +``` + + + +## 2.3 获取日志的输出内容 + +| 调用方式 | 接口地址 | +| ------------ | :-------------------------------------- | +| POST | http://ip:port/logListener/getLogOutput | +| Content-Type | application/json;charset=UTF-8 | + +| 请求参数 | | | | | +| -------- | ------------- | ------ | ---- | ------------- | +| 参数项 | 名称 | 类型 | 必选 | 描述 | +| logKey | 监听用日志key | string | 是 | 监听用日志key | + +``` +请求示例 +{ + "logKey": "linuxTest-1.0-SNAPSHOT.log|1575596806840" +} +``` + +| 返回结果 | | | | +| -------- | -------- | ------ | --------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 | +| data | 返回信息 | String | 时间段内日志的具体输出 | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": "0\n****************swapUse*****************\n6810\n*****************memUse*****************\n执行命令[ cat /proc/meminfo]\n0\n****************swapUse*****************\n6808\n*****************memUse*****************\n执行命令[ cat /proc/meminfo]\n0\n****************swapUse*****************\n6806\n*****************memUse*****************\n执行命令[ cat /proc/meminfo]\n0\n****************swapUse*****************\n6804\n*****************memUse*****************\n执行命令[ cat /proc/meminfo]\n0\n****************swapUse*****************\n6799\n*****************memUse*****************\n执行命令[ cat /proc/meminfo]" +} +``` + + + +## 2.4 停止日志监控输出 + +| 调用方式 | 接口地址 | +| ------------ | :----------------------------------------- | +| POST | http://ip:port/logListener/stopLogListener | +| Content-Type | application/json;charset=UTF-8 | + +| 请求参数 | | | | | +| -------- | ------------- | ------ | ---- | ------------- | +| 参数项 | 名称 | 类型 | 必选 | 描述 | +| logKey | 监听用日志key | string | 是 | 监听用日志key | + +``` +请求示例 +{ + "logKey": "linuxTest-1.0-SNAPSHOT.log|1575596806840" +} +``` + +| 返回结果 | | | | +| -------- | -------- | ------ | --------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 | +| data | 返回信息 | | | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": null +} +``` + + +# 3. 监控器调度 + +## 3.1 获取正在生效的监控功能 + +| 调用方式 | 接口地址 | +| ------------ | :----------------------------------------- | +| POST | http://ip:port/background/getWorkingListener | +| Content-Type | application/json;charset=UTF-8 | + + +| 返回结果 | | | | +| -------- | ---------------- | -------- | --------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 | +| data | 返回信息 | | | +| +result | 生效中的监控功能 | String[] | 生效中的监控功能 | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": { + "result": [ + "cpu_utilization", + "memory_info" + ] + } +} +``` + + + +## 3.2 添加新的监控器 + +| 调用方式 | 接口地址 | +| ------------ | :------------------------------------------- | +| POST | http://ip:port/background/addWorkingListener | +| Content-Type | application/json;charset=UTF-8 | + +| 请求参数 | | | | | +| -------- | ------------------ | -------- | ---- | ------------------ | +| 参数项 | 名称 | 类型 | 必选 | 描述 | +| modules | 添加到监听的功能id | string[] | 是 | 添加到监听的功能id | + +``` +请求示例 +{ + "modules": ["cpu_utilization", "memory_info"] +} +``` + + +| 返回结果 | | | | +| -------- | -------- | ------ | --------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 | +| data | 返回信息 | | | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": {} +} +``` + + + +## 3.3 删除存在的监控器 + +| 调用方式 | 接口地址 | +| ------------ | :---------------------------------------------- | +| POST | http://ip:port/background/removeWorkingListener | +| Content-Type | application/json;charset=UTF-8 | + +| 请求参数 | | | | | +| -------- | ---------------- | -------- | ---- | ---------------- | +| 参数项 | 名称 | 类型 | 必选 | 描述 | +| modules | 停止监听的功能id | string[] | 是 | 停止监听的功能id | + +``` +请求示例 +{ + "modules": ["cpu_utilization", "memory_info"] +} +``` + + +| 返回结果 | | | | +| -------- | -------- | ------ | --------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 | +| data | 返回信息 | | | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": {} +} +``` + + + +## 3.4 获取module对应的内容 + +| 调用方式 | 接口地址 | +| ------------ | :---------------------------------------------- | +| POST | http://ip:port/background/removeWorkingListener | +| Content-Type | application/json;charset=UTF-8 | + +| 请求参数 | | | | | +| --------- | -------- | ------ | ---- | ---------- | +| 参数项 | 名称 | 类型 | 必选 | 描述 | +| modules | 功能id | string | 是 | 功能id | +| startTime | 开始时间 | long | 是 | 开始时间戳 | +| endTime | 结束时间 | long | 是 | 结束时间戳 | + +``` +请求示例 +{ + "module": "cpu_utilization", + "startTime": 1575599542344, + "endTime": 1575599545346 +} +``` + + +| 返回结果 | | | | +| --------------- | ------------ | ------ | --------------------------------- | +| 参数项 | 名称 | 类型 | 描述 | +| code | 响应码 | int | 200为操作成功,其他code表示失败 | +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 | +| data | 返回信息 | | | +| +id | 主键 | string | 主键 | +| +moduleId | 功能id | string | 功能id | +| +occurrenceTime | 数据获取时间 | long | 数据获取时间 | +| +occupancy | 占用率 | double | 占用率 | + +``` +响应示例 +{ + "code": 200, + "message": "操作成功", + "data": [ + { + "id": "1", + "moduleId": "cpu_utilization", + "occurrenceTime": 1575599542344, + "occupancy": 1.0 + }, + { + "id": "2", + "moduleId": "cpu_utilization", + "occurrenceTime": 1575599545346, + "occupancy": 4.0 + } + ] +} +``` + diff --git a/src/main/java/com/objecteye/service/impl/OccupationOfBasicResourcesServiceImpl.java b/src/main/java/com/objecteye/service/impl/OccupationOfBasicResourcesServiceImpl.java index 06b001e..82e24d9 100644 --- a/src/main/java/com/objecteye/service/impl/OccupationOfBasicResourcesServiceImpl.java +++ b/src/main/java/com/objecteye/service/impl/OccupationOfBasicResourcesServiceImpl.java @@ -117,7 +117,7 @@ public class OccupationOfBasicResourcesServiceImpl implements IOccupationOfBasic JSONObject resultObj = new JSONObject(); if (redisTemplate.opsForHash().hasKey(GeneralContent.REDIS_TASK_ID_OWNER, taskId)) { String owner = (String) redisTemplate.opsForHash().get(GeneralContent.REDIS_TASK_ID_OWNER, taskId); - if (Objects.equals(owner, user) || superPower) { + if (Objects.equals(user, owner) || superPower) { String cmd = "kill -9 " + taskId; List outList = new ArrayList<>(); executeLinuxCmd(cmd, outList); diff --git a/src/main/resources/com.objecteye.mapper/SyBasicResourceHistoryMapper.xml b/src/main/resources/com.objecteye.mapper/SyBasicResourceHistoryMapper.xml index 8ceb36c..9089bbb 100644 --- a/src/main/resources/com.objecteye.mapper/SyBasicResourceHistoryMapper.xml +++ b/src/main/resources/com.objecteye.mapper/SyBasicResourceHistoryMapper.xml @@ -16,11 +16,12 @@ from sy_basic_resource_history where id = #{id,jdbcType=VARCHAR} - + select id, module_id moduleId, occurrence_time occurrenceTime, occupancy from sy_basic_resource_history a - and a.module_id like '%' || #{module} || '%' + and a.module_id like concat('%', #{module,jdbcType=VARCHAR},'%') = #{startTime,jdbcType=BIGINT} @@ -44,8 +45,8 @@ insert into sy_basic_resource_history (id, module_id, occurrence_time, occupancy) - values (#{id,jdbcType=VARCHAR}, #{moduleId,jdbcType=VARCHAR}, #{occurrenceTime,jdbcType=BIGINT}, - #{occupancy,jdbcType=DOUBLE}) + values (#{id,jdbcType=VARCHAR}, #{moduleId,jdbcType=VARCHAR}, #{occurrenceTime,jdbcType=BIGINT}, + #{occupancy,jdbcType=DOUBLE}) insert into sy_basic_resource_history