关于用sigar+jfreechart做系统监控并在web前台展示的问题

时间:2022-04-07 15:11:38
经理给我分了个系统监控的模块,要求实时的监控服务器的CPU、内存的使用率以及磁盘的使用情况,要求不高,只是把监控数据拿到然后在前台做个展示,但是要求是数据实时变化的动态图表。
    奈何本人未毕业实习生,以前没接触过此类相关的问题,经过初步Google加百度之后,选择了用sigar来获取监控信息,用jfreechart来绘图。用swing测试效果时没问题,发现还挺简单,但是接下来要将jfreechart集成进ssh并且在jsp上面能展示实时的动态图时,我就懵了。本来考虑的是将jfreechart生成的图保存到工程目录,然后在jsp里面读取并且通过ajax不停的局部刷新,此时问题来了:
   ①放在webroot下的image文件夹里面的图在本地能即时更新,但是jsp读的是tomcat下面的image,那里面的没有更新
   ②即使是能够读取到图了,但是由于是不停的去刷新jfreechart生成的整张图,肯定会有闪烁,展示效果会很不好,不懂如何解决

  想到这两个问题之后觉得这样子做可能不好,于是就想到用applet。将jfreechart生成的图画到applet上面,做一个动态的applet然后放到jsp上面去。但是在jsp加载applet的时候又不停的报错,因为sigar使用log4j记了日志,web服务器不允许。 因为觉得用applet的展示效果可能会好点,于是就想那就用java自带的OperatingSystemMXBean与ManagementFactory来写个类获取系统信息替换掉sigar,得是能得到,效率真不敢恭维(主要是获取CPU信息的时候用了Runtime.getRuntime()调了dos,特别慢),动态效果根本出不来。

   这几种方法都试了都调试不成功之后我今天上午就卡在这儿了,不知道怎么继续,所以才来此求助,恳请各位支支招。感激不尽。 

13 个解决方案

#1


画图换amcharts.挺简单的。java后端把数据以json格式传到页面,amcharts拿到json数据对象,就可以出图。实时刷新只需更新图形绑定的数据源。看个例子就欧了

#2


自己去下载个amcharts包,里面有例子

#3


同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。

#4


引用 1 楼 secretx 的回复:
画图换amcharts.挺简单的。java后端把数据以json格式传到页面,amcharts拿到json数据对象,就可以出图。实时刷新只需更新图形绑定的数据源。看个例子就欧了

    openflashchart您用过吗?同事说试一下这个,所以在研究一下,不知道哪个比较好

#5


引用 3 楼 NNTT2010 的回复:
同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。

funshionchart free可以做动态的图吗?

#6


引用 5 楼 xing13146 的回复:
引用 3 楼 NNTT2010 的回复:同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。
funshionchart free可以做动态的图吗?

楼主说的我不是很清楚,但是,只要是读取配置文件或者某种数据格式的文件都可以做成实时更新的操作。

#7


引用 6 楼 NNTT2010 的回复:
引用 5 楼 xing13146 的回复:引用 3 楼 NNTT2010 的回复:同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。
funshionchart free可以做动态的图吗?
楼主说的我不是很清楚,但是,只要是读取配置文件或者某种数据格式的文件都可以做成实时更新的……

谢谢你的回答
我所说的实时更新是类似任务管理器的那种图表,放到jsp的话刷新不会有闪烁吗?
还有amcharts能画仪表盘图吗,我好像没看到。

#8


引用 7 楼 xing13146 的回复:
引用 6 楼 NNTT2010 的回复:引用 5 楼 xing13146 的回复:引用 3 楼 NNTT2010 的回复:同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。
funshionchart free可以做动态的图吗?
楼主说的我不是很清楚,但是,只要是读取配置文件或……


仪表图有没有我不是很清楚,如果实在没有的话,ChartDirector倒有仪表工具图。嗯,那种刷新是联动页面一起刷新的。

#9


引用 8 楼 NNTT2010 的回复:
引用 7 楼 xing13146 的回复:引用 6 楼 NNTT2010 的回复:引用 5 楼 xing13146 的回复:引用 3 楼 NNTT2010 的回复:同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。
funshionchart free可以做动态的图吗?
楼主说……

最终选定了RGraph,已经画出了第一个动态仪表图,在前端成功运行,效果挺不错的,就是对浏览器负载有点大。
谢谢你了,就你一直回复我,真心感谢,这些天都急死了

#10


引用 9 楼 xing13146 的回复:
引用 8 楼 NNTT2010 的回复:引用 7 楼 xing13146 的回复:引用 6 楼 NNTT2010 的回复:引用 5 楼 xing13146 的回复:引用 3 楼 NNTT2010 的回复:同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。
funshionchar……

