JFinal结合Sigar、echarts实现后台服务器监控

简介: 服务端 public void cpu() throws SigarException { Sigar sigar = new Sigar(); CpuInfo infos[] = sigar.

这里写图片描述

服务端

    public void cpu() throws SigarException {  
        Sigar sigar = new Sigar();  
        CpuInfo infos[] = sigar.getCpuInfoList();  
        CpuPerc cpuList[] = sigar.getCpuPercList();  
        JSONObject jsonObject = new JSONObject();  
        JSONArray jsonArray = new JSONArray();  
        for (int i = 0, len = infos.length; i < len; i++) {// 不管是单块CPU还是多CPU都适用  
            CpuInfo info = infos[i];  
            JSONObject jso = new JSONObject();  
            jso.put("mhz", info.getMhz()); //CPU的总量MHz  
            jso.put("company", info.getVendor()); //CPU的厂商  
            jso.put("model", info.getModel()); //CPU型号类别  
            jso.put("cache_size", info.getCacheSize()); // 缓冲缓存数量  
            CpuPerc cpu = cpuList[i];  
            jso.put("freq_user", CpuPerc.format(cpu.getUser())); //CPU的用户使用率  
            jso.put("freq_sys", CpuPerc.format(cpu.getSys())); //CPU的系统使用率  
            jso.put("freq_wait", CpuPerc.format(cpu.getWait())); //CPU的当前等待率  
            jso.put("freq_nice", CpuPerc.format(cpu.getNice())); //CPU的当前错误率  
            jso.put("freq_idle", CpuPerc.format(cpu.getIdle())); //CPU的当前空闲率  
            jso.put("freq_combined", CpuPerc.format(cpu.getCombined())); //CPU总的使用率  
            jsonArray.add(jso);  
        }  
        jsonObject.put("cpu", jsonArray);  
        renderJson(jsonObject);
    }  

    public void jvm() throws UnknownHostException {  
        Runtime r = Runtime.getRuntime();  
        Properties props = System.getProperties();  
        JSONObject jsonObject = new JSONObject();  
        jsonObject.put("jvm_memory_total", r.totalMemory()); //JVM可以使用的总内存  
        jsonObject.put("jvm_memory_free", r.freeMemory()); //JVM可以使用的剩余内存  
        jsonObject.put("jvm_processor_avaliable", r.availableProcessors()); //JVM可以使用的处理器个数  
        jsonObject.put("jvm_java_version", props.getProperty("java.version")); //Java的运行环境版本  
        jsonObject.put("jvm_java_vendor", props.getProperty("java.vendor")); //Java的运行环境供应商  
        jsonObject.put("jvm_java_home", props.getProperty("java.home")); //Java的安装路径  
        jsonObject.put("jvm_java_specification_version", props.getProperty("java.specification.version")); //Java运行时环境规范版本  
        jsonObject.put("jvm_java_class_path", props.getProperty("java.class.path")); //Java的类路径  
        jsonObject.put("jvm_java_library_path", props.getProperty("java.library.path")); //Java加载库时搜索的路径列表  
        jsonObject.put("jvm_java_io_tmpdir", props.getProperty("java.io.tmpdir")); //默认的临时文件路径  
        jsonObject.put("jvm_java_ext_dirs", props.getProperty("java.ext.dirs")); //扩展目录的路径  
        renderJson(jsonObject);
    }  

    public void memory() throws SigarException {  
        Sigar sigar = new Sigar();  
        Mem mem = sigar.getMem();  
        JSONObject jsonObject = new JSONObject();  
        jsonObject.put("memory_total", mem.getTotal() / (1024 * 1024L));// 内存总量  
        jsonObject.put("memory_used", mem.getUsed() / (1024 * 1024L));// 当前内存使用量  
        jsonObject.put("memory_free", mem.getFree() / (1024 * 1024L));// 当前内存剩余量  
        Swap swap = sigar.getSwap();  
        jsonObject.put("memory_swap_total", swap.getTotal() / (1024 * 1024L));// 交换区总量  
        jsonObject.put("memory_swap_used", swap.getUsed() / (1024 * 1024L));// 当前交换区使用量  
        jsonObject.put("memory_swap_free", swap.getFree() / (1024 * 1024L));// 当前交换区剩余量  
        renderJson(jsonObject);
    }  

前端例子,cpu.js

layui.use(['jquery'], function() {
      $ = layui.jquery;

      $(function(){
            var cpu_length=0;
            var date = [];
            var data = [];
            var cpu_echarts=[];
            $.ajax({
                url:"/back/home/cpu",
                type:"get",
                async: false,
                success:function(data){
                cpu_length=data.cpu.length;
                }
            });
             var dd=[];
              for(var j=120;j>0;j--){
                  dd.push(0);
              } 
            for(var i=0;i<cpu_length;i++){
            $("#cpu_show").append('<div id="cpu_'+i+'" class="cpu"></div>');
            cpu_echarts[i]=echarts.init(document.getElementById("cpu_"+i))
            data[i]=dd;
            }
            for(var i=120;i>0;i--){
            date.push(i);
            } 

            var option = {
                animation:false,
                title: {
                    left: 'center',
                    text: 'cpu',
                },

                xAxis: {
                    type: 'category',
                    boundaryGap: false,
                    data: date,
                    axisLabel:{
                        formatter:'{value}s'
                    }
                },
                yAxis: {
                    type: 'value',
                    boundaryGap: false,
                    max:100,
                    axisLabel:{
                        formatter:'{value}%'
                    }
                },
                series: [
                    {
                        name:'cpu数据',
                        type:'line',
                        smooth:true,
                        symbol: 'none',
                        sampling: 'average',
                        itemStyle: {
                            normal: {
                                color: 'rgb(255, 70, 131)'
                            }
                        },
                        areaStyle: {
                            normal: {
                                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                                    offset: 0,
                                    color: 'rgb(255, 158, 68)'
                                }, {
                                    offset: 1,
                                    color: 'rgb(255, 70, 131)'
                                }])
                            }
                        },
                        data: []
                    }
                ]
            };
          setInterval(function (){
              $.post("/back/home/cpu",function(result){
                    $("#serverInfo_cpu").empty();
                     $("#serverInfo_cpu").append(JSON.stringify(result));
                     $.each(result.cpu,function(k,v){
                     var ddd=[];
                     for(var i=1;i<120;i++){
                        ddd.push(data[k][i]);
                        }
                     var num=(v.freq_combined).substring(0,(v.freq_combined).length-1);
                      ddd.push(Math.floor(num));
                      data[k]=ddd;
                      option.series[0].data=data[k];
                      option.yAxis.max=100;
                      option.title.text="cpu"+k+"  使用率"+num+"%";
                      cpu_echarts[k].setOption(option);

                     });
                });
        },1000);

        });
});  

