Commit 7d61f114c9d48735e7ca4a7c26bccb7d6e2b8c86

Authored by Liu Haoyu
1 parent 1f0913bc

查询功能修改;

处理可能出现的bug;
添加接口文档;
Linux服务器监听运维功能.md 0 → 100644
  1 +# 1. 基础资源占用
  2 +
  3 +## 1.1 获取指定module的输出
  4 +
  5 +| 调用方式 | 接口地址 |
  6 +| ------------ | :-------------------------------------------------------- |
  7 +| POST | http://ip:port/occupationOfBasicResources/getInfoByModule |
  8 +| Content-Type | application/json;charset=UTF-8 |
  9 +
  10 +| 请求参数 | | | | |
  11 +| ----------- | ------------ | ------ | ---- | ------------------------------------- |
  12 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  13 +| module | 功能编码 | string | 是 | |
  14 +```
  15 +请求示例
  16 +{
  17 + "module": "disk_partitions"
  18 +}
  19 +```
  20 +
  21 +| 返回结果 | | | |
  22 +| -------- | -------- | ------ | -------------------------------------- |
  23 +| 参数项 | 名称 | 类型 | 描述 |
  24 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  25 +| message | 提示信息 | string | 返回提示信息 |
  26 +| data | 返回信息 | string | 200,返回操作成功;其他code对应失败信息 |
  27 +
  28 +```
  29 +响应示例
  30 +{
  31 + "code": 200,
  32 + "message": "操作成功",
  33 + "data": []// 对应module返回内容信息
  34 +}
  35 +```
  36 +
  37 +## 1.2 jar包发布
  38 +
  39 +| 调用方式 | 接口地址 |
  40 +| ------------ | :------------------------------------------------------ |
  41 +| POST | http://ip:port/occupationOfBasicResources/deployJarFile |
  42 +| Content-Type | application/json;charset=UTF-8 |
  43 +
  44 +| 请求参数 | | | | |
  45 +| -------- | ------------- | ------ | ---- | -------------------------------------------- |
  46 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  47 +| filePath | jar包保存位置 | string | 是 | jar包保存位置 |
  48 +| logPath | 日志输出位置 | string | 否 | 默认jar包相同位置名称和jar包文件名相同 |
  49 +| user | 用户信息 | string | 否 | 用户信息(权限用, 默认-1, 表示超级管理员权限) |
  50 +
  51 +```
  52 +请求示例
  53 +{
  54 + "filePath": "/home/liuhaoyu/linuxTest/linuxTest-1.0-SNAPSHOT.jar"
  55 +}
  56 +```
  57 +
  58 +| 返回结果 | | | |
  59 +| -------- | -------- | ------ | ------------------------------- |
  60 +| 参数项 | 名称 | 类型 | 描述 |
  61 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  62 +| message | 提示信息 | string | 返回提示信息 |
  63 +| data | 返回信息 | string | 发布包对应的进程id |
  64 +
  65 +```
  66 +响应示例
  67 +{
  68 + "code": 200,
  69 + "message": "操作成功",
  70 + "data": {
  71 + "taskId" : "12390"
  72 + }
  73 +}
  74 +```
  75 +
  76 +## 1.3 获取当前进行中的java服务
  77 +
  78 +| 调用方式 | 接口地址 |
  79 +| ------------ | :-------------------------------------------------------- |
  80 +| POST | http://ip:port/occupationOfBasicResources/getJpsInfo |
  81 +| Content-Type | application/json;charset=UTF-8 |
  82 +
  83 +| 返回结果 | | | |
  84 +| -------- | -------- | -------- | ------------------------------- |
  85 +| 参数项 | 名称 | 类型 | 描述 |
  86 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  87 +| message | 提示信息 | string | 返回提示信息 |
  88 +| data | 返回信息 | string | |
  89 +| +process | 线程信息 | string[] | 对应的进程信息 |
  90 +
  91 +```
  92 +响应示例
  93 +{
  94 + "code": 200,
  95 + "message": "操作成功",
  96 + "data": {
  97 + "process": [
  98 + "39921 Jps",
  99 + "39864 linuxListener-0.0.1-SNAPSHOT.jar"
  100 + ]
  101 + }
  102 +}
  103 +```
  104 +
  105 +## 1.4 停止jar包进程
  106 +
  107 +| 调用方式 | 接口地址 |
  108 +| ------------ | :---------------------------------------------------- |
  109 +| POST | http://ip:port/occupationOfBasicResources/killJarTask |
  110 +| Content-Type | application/json;charset=UTF-8 |
  111 +
  112 +| 请求参数 | | | | |
  113 +| -------- | -------- | ------ | ---- | ---------------------- |
  114 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  115 +| taskId | 进程号 | string | 是 | 需要停止的进程号 |
  116 +| user | 用户信息 | string | 是 | 用户信息(做权限控制用) |
  117 +
  118 +```
  119 +请求示例
  120 +{
  121 + "user": "-1",
  122 + "taskId": "37527"
  123 +}
  124 +```
  125 +
  126 +| 返回结果 | | | |
  127 +| -------- | -------- | ------ | --------------------------------- |
  128 +| 参数项 | 名称 | 类型 | 描述 |
  129 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  130 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  131 +| data | 返回信息 | | |
  132 +
  133 +```
  134 +响应示例
  135 +{
  136 + "code": 200,
  137 + "message": "操作成功",
  138 + "data": {}
  139 +}
  140 +```
  141 +
  142 +
  143 +
  144 +# 2. 日志监控
  145 +
  146 +## 2.1 设置log文件所在位置信息
  147 +
  148 +| 调用方式 | 接口地址 |
  149 +| ------------ | :----------------------------------- |
  150 +| POST | http://ip:port/logListener/setLogMsg |
  151 +| Content-Type | application/json;charset=UTF-8 |
  152 +
  153 +| 请求参数 | | | | |
  154 +| -------- | ---------------- | ------ | ---- | ---------------- |
  155 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  156 +| filePath | 日志文件存在位置 | string | 是 | 日志文件存在位置 |
  157 +
  158 +```
  159 +请求示例
  160 +{
  161 + "filePath": "/home/liuhaoyu/linuxTest.log"
  162 +}
  163 +```
  164 +
  165 +| 返回结果 | | | |
  166 +| -------- | ------------- | ------ | --------------------------------- |
  167 +| 参数项 | 名称 | 类型 | 描述 |
  168 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  169 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  170 +| data | 返回信息 | | |
  171 +| +logKey | 监听用日志key | String | 监听用日志key |
  172 +
  173 +```
  174 +响应示例
  175 +{
  176 + "code": 200,
  177 + "message": "操作成功",
  178 + "data": {
  179 + "logKey": "linuxTest-1.0-SNAPSHOT.log|1575596806840"
  180 + }
  181 +}
  182 +```
  183 +
  184 +
  185 +
  186 +## 2.2 开启日志监控输出
  187 +
  188 +| 调用方式 | 接口地址 |
  189 +| ------------ | :------------------------------------------ |
  190 +| POST | http://ip:port/logListener/startLogListener |
  191 +| Content-Type | application/json;charset=UTF-8 |
  192 +
  193 +| 请求参数 | | | | |
  194 +| -------- | ------------- | ------ | ---- | ------------- |
  195 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  196 +| logKey | 监听用日志key | string | 是 | 监听用日志key |
  197 +
  198 +```
  199 +请求示例
  200 +{
  201 + "logKey": "linuxTest-1.0-SNAPSHOT.log|1575596806840"
  202 +}
  203 +```
  204 +
  205 +| 返回结果 | | | |
  206 +| -------- | -------- | ------ | --------------------------------- |
  207 +| 参数项 | 名称 | 类型 | 描述 |
  208 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  209 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  210 +| data | 返回信息 | | |
  211 +
  212 +```
  213 +响应示例
  214 +{
  215 + "code": 200,
  216 + "message": "操作成功",
  217 + "data": null
  218 +}
  219 +```
  220 +
  221 +
  222 +
  223 +## 2.3 获取日志的输出内容
  224 +
  225 +| 调用方式 | 接口地址 |
  226 +| ------------ | :-------------------------------------- |
  227 +| POST | http://ip:port/logListener/getLogOutput |
  228 +| Content-Type | application/json;charset=UTF-8 |
  229 +
  230 +| 请求参数 | | | | |
  231 +| -------- | ------------- | ------ | ---- | ------------- |
  232 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  233 +| logKey | 监听用日志key | string | 是 | 监听用日志key |
  234 +
  235 +```
  236 +请求示例
  237 +{
  238 + "logKey": "linuxTest-1.0-SNAPSHOT.log|1575596806840"
  239 +}
  240 +```
  241 +
  242 +| 返回结果 | | | |
  243 +| -------- | -------- | ------ | --------------------------------- |
  244 +| 参数项 | 名称 | 类型 | 描述 |
  245 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  246 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  247 +| data | 返回信息 | String | 时间段内日志的具体输出 |
  248 +
  249 +```
  250 +响应示例
  251 +{
  252 + "code": 200,
  253 + "message": "操作成功",
  254 + "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]"
  255 +}
  256 +```
  257 +
  258 +
  259 +
  260 +## 2.4 停止日志监控输出
  261 +
  262 +| 调用方式 | 接口地址 |
  263 +| ------------ | :----------------------------------------- |
  264 +| POST | http://ip:port/logListener/stopLogListener |
  265 +| Content-Type | application/json;charset=UTF-8 |
  266 +
  267 +| 请求参数 | | | | |
  268 +| -------- | ------------- | ------ | ---- | ------------- |
  269 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  270 +| logKey | 监听用日志key | string | 是 | 监听用日志key |
  271 +
  272 +```
  273 +请求示例
  274 +{
  275 + "logKey": "linuxTest-1.0-SNAPSHOT.log|1575596806840"
  276 +}
  277 +```
  278 +
  279 +| 返回结果 | | | |
  280 +| -------- | -------- | ------ | --------------------------------- |
  281 +| 参数项 | 名称 | 类型 | 描述 |
  282 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  283 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  284 +| data | 返回信息 | | |
  285 +
  286 +```
  287 +响应示例
  288 +{
  289 + "code": 200,
  290 + "message": "操作成功",
  291 + "data": null
  292 +}
  293 +```
  294 +
  295 +
  296 +# 3. 监控器调度
  297 +
  298 +## 3.1 获取正在生效的监控功能
  299 +
  300 +| 调用方式 | 接口地址 |
  301 +| ------------ | :----------------------------------------- |
  302 +| POST | http://ip:port/background/getWorkingListener |
  303 +| Content-Type | application/json;charset=UTF-8 |
  304 +
  305 +
  306 +| 返回结果 | | | |
  307 +| -------- | ---------------- | -------- | --------------------------------- |
  308 +| 参数项 | 名称 | 类型 | 描述 |
  309 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  310 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  311 +| data | 返回信息 | | |
  312 +| +result | 生效中的监控功能 | String[] | 生效中的监控功能 |
  313 +
  314 +```
  315 +响应示例
  316 +{
  317 + "code": 200,
  318 + "message": "操作成功",
  319 + "data": {
  320 + "result": [
  321 + "cpu_utilization",
  322 + "memory_info"
  323 + ]
  324 + }
  325 +}
  326 +```
  327 +
  328 +
  329 +
  330 +## 3.2 添加新的监控器
  331 +
  332 +| 调用方式 | 接口地址 |
  333 +| ------------ | :------------------------------------------- |
  334 +| POST | http://ip:port/background/addWorkingListener |
  335 +| Content-Type | application/json;charset=UTF-8 |
  336 +
  337 +| 请求参数 | | | | |
  338 +| -------- | ------------------ | -------- | ---- | ------------------ |
  339 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  340 +| modules | 添加到监听的功能id | string[] | 是 | 添加到监听的功能id |
  341 +
  342 +```
  343 +请求示例
  344 +{
  345 + "modules": ["cpu_utilization", "memory_info"]
  346 +}
  347 +```
  348 +
  349 +
  350 +| 返回结果 | | | |
  351 +| -------- | -------- | ------ | --------------------------------- |
  352 +| 参数项 | 名称 | 类型 | 描述 |
  353 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  354 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  355 +| data | 返回信息 | | |
  356 +
  357 +```
  358 +响应示例
  359 +{
  360 + "code": 200,
  361 + "message": "操作成功",
  362 + "data": {}
  363 +}
  364 +```
  365 +
  366 +
  367 +
  368 +## 3.3 删除存在的监控器
  369 +
  370 +| 调用方式 | 接口地址 |
  371 +| ------------ | :---------------------------------------------- |
  372 +| POST | http://ip:port/background/removeWorkingListener |
  373 +| Content-Type | application/json;charset=UTF-8 |
  374 +
  375 +| 请求参数 | | | | |
  376 +| -------- | ---------------- | -------- | ---- | ---------------- |
  377 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  378 +| modules | 停止监听的功能id | string[] | 是 | 停止监听的功能id |
  379 +
  380 +```
  381 +请求示例
  382 +{
  383 + "modules": ["cpu_utilization", "memory_info"]
  384 +}
  385 +```
  386 +
  387 +
  388 +| 返回结果 | | | |
  389 +| -------- | -------- | ------ | --------------------------------- |
  390 +| 参数项 | 名称 | 类型 | 描述 |
  391 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  392 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  393 +| data | 返回信息 | | |
  394 +
  395 +```
  396 +响应示例
  397 +{
  398 + "code": 200,
  399 + "message": "操作成功",
  400 + "data": {}
  401 +}
  402 +```
  403 +
  404 +
  405 +
  406 +## 3.4 获取module对应的内容
  407 +
  408 +| 调用方式 | 接口地址 |
  409 +| ------------ | :---------------------------------------------- |
  410 +| POST | http://ip:port/background/removeWorkingListener |
  411 +| Content-Type | application/json;charset=UTF-8 |
  412 +
  413 +| 请求参数 | | | | |
  414 +| --------- | -------- | ------ | ---- | ---------- |
  415 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  416 +| modules | 功能id | string | 是 | 功能id |
  417 +| startTime | 开始时间 | long | 是 | 开始时间戳 |
  418 +| endTime | 结束时间 | long | 是 | 结束时间戳 |
  419 +
  420 +```
  421 +请求示例
  422 +{
  423 + "module": "cpu_utilization",
  424 + "startTime": 1575599542344,
  425 + "endTime": 1575599545346
  426 +}
  427 +```
  428 +
  429 +
  430 +| 返回结果 | | | |
  431 +| --------------- | ------------ | ------ | --------------------------------- |
  432 +| 参数项 | 名称 | 类型 | 描述 |
  433 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  434 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  435 +| data | 返回信息 | | |
  436 +| +id | 主键 | string | 主键 |
  437 +| +moduleId | 功能id | string | 功能id |
  438 +| +occurrenceTime | 数据获取时间 | long | 数据获取时间 |
  439 +| +occupancy | 占用率 | double | 占用率 |
  440 +
  441 +```
  442 +响应示例
  443 +{
  444 + "code": 200,
  445 + "message": "操作成功",
  446 + "data": [
  447 + {
  448 + "id": "1",
  449 + "moduleId": "cpu_utilization",
  450 + "occurrenceTime": 1575599542344,
  451 + "occupancy": 1.0
  452 + },
  453 + {
  454 + "id": "2",
  455 + "moduleId": "cpu_utilization",
  456 + "occurrenceTime": 1575599545346,
  457 + "occupancy": 4.0
  458 + }
  459 + ]
  460 +}
  461 +```
  462 +