呵呵,我也没帮到什么。。
RGraph我也没听说过,我有空去研究研究。那楼主的实时更新是仪表图随着页面一起刷新的还是其他更好的方法??

#11


出差才回。不管是用json  还是xml,原理一样,数据源变化后,然后update一下图形,amcharts图形就能刷新了。但是呢,刷新会有闪烁,而且好像刷新不能记录之前图形的状态,比如不能记录之前图形的缩放状态(滑动条位置)。openflashchart这个没有用过。一般不讲究性能,会用amcharts画图,要求性能的会用cacti

#12


我想问一下用amcharts画仪表盘图时怎么设置气泡提示信息?

#13


楼主你好,最近我也在做这个,巧的是我也是个实习生,你能把你做的那个demo发给我参考参考吗?这是我的邮箱739306112@qq.com,十分感谢。

#1


画图换amcharts.挺简单的。java后端把数据以json格式传到页面,amcharts拿到json数据对象,就可以出图。实时刷新只需更新图形绑定的数据源。看个例子就欧了

#2


自己去下载个amcharts包,里面有例子

#3


同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。

#4


引用 1 楼 secretx 的回复:
画图换amcharts.挺简单的。java后端把数据以json格式传到页面,amcharts拿到json数据对象,就可以出图。实时刷新只需更新图形绑定的数据源。看个例子就欧了

    openflashchart您用过吗?同事说试一下这个,所以在研究一下,不知道哪个比较好

#5


引用 3 楼 NNTT2010 的回复:
同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。

funshionchart free可以做动态的图吗?

#6


引用 5 楼 xing13146 的回复:
引用 3 楼 NNTT2010 的回复:同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。
funshionchart free可以做动态的图吗?

楼主说的我不是很清楚,但是,只要是读取配置文件或者某种数据格式的文件都可以做成实时更新的操作。

#7


引用 6 楼 NNTT2010 的回复:
引用 5 楼 xing13146 的回复:引用 3 楼 NNTT2010 的回复:同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。
funshionchart free可以做动态的图吗?
楼主说的我不是很清楚,但是,只要是读取配置文件或者某种数据格式的文件都可以做成实时更新的……

谢谢你的回答
我所说的实时更新是类似任务管理器的那种图表,放到jsp的话刷新不会有闪烁吗?
还有amcharts能画仪表盘图吗,我好像没看到。

#8


引用 7 楼 xing13146 的回复:
引用 6 楼 NNTT2010 的回复:引用 5 楼 xing13146 的回复:引用 3 楼 NNTT2010 的回复:同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。
funshionchart free可以做动态的图吗?
楼主说的我不是很清楚,但是,只要是读取配置文件或……


仪表图有没有我不是很清楚,如果实在没有的话,ChartDirector倒有仪表工具图。嗯,那种刷新是联动页面一起刷新的。

#9


引用 8 楼 NNTT2010 的回复:
引用 7 楼 xing13146 的回复:引用 6 楼 NNTT2010 的回复:引用 5 楼 xing13146 的回复:引用 3 楼 NNTT2010 的回复:同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。
funshionchart free可以做动态的图吗?
楼主说……

最终选定了RGraph,已经画出了第一个动态仪表图,在前端成功运行,效果挺不错的,就是对浏览器负载有点大。
谢谢你了,就你一直回复我,真心感谢,这些天都急死了

#10


引用 9 楼 xing13146 的回复:
引用 8 楼 NNTT2010 的回复:引用 7 楼 xing13146 的回复:引用 6 楼 NNTT2010 的回复:引用 5 楼 xing13146 的回复:引用 3 楼 NNTT2010 的回复:同意楼上观点,amcharts很强大,现阶段貌似是将xml文件的数据存储方式转换为json方式。
只要修改嵌入在js的json便可实时更新。
funshionchar……

呵呵,我也没帮到什么。。
RGraph我也没听说过,我有空去研究研究。那楼主的实时更新是仪表图随着页面一起刷新的还是其他更好的方法??

#11


出差才回。不管是用json  还是xml,原理一样,数据源变化后,然后update一下图形,amcharts图形就能刷新了。但是呢,刷新会有闪烁,而且好像刷新不能记录之前图形的状态,比如不能记录之前图形的缩放状态(滑动条位置)。openflashchart这个没有用过。一般不讲究性能,会用amcharts画图,要求性能的会用cacti

#12


我想问一下用amcharts画仪表盘图时怎么设置气泡提示信息?

#13


楼主你好,最近我也在做这个,巧的是我也是个实习生,你能把你做的那个demo发给我参考参考吗?这是我的邮箱739306112@qq.com,十分感谢。