浏览代码

监控页面初步添加,服务详情页面样式修改

demon 8 年之前
父节点
当前提交
7f7d6fab0c

+ 1 - 3
hos-broker/src/main/java/com/yihu/hos/HosBrokerApplication.java

@ -3,11 +3,9 @@ package com.yihu.hos;
import com.yihu.hos.common.listener.ApplicationStartListener;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
@SpringBootApplication
@EnableScheduling
public class HosBrokerApplication {

+ 3 - 3
hos-broker/src/main/java/com/yihu/hos/common/scheduler/EnvScheduler.java

@ -27,15 +27,15 @@ public class EnvScheduler {
    @Scheduled(cron="0 0/1 * * * ?") //每分钟执行一次
    public void statusCheck() {
        logger.info("每分钟执行一次。开始============================================");
        System.out.println("每分钟执行一次。开始============================================");
        //TODO 采集服务器健康监控指标数据 statusTask.healthCheck();
        collectEnvHealth();
        logger.info("每分钟执行一次。结束。");
        System.out.println("每分钟执行一次。结束。");
    }
    public String collectEnvHealth(){
        MongodbUtil monoEnv = new MongodbUtil("envHealth");
        try {
            MongodbUtil monoEnv = new MongodbUtil("envHealth");
            Document result = new Document();
            result.put("create_date", DateUtil.getCurrentString(DateUtil.DEFAULT_YMDHMSDATE_FORMAT));
            result.put("create_time", new Date());

+ 32 - 25
hos-broker/src/main/java/com/yihu/hos/common/util/SigarUtil.java

@ -1,5 +1,7 @@
package com.yihu.hos.common.util;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import org.hyperic.sigar.*;
import java.net.InetAddress;
@ -132,8 +134,8 @@ public class SigarUtil {
        memory.put("total", getDouble((double)mem.getTotal() / 1024L / 1024L / 1024L));
        memory.put("used",  getDouble((double)mem.getUsed() / 1024L / 1024L / 1024L));
        memory.put("free",  getDouble((double)mem.getFree() / 1024L / 1024L / 1024L));
        memory.put("freePerc", getDouble(mem.getFreePercent() / 1024L / 1024L / 1024L));
        memory.put("usedPerc", getDouble(mem.getUsedPercent() / 1024L / 1024L / 1024L));
        memory.put("freePerc", getDouble(mem.getFreePercent()));
        memory.put("usedPerc", getDouble(mem.getUsedPercent()));
        //交换区
        memory.put("swapTotal", getDouble((double)swap.getTotal() / 1024L / 1024L / 1024L));
        memory.put("swapUsed",  getDouble((double)swap.getUsed() / 1024L / 1024L / 1024L));
@ -147,32 +149,37 @@ public class SigarUtil {
     * @return
     * @throws SigarException
     */
    public static Map<String, Object> cpu() throws SigarException {
    public static Map<String, Object> cpu()  {
        Map<String, Object> cpuMap = new HashMap<>();
        CpuInfo infos[] = sigar.getCpuInfoList();
        CpuPerc cpuPerc = sigar.getCpuPerc();
        CpuInfo info1 = infos[0];
        //cpu信息
        cpuMap.put("quantity", infos.length);
        cpuMap.put("model", info1.getModel());
        cpuMap.put("totalCores", info1.getTotalCores());
        cpuMap.put("totalSockets", info1.getTotalSockets());
        cpuMap.put("Mhz", info1.getMhz());
        //cpu使用率
        try {
            CpuInfo infos[] = sigar.getCpuInfoList();
            CpuPerc cpuPerc = sigar.getCpuPerc();
            CpuInfo info1 = infos[0];
            //cpu信息
            cpuMap.put("quantity", infos.length);
            cpuMap.put("model", info1.getModel());
            cpuMap.put("totalCores", info1.getTotalCores());
            cpuMap.put("totalSockets", info1.getTotalSockets());
            cpuMap.put("Mhz", info1.getMhz());
            //cpu使用率
            String totalPerc = String.format("%.2f", cpuPerc.getCombined() * 100);
            String userPerc = String.format("%.2f", cpuPerc.getUser() * 100);
            String sysPerc = String.format("%.2f", cpuPerc.getSys() * 100);
            String wait = String.format("%.2f", cpuPerc.getWait() * 100);
            String nice = String.format("%.2f", cpuPerc.getNice() * 100);
            String freePerc = String.format("%.2f", cpuPerc.getIdle() * 100);
        String totalPerc = String.format("%.2f", cpuPerc.getCombined() * 100);
        String userPerc = String.format("%.2f", cpuPerc.getUser() * 100);
        String sysPerc = String.format("%.2f", cpuPerc.getSys() * 100);
        String wait = String.format("%.2f", cpuPerc.getWait() * 100);
        String nice = String.format("%.2f", cpuPerc.getNice() * 100);
        String freePerc = String.format("%.2f", cpuPerc.getIdle() * 100);
            cpuMap.put("totalPerc", getDouble(cpuPerc.getCombined() * 100));
            cpuMap.put("userPerc", getDouble(cpuPerc.getUser() * 100));
            cpuMap.put("sysPerc", getDouble(cpuPerc.getSys() * 100));
            cpuMap.put("wait", getDouble(cpuPerc.getWait() * 100));
            cpuMap.put("nice", getDouble(cpuPerc.getNice() * 100));
            cpuMap.put("freePerc", getDouble(cpuPerc.getIdle() * 100));
        cpuMap.put("totalPerc", getDouble(cpuPerc.getCombined() * 100));
        cpuMap.put("userPerc", getDouble(cpuPerc.getUser() * 100));
        cpuMap.put("sysPerc", getDouble(cpuPerc.getSys() * 100));
        cpuMap.put("wait", getDouble(cpuPerc.getWait() * 100));
        cpuMap.put("nice", getDouble(cpuPerc.getNice() * 100));
        cpuMap.put("freePerc", getDouble(cpuPerc.getIdle() * 100));
        }catch (SigarException e){
            e.printStackTrace();
        }
        return cpuMap;
    }

+ 1 - 1
hos-broker/src/main/resources/application.yml

@ -21,7 +21,7 @@ timer:
---
spring:
  profiles: dev
  profiles: hzy
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://172.19.103.71:3306/esb?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true

src/main/resources/config/dbhelper.properties → hos-broker/src/main/resources/config/dbhelper.properties


二进制
hos-broker/src/main/resources/libsigar-amd64-linux.so


二进制
hos-broker/src/main/resources/sigar-amd64-winnt.dll


+ 14 - 3
src/main/java/com/yihu/hos/server/controller/ServerEnvironmentController.java

@ -19,16 +19,27 @@ import javax.annotation.Resource;
 * @vsrsion 1.0
 * Created at 2016/10/26.
 */
@Controller
@RequestMapping("/serverEnv")
@Controller("serverEnvironmentController")
@RequestMapping("/server/environment")
public class ServerEnvironmentController {
    @Resource(name = ServerEnvironmentService.BEAN_ID)
    private ServerEnvironmentService serverEnvironmentService;
    //跳转到列表页
    @RequestMapping("/initial")
    public String resourceBrowse(
    public String initial(Model model) {
        model.addAttribute("contentPage", "/server/sEnvManage");
        return "partView";
    }
    @RequestMapping(value = "/initialValue", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "echar获取", produces = "application/json", notes = "echar获取")
    public String initial(
            Model model,
            @ApiParam(name = "type", value = "类型", required = true)
            @RequestParam(value = "type") String type,

+ 2 - 1
src/main/webapp/WEB-INF/ehr/jsp/common/indexJs.jsp

@ -97,7 +97,8 @@
                {id: 97, pid: 9, text: '字典管理', url: '${contextRoot}/dict/initial' },
                {id: 98, pid: 9, text: '系统参数', url: '${contextRoot}/param/initial'},
                {id: 99, pid: 9, text: '<spring:message code="title.app.manage"/>', url: '${contextRoot}/app/initial'},
                {id: 100, pid: 9, text: '<spring:message code="title.flow.manage"/>', url: '${contextRoot}/flow/initial'}
                {id: 100, pid: 9, text: '<spring:message code="title.flow.manage"/>', url: '${contextRoot}/flow/initial'},
                {id: 101, pid: 9, text: '系统监控', url: '${contextRoot}/server/environment/initial'}
            ];
            me.menuTree = $('#ulTree').ligerTree({
                data: menu,

+ 121 - 0
src/main/webapp/WEB-INF/ehr/jsp/server/monitorJs.jsp

@ -0,0 +1,121 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="utf-8"%>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<script src="${contextRoot}/develop/lib/jquery/jquery-1.9.1.js"></script>
<script src="${contextRoot}/develop/lib/plugin/switchery/switchery.js"></script>
<script src="${staticRoot}/echarts/echarts.js"></script>
<script>
//  function getTistoryGrid(selTask){
//    if(selTask!=""){
////由于文档div还没生成,延迟加载表格
//      setTimeout(function(){
//        taskHistoryGrid = $("#div_task_history_grid").ligerGrid($.LigerGridEx.config({
//          url: contextRoot+'/task/historyTasks',
//          method:'GET',
//          newPage:1,
//          parms: {
//            jobType:selTask,
//          },
//          columns: [
//            { display: '任务开始时间', name: 'beginDate', width: '20%' },
//            { display: '任务结束时间', name: 'endDate', width: '20%' },
//            { display: '执行总数', name: 'totalNum', width: '15%' },
//            { display: '采集成功数', name: 'succNum', width: '15%' },
//            { display: '上传成功数', name: 'uploadNum', width: '15%' },
//            { display: '注册成功数', name: 'registerNum', width: '15%' }
//          ],
//          inWindow: false,
//          enabledEdit: true,
//          validate : true,
//          unSetValidateAttr:false
//        }));
//        if(taskHistoryGrid!=null){
//          taskHistoryGrid.adjustToWidth();
//        }
//      }, 0);
//
//    }
//  }
  //获取某次采集情况数据
  $.ajax({
    type: "GET",
    url : "${contextRoot}/serverEnv/usage",
    dataType : "json",
    data:{type:"cpu",beginTime:"2015-10-22 00:00:00",endTime:"2016-10-31 00:00:00"},
    cache:false,
    success :function(re){
      if(re.successFlg) {
        var data = re.data;
        if(data!=null && data.length>0)
        {
          var count = 0
          var success =0;
          var x = [];
          var y1=[];
          var y2=[];
          for(var i=0;i<data.length;i++)
          {
            count += data[i].data.totalPerc;
            success += data[i].data.userPerc;
            x.push(data[i].create_date);
            y1.push(data[i].data.totalPerc);
            y2.push(data[i].data.userPerc);
          }
          // 基于准备好的dom,初始化echarts实例
          var myChart = echarts.init(document.getElementById('main'));
          // 指定图表的配置项和数据
          var option = {
            title: {
              text: 'CPU 指标测试',
              left: 'center'
            },
            tooltip: {
              trigger: 'item',
              formatter: '{b} <br/>{a} : {c}'
            },
            legend: {
              left: 'left',
              data: ['2的指数', '3的指数']
            },
            xAxis: {
              type: 'category',
              name: 'x',
              splitLine: {show: false},
              data: x
            },
            grid: {
              left: '3%',
              right: '4%',
              bottom: '3%',
              containLabel: true
            },
            yAxis: {
              type: 'log',
              name: 'y'
            },
            series: [
              {
                name: '使用率',
                type: 'line',
                data: y1
              }
            ]
          };
          myChart.setOption(option);
        }
        else{
          me.clearTop();
        }
      }
      else{
        $.ligerDialog.error(re.message);
      }
    },
    error :function(data){
      $.ligerDialog.error("Status:"+data.status +"(" +data.statusText+")");
    }
  });
</script>

+ 43 - 0
src/main/webapp/WEB-INF/ehr/jsp/server/sEnvManage.jsp

@ -0,0 +1,43 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<style>
    .c-item{float:left;height: 30px;line-height: 30px;width: 60px;background: #fff;color:#000;text-align: center;font-size: 12px;border:1px solid #dcdcdc;}
    .c-bor-r{border-right: 0;}
    .c-item.active{background: #16B3EE;color:#fff}
</style>
<!-- ####### 页面部分 ####### -->
<div id="div_wrapper">
    <!--左边 区域-->
    <div position="left"  style="margin-left:10px;margin-top:10px;">
        <div class="m-form-control" style="margin-bottom: 15px">
            <input type="text" id="div_wrapper_left_inp_search" placeholder="请输入服务器名"/>
        </div>
        <ul id="div_wrapper_left_ul_resourcetree" class="m-snav"></ul>
    </div>
    <div position="center" style="margin-left:10px;margin-top:10px;margin-right:10px;">
        <!-- ####### 查询条件部分 ####### -->
        <div class="m-form-inline" data-role-form>
            <div class="m-form-group">
                <div class="m-form-control">
                    <!--输入框-->
                    <input type="text" id="inp_search" placeholder="请输入服务器时间" data-attr-scan="searchNm"/>
                </div>
                <div class="m-form-control">
                    <!--按钮:查询 & 新增-->
                </div>
            </div>
        <%-- 选显卡部分--%>
        <div style="margin-bottom: 10px;height: 30px;" class="div-menu">
            <div class="c-item c-bor-r active" data-item="cpu">CPU</div>
            <div class="c-item c-bor-r" data-item="memory">内存</div>
            <div class="c-item c-bor-r" data-item="files">磁盘</div>
            <div class="c-item" data-item="net">网络</div>
        </div>
            <%-- echarts 数据--%>
        <div id="main" style="width: 600px;height:400px;border: solid deepskyblue 1px;"></div>
    </div>
</div>

+ 340 - 0
src/main/webapp/WEB-INF/ehr/jsp/server/sEnvManageJs.jsp

@ -0,0 +1,340 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<script src="${contextRoot}/develop/lib/plugin/echarts/echarts-all.js"></script>
<script>
    $(function () {
        //初始化
        var type = $(".div-menu .active").attr("data-item");
        var beginTime,endTime;
        getServerInfo(type,beginTime,endTime);
        $(".div-menu").on("click",".c-item",function(){
            $(".div-menu .c-item").removeClass("active");
            $(this).addClass("active");
            var type = $(this).attr("data-item");
            //获取服务器监控数据
            var beginTime,endTime;
            getServerInfo(type,beginTime,endTime);
        })
    });
    function getServerInfo(type,beginTime,endTime){
        $.ajax({
            type: "GET",
            url : "${contextRoot}/server/environment/usage",
            dataType : "json",
            data:{type:type,beginTime:"2015-10-22 00:00:00",endTime:"2016-11-31 00:00:00"},
            cache:false,
            success :function(re){
                if(re.successFlg) {
                    //TODO 设置图表
                    switch(type)
                    {
                        case "cpu":
                            env.cpuInfo(re);
                            break;
                        case "memory":
                            env.memory(re);
                            break;
                        case "files":
                            env.files(re);
                            break;
                        case "net":
                            env.net(re);
                            break;
                        default:
                            break;
                    }
                }
                else{
                    $.ligerDialog.error(re.message);
                }
            },
            error :function(data){
                $.ligerDialog.error("Status:"+data.status +"(" +data.statusText+")");
            }
        });
    }
    var env ={
        cpuInfo:function(re){
         var data = re.data;
         if(data!=null && data.length>0)
         {
             var count = 0
             var success =0;
             var x = [];
             var y1=[];
             var y2=[];
             for(var i=0;i<data.length;i++)
             {
                 var create_date = data[i].create_date.substring(11,16);
                 x.push(create_date);
                 count += data[i].data.totalPerc;
                 success += data[i].data.userPerc;
                 y1.push(data[i].data.totalPerc);
                 y2.push(data[i].data.userPerc);
             }
             // 基于准备好的dom,初始化echarts实例
             var myChart = echarts.init(document.getElementById('main'));
             // 指定图表的配置项和数据
             var option = {
                 title: {
                     text: ' CPU指标',
                     left: 'center'
                 },
                 tooltip: {
                     trigger: 'item',
                     formatter: '{b} <br/>{a} : {c}'
                 },
                 legend: {
                     left: 'left',
                     data: ['总使用率', '用户使用率']
                 },
                 xAxis: {
                     type: 'category',
                     name: '时间',
                     splitLine: {show: false},
                     data: x
                 },
                 grid: {
                     left: '3%',
                     right: '4%',
                     bottom: '3%',
                     containLabel: true
                 },
                 yAxis: {
                     type: 'log',
                     name: '使用率'
                 },
                 series: [
                     {
                         name: '总使用率',
                         type: 'line',
                         data: y1
                     },
                     {
                         name: '用户使用率',
                         type: 'line',
                         data: y2
                     }
                 ]
             };
             myChart.setOption(option);
         }
         else{
             me.clearTop();
         }
    },
        memory:function(re){
            var data = re.data;
            if(data!=null && data.length>0)
            {
                var count = 0
                var success =0;
                var x = [];
                var y1=[];
                var y2=[];
                for(var i=0;i<data.length;i++)
                {
                    var create_date = data[i].create_date.substring(11,16);
                    x.push(create_date);
                    count += data[i].data.usedPerc;
                    y1.push(data[i].data.usedPerc);
                    y2.push(data[i].data.freePerc);
                }
                // 基于准备好的dom,初始化echarts实例
                var myChart = echarts.init(document.getElementById('main'));
                // 指定图表的配置项和数据
                var option = {
                    title: {
                        text: ' 内存使用率指标',
                        left: 'center'
                    },
                    tooltip: {
                        trigger: 'item',
                        formatter: '{b} <br/>{a} : {c}'
                    },
                    legend: {
                        left: 'left',
                        data: ['使用率', '空闲率']
                    },
                    xAxis: {
                        type: 'category',
                        name: '时间',
                        splitLine: {show: false},
                        data: x
                    },
                    grid: {
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                        containLabel: true
                    },
                    yAxis: {
                        type: 'log',
                        name: '使用率'
                    },
                    series: [
                        {
                            name: '使用率',
                            type: 'line',
                            data: y1
                        },
                        {
                            name: '空闲率',
                            type: 'line',
                            data: y2
                        }
                    ]
                };
                myChart.setOption(option);
            }
            else{
                me.clearTop();
            }
        },
        files:function(re){
            var data = re.data;
            if(data!=null && data.length>0)
            {
                var x = [];
                var y1=[];
                var y2=[];
                for(var i=0;i<data.length;i++)
                {
                    var count = 0
                    var total =0;
                    var create_date = data[i].create_date.substring(11,16);
                    x.push(create_date);
                    for(var j=0;j<data[i].data.length;j++){
                        count += data[i].data[j].used;
                        total += data[i].data[j].total;
                    }
                    y1.push(count);
                    y2.push(total);
                }
                // 基于准备好的dom,初始化echarts实例
                var myChart = echarts.init(document.getElementById('main'));
                // 指定图表的配置项和数据
                var option = {
                    title: {
                        text: ' 磁盘指标',
                        left: 'center'
                    },
                    tooltip: {
                        trigger: 'item',
                        formatter: '{b} <br/>{a} : {c}'
                    },
                    legend: {
                        left: 'left',
                        data: ['已使用', '总量']
                    },
                    xAxis: {
                        type: 'category',
                        name: '时间',
                        splitLine: {show: false},
                        data: x
                    },
                    grid: {
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                        containLabel: true
                    },
                    yAxis: {
                        type: 'log',
                        name: '使用率'
                    },
                    series: [
                        {
                            name: '已使用',
                            type: 'line',
                            data: y1
                        },
                        {
                            name: '总量',
                            type: 'line',
                            data: y2
                        }
                    ]
                };
                myChart.setOption(option);
            }
            else{
                me.clearTop();
            }
        },
        net:function(re){
            var me = this;
            var data = re.data;
            if(data!=null && data.length>0)
            {
                var x = [];
                var y1=[];
                var y2=[];
                for(var i=0;i<data.length;i++)
                {
                    var create_date = data[i].create_date.substring(11,16);
                    x.push(create_date);
                    y1.push(data[i].data.rxbps);
                    y2.push(data[i].data.txbps);
                }
                // 基于准备好的dom,初始化echarts实例
                var myChart = echarts.init(document.getElementById('main'));
                // 指定图表的配置项和数据
                var option = {
                    title: {
                        text: ' 网络指标',
                        left: 'center'
                    },
                    tooltip: {
                        trigger: 'item',
                        formatter: '{b} <br/>{a} : {c}'
                    },
                    legend: {
                        left: 'left',
                        data: ['接收', '发送']
                    },
                        xAxis: {
                        type: 'category',
                        name: '时间',
                        splitLine: {show: false},
                        data: x
                    },
                    grid: {
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                        containLabel: true
                    },
                    yAxis: {
                        type: 'log',
                        name: '使用率(kbps)'
                    },
                    series: [
                        {
                            name: '接收',
                            type: 'line',
                            data: y1
                        },
                        {
                            name: '发送',
                            type: 'line',
                            data: y2
                        }
                    ]
                };
                myChart.setOption(option);
            }
            else{
                me.clearTop();
            }
        }
    }
</script>

+ 10 - 10
src/main/webapp/WEB-INF/ehr/jsp/system/app/appServiceDetail.jsp

@ -14,14 +14,14 @@
        <div class="m-form-control ">
            <div class="l-text">
                <input type="text" class="l-text-field required" readonly="readonly"  name="name"/>
                <input type="text" class="l-text-field required"  disabled="disabled"  name="name"/>
            </div>
        </div>
        <label style="width:110px;"><span class="red">*&nbsp;</span>版本:</label>
        <div class="m-form-control">
            <div class="l-text">
                <input type="text" style="width:180px;" readonly="readonly" class="l-text-field"  name="version"/>
                <input type="text" style="width:180px;"  disabled="disabled" class="l-text-field"  name="version"/>
            </div>
        </div>
@ -29,7 +29,7 @@
        <div class="m-form-control">
            <div class="l-text">
                <input  type="text" id="txtValid" class="l-text-field required" readonly="readonly"  name="valid"/>
                <input  type="text" id="txtValid" class="l-text-field required"  disabled="disabled"  name="valid"/>
            </div>
        </div>
    </div>
@ -40,7 +40,7 @@
        <div class="m-form-control">
            <div class="l-text" style="width:800px;">
                <input type="text"  class="l-text-field" readonly="readonly" name="endpoint"/>
                <input type="text"  class="l-text-field" disabled="disabled" name="endpoint"/>
            </div>
        </div>
    </div>
@ -50,7 +50,7 @@
        <div class="m-form-control">
            <div class="l-text" style="width:800px;">
                <input type="text" class="l-text-field" readonly="readonly" name="description"/>
                <input type="text" class="l-text-field"  disabled="disabled" name="description"/>
            </div>
        </div>
    </div>
@ -60,7 +60,7 @@
        <div class="m-form-control">
            <div class="l-text" style="width:800px;">
                <input type="text" id="healthReportType" readonly="readonly"  class="l-text-field required"  name="healthReportType"/>
                <input type="text" id="healthReportType"  disabled="disabled"  class="l-text-field required"  name="healthReportType"/>
            </div>
        </div>
    </div>
@ -70,7 +70,7 @@
        <div class="m-form-control">
            <div class="l-text" style="width:800px;">
                <input type="text" id="metricsReportType" class="l-text-field required" readonly="readonly" name="metricsReportType"/>
                <input type="text" id="metricsReportType" class="l-text-field required"  disabled="disabled" name="metricsReportType"/>
            </div>
        </div>
    </div>
@ -81,7 +81,7 @@
        <div class="m-form-control">
            <div class="l-text"  style="width:800px;height:100px;" >
                <textarea  style="width:800px;height:100px;" class="l-text-field required"    readonly="readonly" name="requesModule"></textarea>
                <textarea  style="width:800px;height:100px;resize: none;" class="l-text-field required"     disabled="disabled" name="requesModule"></textarea>
            </div>
        </div>
    </div>
@ -101,7 +101,7 @@
        <div class="m-form-control">
            <div class="l-text"  style="width:800px;height:100px;">
                <textarea style="width:800px;height:100px;"   class="l-text-field required" readonly="readonly" name="responeResult"></textarea>
                <textarea style="width:800px;height:100px;resize: none;"   class="l-text-field required"  disabled="disabled" name="responeResult"></textarea>
            </div>
        </div>
    </div>
@ -111,7 +111,7 @@
        <div class="m-form-control">
            <div class="l-text"  style="width:800px;height:100px;" >
                <textarea style="width:800px;height:100px;"  class="l-text-field required" readonly="readonly" name="responeError"></textarea>
                <textarea style="width:800px;height:100px;resize: none;"  class="l-text-field required"  disabled="disabled" name="responeError"></textarea>
            </div>
        </div>
    </div>