... ...
src/main/java/com/objecteye/service/impl/OccupationOfBasicResourcesServiceImpl.java
... ... @@ -117,7 +117,7 @@ public class OccupationOfBasicResourcesServiceImpl implements IOccupationOfBasic
117 117 JSONObject resultObj = new JSONObject();
118 118 if (redisTemplate.opsForHash().hasKey(GeneralContent.REDIS_TASK_ID_OWNER, taskId)) {
119 119 String owner = (String) redisTemplate.opsForHash().get(GeneralContent.REDIS_TASK_ID_OWNER, taskId);
120   - if (Objects.equals(owner, user) || superPower) {
  120 + if (Objects.equals(user, owner) || superPower) {
121 121 String cmd = "kill -9 " + taskId;
122 122 List<String> outList = new ArrayList<>();
123 123 executeLinuxCmd(cmd, outList);
... ...
src/main/resources/com.objecteye.mapper/SyBasicResourceHistoryMapper.xml
... ... @@ -16,11 +16,12 @@
16 16 from sy_basic_resource_history
17 17 where id = #{id,jdbcType=VARCHAR}
18 18 </select>
19   - <select id="getModuleInfoQueryByCondition" resultType="com.objecteye.entity.SyBasicResourceHistory">
20   - select * from sy_basic_resource_history a
  19 + <select id="getModuleInfoQueryByCondition" parameterType="java.util.HashMap"
  20 + resultType="com.objecteye.entity.SyBasicResourceHistory">
  21 + select id, module_id moduleId, occurrence_time occurrenceTime, occupancy from sy_basic_resource_history a
21 22 <where>
22 23 <if test="module != null and '' != module">
23   - and a.module_id like '%' || #{module} || '%'
  24 + and a.module_id like concat('%', #{module,jdbcType=VARCHAR},'%')
24 25 </if>
25 26 <if test="startTime != null"><![CDATA[
26 27 and a.occurrence_time >= #{startTime,jdbcType=BIGINT}
... ... @@ -44,8 +45,8 @@
44 45 <insert id="insert" parameterType="com.objecteye.entity.SyBasicResourceHistory">
45 46 insert into sy_basic_resource_history (id, module_id, occurrence_time,
46 47 occupancy)
47   - values (#{id,jdbcType=VARCHAR}, #{moduleId,jdbcType=VARCHAR}, #{occurrenceTime,jdbcType=BIGINT},
48   - #{occupancy,jdbcType=DOUBLE})
  48 + values (#{id,jdbcType=VARCHAR}, #{moduleId,jdbcType=VARCHAR}, #{occurrenceTime,jdbcType=BIGINT},
  49 + #{occupancy,jdbcType=DOUBLE})
49 50 </insert>
50 51 <insert id="insertSelective" parameterType="com.objecteye.entity.SyBasicResourceHistory">
51 52 insert into sy_basic_resource_history
... ...