时间:12-08-24 栏目:网站开发 作者:admin 评论:0 点击: 11,386 次
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Nginx状态监测</title> <link href="layout.css" rel="stylesheet" type="text/css"> <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../excanvas.min.js"></script><![endif]--> <script language="javascript" type="text/javascript" src="./jquery.min.js"></script> <script language="javascript" type="text/javascript" src="./jquery.flot.min.js"></script> </head> <body> <h1>Nginx状态监测</h1> <div id="placeholder" style="width:600px;height:300px;"></div> <p>总共处理了<strong><span class="handled1"></span> </strong>个连接 , 成功创建<strong> <span class="handled2"></span> </strong>次握手,总共处理了<strong><span class="handled3"></span></strong>个请求。</p> <p>数据显示范围: <select id="updateMax"><option value="100">100</option> <option value="500">500</option> <option value="1000">1000</option> <option value="2000">2000</option> <option value="5000">5000</option> <option value="10000">10000</option> <option value="20000">20000</option> <option value="50000">50000</option> <option value="100000">100000</option> </select></p> <p>更新周期: <input id="updateInterval" type="text" value="" style="text-align: right; width:5em"> 毫秒 </p> <pre>解析:<br> Active connections //当前 Nginx 正处理的活动连接数。<br> server accepts handledrequests //总共处理了 N 个连接 , 成功创建 N 次握手,总共处理了 N 个请求。<br> Reading //nginx 读取到客户端的 Header 信息数。<br> Writing //nginx 返回给客户端的 Header 信息数。<br> Waiting //开启 keep-alive 的情况下,这个值等于 active – (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接 技术支持:QQ583964941</pre> <script type="text/javascript"> $(function () { // we use an inline data source in the example, usually data would // be fetched from a server var data = {"Active":[],'handled':[],'Reading':[],'Writing':[],'Waiting':[]}, totalPoints = 100; function getAjaxData(d,key){ d=d[key]; if (data[key].length > 0) data[key] = data[key].slice(1); while (data[key].length < totalPoints) { data[key].push(0); } data[key][data[key].length-1] = parseInt(d); var res = []; for (var i = 0; i < data[key].length; ++i) res.push([i, data[key][i]]) return {label: key,data:res}; } function getRandomData() { //return getAjaxData(); if (data.length > 0) data = data.slice(1); // do a random walk while (data.length < totalPoints) { var prev = data.length > 0 ? data[data.length - 1] : 50; var y = prev + Math.random() * 10 - 5; if (y < 0) y = 0; if (y > 100) y = 100; data.push(y); } // zip the generated y values with the x values var res = []; for (var i = 0; i < data.length; ++i) res.push([i, data[i]]) return res; } // setup control widget var updateInterval = 1000; var updateMax = 100; $("#updateInterval").val(updateInterval).change(function () { var v = $(this).val(); if (v && !isNaN(+v)) { updateInterval = +v; if (updateInterval < 1) updateInterval = 1; if (updateInterval > 2000) updateInterval = 2000; $(this).val("" + updateInterval); } }); $("#updateMax").val(updateMax).change(function () { var v = $(this).val(); if (v && !isNaN(+v)) { updateMax = +v; $(this).val("" + updateMax); init(updateMax); } }); // setup plot function init(updateMax){ var options = { series: { shadowSize: 0 }, // drawing is faster without shadows yaxis: { min: 0, max: updateMax }, xaxis: { show: false } }; $.getJSON('nginx_status.php',function(d,s){ $('.handled1').text(d['handled'][0]); $('.handled2').text(d['handled'][1]); $('.handled3').text(d['handled'][2]); plot = $.plot($("#placeholder"), [getAjaxData(d,"Active"),getAjaxData(d,'Reading'),getAjaxData(d,'Writing'),getAjaxData(d,'Waiting') ], options); T1 = setTimeout(update, updateInterval); }); } function update() { $.getJSON('nginx_status.php',function(d,s){ clearTimeout(T1); $('.handled1').text(d['handled'][0]); $('.handled2').text(d['handled'][1]); $('.handled3').text(d['handled'][2]); plot.setData([getAjaxData(d,"Active"),getAjaxData(d,'Reading'),getAjaxData(d,'Writing'),getAjaxData(d,'Waiting') ]); // since the axes don't change, we don't need to call plot.setupGrid() plot.draw(); T1 = setTimeout(update, updateInterval); }); } init(100); }); </script> </body> </html>
<?php $url ='http://www.nginx.com/status';//要监控的NGINX状态页 $c = file($url); //print_r($c); list(,$Active) = explode(':',$c[0]); $handled = explode(' ',trim($c[2])); $c[3] = str_replace(array('Reading:','Writing:','Waiting:'),array('','|','|'),$c[3]); $rww = explode('|',$c[3]); $array = array( 'Active'=>intval($Active), 'handled'=>$handled, 'Reading'=>intval($rww[0]), 'Writing'=>intval($rww[1]), 'Waiting'=>intval($rww[2]), ); header('Content-Type:application/json'); echo json_encode($array); /* Active connections: 32 server accepts handled requests 577705 577705 576800 Reading: 17 Writing: 15 Waiting: 0 */ ?>
开启nginx 状态监控: http://www.cnblogs.com/amityat/archive/2011/08/23/2150158.html
jquery 下载: http://jquery.com/download/
jquery图表 类库下载: http://code.google.com/p/flot/
声明: 本文由( admin )原创编译,转载请保留链接: Nginx状态监测心跳图显示统计
------====== 本站公告 ======------
联系信息:
电话:19970108113(微信同号) QQ:3142401606
支付宝:https://me.alipay.com/lxq73061
相关插件程序等信息均会在站内发布,敬请关注。