RabbitMQ监控(5)——OpenCharts展示

36 篇文章 1 订阅
15 篇文章 0 订阅

        有了前几篇博客的基础,我们可以从容应对监控的实现,但是还有一个问题,我们没有解决,就是图形化展示监控结果,在网页上画图,我们的确有很多种方案,以前我们使用过highcharts,但是学习还好,在公司使用不是很合适,我们需要一款,简单,易上手,的绘图插件,这里带领大家一起熟悉一款这样的软件,opencharts。

先看结果:


一,简介

OpenCharts是基于HTML Canvas技术的采用面向对象的Web图表,通过OpenCharts,你可以方便的制作一系列漂亮的Web图表。现在我们支持8种类型的图表表达方式,你可以通过帮助文档了解详细信息,也可以通过范例了解如何使用。

官方地址:https://github.com/pasu/OpenCharts

效果展示:




二,应用


action代码:

/**
 * Created by Administrator on 2015/5/9.
 */
public class RabbitMQAction extends BaseAction {

    private IRabbitMenuService rabbitMenuService;

    public String index() throws Exception {
        String stringbid = request.getParameter("menId");
        RabbitMenu rabbitMenu =rabbitMenuService.selectByPrimaryKey(Integer.valueOf(stringbid));
        Result result = new Result(true);
        result.addDefaultModel("bid",rabbitMenu.getDomainName());
        toVm(result);
        return "list";
    }

    public String  getCharDate(){
        String stringbid = request.getParameter("bid");
        HashMap<String,String> hashMap=null;
        String json = FileSaveMq.getDate();
        if(json==null||json.trim().isEmpty()){
            writeJson("");
        }else{
            hashMap = JSON.parseObject(json,HashMap.class);
        }

        if(hashMap!=null && hashMap.containsKey(stringbid)){
            String values = hashMap.get(stringbid);
            List<String> list = JSON.parseObject(values,List.class);
            List<Long> listlong = new ArrayList<Long>();
            for(String one:list){
                listlong.add(Long.valueOf(one));
            }
            writeJson(listlong);
        }else{
            writeJson("");
        }
        return "list";
    }

    public IRabbitMenuService getRabbitMenuService() {
        return rabbitMenuService;
    }

    public void setRabbitMenuService(IRabbitMenuService rabbitMenuService) {
        this.rabbitMenuService = rabbitMenuService;
    }
}


html代码:

<pre name="code" class="html"><!doctype html>
<html lang="en">
<head>

    <script type="text/javascript" src="$!homeModule.getTarget("/common/js/opencharts/OpenCharts-min.js")"></script>
    <link rel="stylesheet" type="text/css" href="$!homeModule.getTarget("/common/css/opencharts/style.css")">
    <script>
        var bid =  $!bid;
        var charts1;
        $(function () {
            reflashchar();
        });
        function reflashchar(){
            $.post(' $!homeModule.getTarget('/rabbitmq/getCharDate.action')', { bid:bid }, function (result) {
                if (result) {
                    logChar(result);
                }
                else {
                    $.messager.alert("提示信息", "加载失败");
                }
            }, 'json');
        }

        function logChar(result){
            var items = [];
            var style = new OpenCharts.Style();
            style.fillStyle = "#4169E1";
            var itemss = [];

            for(var i=0;i<result.length;i++){
                if(i==0){
                    itemss.push({strCaption : 1,data :result[i],itemStyle:'#D2691E'});
                }else if((i+1)%10==0){
                    itemss.push(new OpenCharts.Item(result[i],i+1,'#D2691E'));
                }else if(i==(result.length-1)){
                    itemss.push(new OpenCharts.Item(result[i],i+1,'#D2691E'));
                }else{
                    itemss.push(new OpenCharts.Item(result[i],'','#D2691E'));
                }

            }
            var message = "${itemName}${itemCaption}:[${itemData}]";
            charts1 = new OpenCharts.Chart.AreaChart("canvas1");
            charts1.strTitle = "RabbitMQ 监控记录";
            charts1.addItems(itemss,"Queue");
            charts1.addEventListener("mousedown",message);
            charts1.render();
        }

        var int=self.setInterval("reflashchar()",60000)
    </script>
</head>
<body>

<div style="">
    <canvas id="canvas1" height="600px" width="1000px"  />
</div>

</body>
</html>


 


总结:

        再次重申,“世上无难事,只怕有心人”,大家一路跟过来,没有特别困哪的地方,但是就是简单工具的组合,就完成了好像很牛的功能,真的是好像很牛,这里不得不感谢奋斗在开源第一线孜孜不倦的人们!这就是这个时代,更开发,共享成为主旋律,打开我们自己,就能和大家一起拥抱更好的未来!




评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值