jquery 监控数据库

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>运维平台</title>
    <style type="text/css">
        *{margin: 0; padding: 0;}
        body{font-size: 20px; color: #333;}
         h1{position: relative; height: 100px; line-height: 100px; margin: 0; background: #555; color: #f2f2f2; font-size: 25px; text-align: center;}
        ul,ol,li{list-style-type: none;}
        #list{
            margin: 0 auto;
            padding-top: 4px;
        }
        #list ul{
            display: flex;
            flex-wrap: wrap;
            margin-top: 30px;
        }
        #list li{
            flex: 1;
            min-width: 300px;
            min-height: 240px;
            margin: 2px 4px;
            padding: 5px 10px;
            border: 1px solid #eee;
        }
        #list .name{
            font-weight: bold;
            font-size: 20px;
        }
        #list .red{
            color: #fff;
            font-weight: bold;
            background: #f00;
            background: rgba(255,0,0,.8);
        }
        #list .red p span{
            color: #fff;
        }
        #list .yellow{
            font-weight: bold;
            background: #ff0;
            background: rgba(255,255,0,.8);
        }
        #list .green{
            background: #0f0;
            background: rgba(0,255,0,.8);
        }
        #list .died{
            background: #666;
            background: rgba(162,162,162,.8);
            color: #fff;
        }
        #list p{
            padding-top: 3px;
        }
        #list p span{
            color: #f00;
            font-weight: bold;
        }
        .time{
            position: absolute; top: 0px; right: 20px;
            color: #fff;
            font-size: 25px;
        }
    </style>