附上sigar相关包 免积分下载地址:

http://download.csdn.net/detail/acmjk/9889210

目录
相关文章
|
安全 JavaScript 应用服务中间件
vue-cli搭建代理服务器,将请求转发到后台服务器
vue-cli搭建代理服务器,将请求转发到后台服务器
140 0
|
网络协议 算法 Java
万字长文 | 保姆级的后台服务器开发C++学习路线
这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」
|
4月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
169 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
2月前
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
75 1
|
7月前
|
Java 关系型数据库 MySQL
基于springboot心理树洞管理系统(分前后台springboot+mybatis+mysql+maven+vue+echarts)
基于springboot心理树洞管理系统(分前后台springboot+mybatis+mysql+maven+vue+echarts)
Echarts大屏开发|前后台通用场景
Echarts大屏开发|前后台通用场景
|
5月前
|
JavaScript Linux 网络安全
若依修改,若依启动之后,网页端无法访问接口,宝塔和云服务器的端口都要放开,就好了,软件开发常见流程,后台端口就可以访问了
若依修改,若依启动之后,网页端无法访问接口,宝塔和云服务器的端口都要放开,就好了,软件开发常见流程,后台端口就可以访问了
|
7月前
|
Java BI 数据库
基于SSM框架实现面向小微企业的简历管理系统企业简历管理系统(分前后台spring+springmvc+mybatis+maven+jsp+css+echarts)
基于SSM框架实现面向小微企业的简历管理系统企业简历管理系统(分前后台spring+springmvc+mybatis+maven+jsp+css+echarts)
|
6月前
|
数据可视化 网络协议 Linux
Linux 怎样通过win 远程桌面连接链接Linux后台服务器的可视化图形界面
Linux 怎样通过win 远程桌面连接链接Linux后台服务器的可视化图形界面
74 0
|
数据可视化 Ubuntu Unix
Linux 怎样通过win 远程桌面连接链接Linux后台服务器的可视化图形界面
第一行:允许用户youuser执行sudo命令(需要输入密码). 第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
107 0