</head>
<body>
    <h1>泰隆银行DB运行监控/60s<span class="time"></span></h1>

    <ul id="list"></ul>

    <!-- <script src="http://libs.mingsixue.com/jquery/1.12.4/jquery.min.js"></script> -->
    <script src="/static/Js/jquery-2.2.2.min.js"></script>
    <script>
    $(function(){
        var renderTime = function() {
            var now = new Date();
            var y = now.getFullYear();
            var m = now.getMonth() + 1;
            var d = now.getDate();

            var h = now.getHours();
            var i = now.getMinutes();
            var s = now.getSeconds();

            m = m < 10 ? '0' + m : m;
            d = d < 10 ? '0' + d : d;
            h = h < 10 ? '0' + h : h;
            i = i < 10 ? '0' + i : i;
            s = s < 10 ? '0' + s : s;
            var _date = y + '-' + m + '-' + d;
            var _time = h + ':' + i + ':' + s;
            $('.time').html(_date + ' ' + _time);
        };

        var render = function(data) {
            var connectinfo = data.connectinfo;
            var waitevent = data.waitevent;
            var sessioninfo = data.sessioninfo;

            // 数据重组
            var data = [];
            for (var key in connectinfo) {
                for (var j in sessioninfo) {
                    if (sessioninfo[j].dbip == connectinfo[key].dbip) {
                        connectinfo[key].sessioncount = sessioninfo[j].sessioncount;
                        connectinfo[key].SESSIONTHRESHOLD = sessioninfo[j].SESSIONTHRESHOLD;
                        connectinfo[key].sessioninfo_status = sessioninfo[j].AVAILABILITY_STATUS
						
                    }
                }

                var arr = [];
                for (var i = 0; i < waitevent.length; i++) {
                    if (waitevent[i].dbip == connectinfo[key].dbip) {
                        var obj = {
                            events: waitevent[i].events + ':' + waitevent[i].cnt,
                            status: waitevent[i].AVAILABILITY_STATUS
                        };
                        arr.push(obj);
                    }
                }
                connectinfo[key].waitevent = arr;
                data.push(connectinfo[key]);
            }

            // red部分提取
            console.log('aaaaaaa');
            console.log(data);
            console.log('aaaaaaa');
            var redArr = [];
            for (var kk in data) {
                var isRed = false;
                 //scan 修复
                if (data[kk].sessioninfo_status == 'red') {
                    isRed = true;
                }
				
		        if (data[kk].dbstatus == 'died') {
                    isRed = true;
                }

                for (var i = 0; i < data[kk].waitevent.length; i++) {
                    if (data[kk].waitevent[i].status == 'red') {
                        isRed = true;
                    }
                }
				
				
                if (isRed) {
                    data[kk].status = 'red';
                    redArr.push(data[kk]);
                    //delete data[kk];
                }
            };

            let newArrs = redArr.concat(data);
            var _html = '<ul>';

            //数据渲染
			console.log('cccccccccccccc');
			console.log(newArrs);
			console.log('cccccccccccccc');
            for (var k in newArrs) {
                var cls = '';

                if (newArrs[k].dbstatus == 'died') {
                    _html += '<li class="red">';
                    _html += '<p class="name">'+ newArrs[k].systag +'</p>';
                    _html += '<p>DBIP:'+ newArrs[k].dbip +'</p>';
                    _html += '<p>DB Status:'+ newArrs[k].dbstatus +'</p>';
                } else {
                    if (newArrs[k].status == 'red') {
                        cls = 'red';
                    } else {
                        cls = 'green';
                    }
                    _html += '<li class="'+ cls +'">';
                    _html += '<p class="name">'+ newArrs[k].systag +'</p>';
                    _html += '<p>DBIP:'+ newArrs[k].dbip +'</p>';
                    _html += '<p>DB Status:'+ newArrs[k].dbstatus +'</p>';
                    _html += '<p>SessionCount:'+ newArrs[k].sessioncount +'</p>';
                    _html += '<p>SessionThresHold:'+ newArrs[k].SESSIONTHRESHOLD +'</p>';

                    if (newArrs[k].waitevent.length) {
                        _html += '<p>&nbsp;</p><p>Wait Event:</p>';
                        for (var m = 0; m < newArrs[k].waitevent.length; m++) {
                            var item = newArrs[k].waitevent[m];
                            _html += '<p>'+ item.events +'</p>';
                        }
                    }
                }

                _html += '</li>';
            }

            _html += '</ul>';
            $('#list').html(_html);
        };

        var getOracleService = function(error) {
            $.ajax({
                url: '/api/check_oracle_service/',
                type: 'GET',
                data: {},
                async: false,
                dataType: 'json',
                success: function(res) {
                    // var res = {
                    //     "connectinfo": {
                    //         "esbdb1": {
                    //             "dbip": "10.2.120.141",
                    //             "dbstatus": "open",
                    //             "systag": "ESB数据库",
                    //             "AVAILABILITY_STATUS": "green"
                    //         },
                    //         "uacdb2": {
                    //             "AVAILABILITY_STATUS": "green",
                    //             "systag": "4A数据库",
                    //             "dbstatus": "open",
                    //             "dbip": "10.2.120.182"
                    //         },
                    //         "uacdb1": {
                    //             "systag": "4A数据库",
                    //             "AVAILABILITY_STATUS": "green",
                    //             "dbip": "10.2.120.181",
                    //             "dbstatus": "open"
                    //         },
                    //         "esbdb3": {
                    //             "systag": "ESB数据库",
                    //             "AVAILABILITY_STATUS": "red",
                    //             "dbip": "10.2.120.150",
                    //             "dbstatus": "died"
                    //         },
                    //         "esbdb2": {
                    //             "dbip": "10.2.120.142",
                    //             "dbstatus": "open",
                    //             "systag": "ESB数据库",
                    //             "AVAILABILITY_STATUS": "green"
                    //         },
                    //         "uacdb3": {
                    //             "AVAILABILITY_STATUS": "red",
                    //             "systag": "4A数据库",
                    //             "dbstatus": "died",
                    //             "dbip": "10.2.120.192"
                    //         }
                    //     },
                    //     "waitevent": [
                    //         {
                    //             "dbip": "10.2.120.141",
                    //             "events": "SQL*Net message from client",
                    //             "EVENTTHRESHOLD": "2",
                    //             "cnt": "112",
                    //             "systag": "ESB数据库",
                    //             "AVAILABILITY_STATUS": "red"
                    //         },
                    //         {
                    //             "AVAILABILITY_STATUS": "red",
                    //             "systag": "ESB数据库",
                    //             "cnt": "35",
                    //             "EVENTTHRESHOLD": "2",
                    //             "events": "rdbms ipc message",
                    //             "dbip": "10.2.120.141"
                    //         },
                    //         {
                    //             "systag": "ESB数据库",
                    //             "AVAILABILITY_STATUS": "red",
                    //             "events": "gcs remote message",
                    //             "dbip": "10.2.120.141",
                    //             "cnt": "5",
                    //             "EVENTTHRESHOLD": "2"
                    //         },
                    //         {
                    //             "dbip": "10.2.120.142",
                    //             "events": "rdbms ipc message",
                    //             "cnt": "35",
                    //             "EVENTTHRESHOLD": "2",
                    //             "systag": "ESB数据库",
                    //             "AVAILABILITY_STATUS": "red"
                    //         },
                    //         {
                    //             "cnt": "10",
                    //             "EVENTTHRESHOLD": "2",
                    //             "events": "SQL*Net message from client",
                    //             "dbip": "10.2.120.142",
                    //             "AVAILABILITY_STATUS": "red",
                    //             "systag": "ESB数据库"
                    //         },
                    //         {
                    //             "cnt": "5",
                    //             "EVENTTHRESHOLD": "2",
                    //             "events": "gcs remote message",
                    //             "dbip": "10.2.120.142",
                    //             "AVAILABILITY_STATUS": "red",
                    //             "systag": "ESB数据库"
                    //         },
                    //         {
                    //             "cnt": "24",
                    //             "EVENTTHRESHOLD": "2",
                    //             "events": "rdbms ipc message",
                    //             "dbip": "10.2.120.181",
                    //             "AVAILABILITY_STATUS": "red",
                    //             "systag": "4A数据库"
                    //         },
                    //         {
                    //             "EVENTTHRESHOLD": "2",
                    //             "cnt": "7",
                    //             "events": "SQL*Net message from client",
                    //             "dbip": "10.2.120.181",
                    //             "AVAILABILITY_STATUS": "red",
                    //             "systag": "4A数据库"
                    //         },
                    //         {
                    //             "cnt": "3",
                    //             "EVENTTHRESHOLD": "2",
                    //             "events": "gcs remote message",
                    //             "dbip": "10.2.120.181",
                    //             "AVAILABILITY_STATUS": "red",
                    //             "systag": "4A数据库"
                    //         },
                    //         {
                    //             "EVENTTHRESHOLD": "100",
                    //             "cnt": "24",
                    //             "events": "rdbms ipc message",
                    //             "dbip": "10.2.120.182",
                    //             "AVAILABILITY_STATUS": "green",
                    //             "systag": "4A数据库"
                    //         },
                    //         {
                    //             "EVENTTHRESHOLD": "100",
                    //             "cnt": "5",
                    //             "events": "SQL*Net message from client",
                    //             "dbip": "10.2.120.182",
                    //             "AVAILABILITY_STATUS": "green",
                    //             "systag": "4A数据库"
                    //         },
                    //         {
                    //             "cnt": "3",
                    //             "EVENTTHRESHOLD": "100",
                    //             "events": "gcs remote message",
                    //             "dbip": "10.2.120.182",
                    //             "AVAILABILITY_STATUS": "green",
                    //             "systag": "4A数据库"
                    //         }
                    //     ],
                    //     "sessioninfo": {
                    //         "uacdb2": {
                    //             "systag": "4A数据库",
                    //             "AVAILABILITY_STATUS": "green",
                    //             "SESSIONTHRESHOLD": "70",
                    //             "sessioncount": "45",
                    //             "dbip": "10.2.120.182"
                    //         },
                    //         "uacdb1": {
                    //             "AVAILABILITY_STATUS": "green",
                    //             "SESSIONTHRESHOLD": "70",
                    //             "sessioncount": "48",
                    //             "systag": "4A数据库",
                    //             "dbip": "10.2.120.181"
                    //         },
                    //         "esbdb1": {
                    //             "dbip": "10.2.120.141",
                    //             "sessioncount": "175",
                    //             "SESSIONTHRESHOLD": "70",
                    //             "AVAILABILITY_STATUS": "red",
                    //             "systag": "ESB数据库"
                    //         },
                    //         "esbdb2": {
                    //             "AVAILABILITY_STATUS": "red",
                    //             "SESSIONTHRESHOLD": "70",
                    //             "sessioncount": "75",
                    //             "systag": "ESB数据库",
                    //             "dbip": "10.2.120.142"
                    //         }
                    //     }
                    // };
                    // render(res);

                    render(res);
                },
                error: function(res) {
                 //   alert("数据返回出错");
                }
            });
        }

        getOracleService();

        let n = 0;
        setInterval(function() {
            n++;
            if (n >= 60) {
                n = 0;
                getOracleService();
            }
            renderTime();
        }, 1000);
    });
    </script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/zhaoyangjian724/article/details/85490765