Region status reporting/monitoring with json

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Region status reporting/monitoring with json

BlueWall Slade
As of OpenSim svn 9529 the xtended stats reporting will return a jsonp callback to allow popular javascript toolkits to use the returned data to create ajax monitoring applications in the browser. This is an advantage because after the page is loaded, the browser will interact directly with the region, eliminating traffic through the website (polling the region and servicing the browser). It also allows the creation of mashups to create mini-monitor apps in other pages.

To enable your stats reporting, set the following in your OpenSim.ini...

    ; Simulator Stats URI
    ; Enable JSON simulator data by setting a URI name (case sensitive)
    Stats_URI = "jsonSimStats"

...the URI can be anything you want, and is case sensitive. You can query the URI directly to return a json string to use in php, python, java, etc. or you may use one of the popular javascript toolkits to have OpenSim generate a callback for jsonp. The json serialization carries the following data...

{"AssetsInCache":5.0,"TimeAfterCacheMiss":0.0,"BlockedMissingTextureRequests":0.0,"AssetServiceRequestFailures":0.0,"abnormalClientThreadTerminations":0.0,
"InventoryServiceRetrievalFailures":0.0,"Dilatn":0.967380821704865,"SimFPS":55.0,"PhyFPS":47.1628913879395,"AgntUp":0.0,"RootAg":0.0,
"ChldAg":0.0,"Prims":0.0,"AtvPrm":0.0,"AtvScr":0.0,"ScrLPS":0.0,"PktsIn":0.0,"PktOut":0.0,"PendDl":0.0,"PendUl":0.0,"UnackB":0.0,"TotlFt":0.0,
"NetFt":0.0,"PhysFt":0.0,"OthrFt":0.0,"AgntFt":0.0,"ImgsFt":0.0,"Memory":"8","Uptime":"05:12:19.0365590",
"Version":"OpenSimulator Server 0.6.4.9533 "}


Here is an example I have running, and will leave up for a while ( http://ascent.bluewalgroup.com/jtest.html ) . You can use it as a starting place to create monitors for your regions.


<html>
<head>
    <title>JSON Test</title>
<script src="http://ascent.bluewallgroup.com/jquery-1.3.2.js"></script>
<script src="http://ascent.bluewallgroup.com/timer.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" language="JavaScript">
  SimFPS = 0;
  PhyFPS = 0;
  Memory = 0;
  RootAg = 0;
  ChldAg = 0;
  Uptime = "";
  Version = "";
</script>


<script type="text/javascript" language="JavaScript">


  $.timer(15000, function(timer) {
  $.getJSON("http://ascent.bluewallgroup.com:9300/jsonSimStats/?callback=?",
  function(data){

      SimFPS = Math.round(data.SimFPS);
      PhyFPS = Math.round(data.PhyFPS);
      Memory = Math.round(data.Memory);
      ChldAg = data.ChldAg;
      RootAg = data.RootAg;
      Uptime = data.Uptime;
      Version = data.Version;
      drawChart();
      setTags();
      timer.reset(15000);
  });
  });
</script>

<script type="text/javascript" language="JavaScript">

  google.load("visualization", "1", {packages:["gauge"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var cdata = new google.visualization.DataTable();
    cdata.addColumn('string', 'Label');
    cdata.addColumn('number', 'Value');
    cdata.addRows(3);
    cdata.setValue(0, 0, 'SimFPS');
    cdata.setValue(0, 1, SimFPS);
    cdata.setValue(1, 0, 'PhyFPS');
    cdata.setValue(1, 1, PhyFPS);
    cdata.setValue(2, 0, 'Memory');
    cdata.setValue(2, 1, Memory);

    var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
    var options = {width: 400, height: 120, redFrom: 90, redTo: 100,
        yellowFrom:75, yellowTo: 90, minorTicks: 5};
    chart.draw(cdata, options);
  }
</script>

<script type="text/javascript" language="JavaScript">
   function setTags() {
      $("#par-uptime").text("Uptime: "  + Uptime);
      $("#par-ragent").text("Root Agent: " + RootAg);
      $("#par-version").text("Version: " + Version);
      $("#par-cagent").text("Child Agent: " + ChldAg);
   }
</script>

</head>
<body>
<h1>BlueWall Development Region</h1>
<table>
<tr><td>
<div id="par-version">version</div>
</td><td>
<div id="par-ragent">root agent</div>
</td></tr><tr><td>
<div id="par-uptime">uptime</div>
</td><td>
<div id="par-cagent">child agent</div>
</td></tr>
</table>
<div id="chart_div"></div>
</body>
</html>



Have Fun!
BlueWall



_______________________________________________
Opensim-users mailing list
[hidden email]
https://lists.berlios.de/mailman/listinfo/opensim-users
Reply | Threaded
Open this post in threaded view
|

Re: Region status reporting/monitoring with json

BlueWall Slade
URL Correction : http://ascent.bluewallgroup.com/jtest.html



On Wed, May 13, 2009 at 4:33 AM, BlueWall Slade <[hidden email]> wrote:
As of OpenSim svn 9529 the xtended stats reporting will return a jsonp callback to allow popular javascript toolkits to use the returned data to create ajax monitoring applications in the browser. This is an advantage because after the page is loaded, the browser will interact directly with the region, eliminating traffic through the website (polling the region and servicing the browser). It also allows the creation of mashups to create mini-monitor apps in other pages.

To enable your stats reporting, set the following in your OpenSim.ini...

    ; Simulator Stats URI
    ; Enable JSON simulator data by setting a URI name (case sensitive)
    Stats_URI = "jsonSimStats"

...the URI can be anything you want, and is case sensitive. You can query the URI directly to return a json string to use in php, python, java, etc. or you may use one of the popular javascript toolkits to have OpenSim generate a callback for jsonp. The json serialization carries the following data...

{"AssetsInCache":5.0,"TimeAfterCacheMiss":0.0,"BlockedMissingTextureRequests":0.0,"AssetServiceRequestFailures":0.0,"abnormalClientThreadTerminations":0.0,
"InventoryServiceRetrievalFailures":0.0,"Dilatn":0.967380821704865,"SimFPS":55.0,"PhyFPS":47.1628913879395,"AgntUp":0.0,"RootAg":0.0,
"ChldAg":0.0,"Prims":0.0,"AtvPrm":0.0,"AtvScr":0.0,"ScrLPS":0.0,"PktsIn":0.0,"PktOut":0.0,"PendDl":0.0,"PendUl":0.0,"UnackB":0.0,"TotlFt":0.0,
"NetFt":0.0,"PhysFt":0.0,"OthrFt":0.0,"AgntFt":0.0,"ImgsFt":0.0,"Memory":"8","Uptime":"05:12:19.0365590",
"Version":"OpenSimulator Server 0.6.4.9533 "}


Here is an example I have running, and will leave up for a while ( http://ascent.bluewalgroup.com/jtest.html ) . You can use it as a starting place to create monitors for your regions.


<html>
<head>
    <title>JSON Test</title>
<script src="http://ascent.bluewallgroup.com/jquery-1.3.2.js"></script>
<script src="http://ascent.bluewallgroup.com/timer.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" language="JavaScript">
  SimFPS = 0;
  PhyFPS = 0;
  Memory = 0;
  RootAg = 0;
  ChldAg = 0;
  Uptime = "";
  Version = "";
</script>


<script type="text/javascript" language="JavaScript">


  $.timer(15000, function(timer) {
  $.getJSON("http://ascent.bluewallgroup.com:9300/jsonSimStats/?callback=?",
  function(data){

      SimFPS = Math.round(data.SimFPS);
      PhyFPS = Math.round(data.PhyFPS);
      Memory = Math.round(data.Memory);
      ChldAg = data.ChldAg;
      RootAg = data.RootAg;
      Uptime = data.Uptime;
      Version = data.Version;
      drawChart();
      setTags();
      timer.reset(15000);
  });
  });
</script>

<script type="text/javascript" language="JavaScript">

  google.load("visualization", "1", {packages:["gauge"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var cdata = new google.visualization.DataTable();
    cdata.addColumn('string', 'Label');
    cdata.addColumn('number', 'Value');
    cdata.addRows(3);
    cdata.setValue(0, 0, 'SimFPS');
    cdata.setValue(0, 1, SimFPS);
    cdata.setValue(1, 0, 'PhyFPS');
    cdata.setValue(1, 1, PhyFPS);
    cdata.setValue(2, 0, 'Memory');
    cdata.setValue(2, 1, Memory);

    var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
    var options = {width: 400, height: 120, redFrom: 90, redTo: 100,
        yellowFrom:75, yellowTo: 90, minorTicks: 5};
    chart.draw(cdata, options);
  }
</script>

<script type="text/javascript" language="JavaScript">
   function setTags() {
      $("#par-uptime").text("Uptime: "  + Uptime);
      $("#par-ragent").text("Root Agent: " + RootAg);
      $("#par-version").text("Version: " + Version);
      $("#par-cagent").text("Child Agent: " + ChldAg);
   }
</script>

</head>
<body>
<h1>BlueWall Development Region</h1>
<table>
<tr><td>
<div id="par-version">version</div>
</td><td>
<div id="par-ragent">root agent</div>
</td></tr><tr><td>
<div id="par-uptime">uptime</div>
</td><td>
<div id="par-cagent">child agent</div>
</td></tr>
</table>
<div id="chart_div"></div>
</body>
</html>



Have Fun!
BlueWall




_______________________________________________
Opensim-users mailing list
[hidden email]
https://lists.berlios.de/mailman/listinfo/opensim-users
Reply | Threaded
Open this post in threaded view
|

Re: Region status reporting/monitoring with json

Jeroen van Veen
In reply to this post by BlueWall Slade
awesome! thanks :D

2009/5/13 BlueWall Slade <[hidden email]>
As of OpenSim svn 9529 the xtended stats reporting will return a jsonp callback to allow popular javascript toolkits to use the returned data to create ajax monitoring applications in the browser. This is an advantage because after the page is loaded, the browser will interact directly with the region, eliminating traffic through the website (polling the region and servicing the browser). It also allows the creation of mashups to create mini-monitor apps in other pages.

To enable your stats reporting, set the following in your OpenSim.ini...

    ; Simulator Stats URI
    ; Enable JSON simulator data by setting a URI name (case sensitive)
    Stats_URI = "jsonSimStats"

...the URI can be anything you want, and is case sensitive. You can query the URI directly to return a json string to use in php, python, java, etc. or you may use one of the popular javascript toolkits to have OpenSim generate a callback for jsonp. The json serialization carries the following data...

{"AssetsInCache":5.0,"TimeAfterCacheMiss":0.0,"BlockedMissingTextureRequests":0.0,"AssetServiceRequestFailures":0.0,"abnormalClientThreadTerminations":0.0,
"InventoryServiceRetrievalFailures":0.0,"Dilatn":0.967380821704865,"SimFPS":55.0,"PhyFPS":47.1628913879395,"AgntUp":0.0,"RootAg":0.0,
"ChldAg":0.0,"Prims":0.0,"AtvPrm":0.0,"AtvScr":0.0,"ScrLPS":0.0,"PktsIn":0.0,"PktOut":0.0,"PendDl":0.0,"PendUl":0.0,"UnackB":0.0,"TotlFt":0.0,
"NetFt":0.0,"PhysFt":0.0,"OthrFt":0.0,"AgntFt":0.0,"ImgsFt":0.0,"Memory":"8","Uptime":"05:12:19.0365590",
"Version":"OpenSimulator Server 0.6.4.9533 "}


Here is an example I have running, and will leave up for a while ( http://ascent.bluewalgroup.com/jtest.html ) . You can use it as a starting place to create monitors for your regions.


<html>
<head>
    <title>JSON Test</title>
<script src="http://ascent.bluewallgroup.com/jquery-1.3.2.js"></script>
<script src="http://ascent.bluewallgroup.com/timer.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" language="JavaScript">
  SimFPS = 0;
  PhyFPS = 0;
  Memory = 0;
  RootAg = 0;
  ChldAg = 0;
  Uptime = "";
  Version = "";
</script>


<script type="text/javascript" language="JavaScript">


  $.timer(15000, function(timer) {
  $.getJSON("http://ascent.bluewallgroup.com:9300/jsonSimStats/?callback=?",
  function(data){

      SimFPS = Math.round(data.SimFPS);
      PhyFPS = Math.round(data.PhyFPS);
      Memory = Math.round(data.Memory);
      ChldAg = data.ChldAg;
      RootAg = data.RootAg;
      Uptime = data.Uptime;
      Version = data.Version;
      drawChart();
      setTags();
      timer.reset(15000);
  });
  });
</script>

<script type="text/javascript" language="JavaScript">

  google.load("visualization", "1", {packages:["gauge"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var cdata = new google.visualization.DataTable();
    cdata.addColumn('string', 'Label');
    cdata.addColumn('number', 'Value');
    cdata.addRows(3);
    cdata.setValue(0, 0, 'SimFPS');
    cdata.setValue(0, 1, SimFPS);
    cdata.setValue(1, 0, 'PhyFPS');
    cdata.setValue(1, 1, PhyFPS);
    cdata.setValue(2, 0, 'Memory');
    cdata.setValue(2, 1, Memory);

    var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
    var options = {width: 400, height: 120, redFrom: 90, redTo: 100,
        yellowFrom:75, yellowTo: 90, minorTicks: 5};
    chart.draw(cdata, options);
  }
</script>

<script type="text/javascript" language="JavaScript">
   function setTags() {
      $("#par-uptime").text("Uptime: "  + Uptime);
      $("#par-ragent").text("Root Agent: " + RootAg);
      $("#par-version").text("Version: " + Version);
      $("#par-cagent").text("Child Agent: " + ChldAg);
   }
</script>

</head>
<body>
<h1>BlueWall Development Region</h1>
<table>
<tr><td>
<div id="par-version">version</div>
</td><td>
<div id="par-ragent">root agent</div>
</td></tr><tr><td>
<div id="par-uptime">uptime</div>
</td><td>
<div id="par-cagent">child agent</div>
</td></tr>
</table>
<div id="chart_div"></div>
</body>
</html>



Have Fun!
BlueWall



_______________________________________________
Opensim-users mailing list
[hidden email]
https://lists.berlios.de/mailman/listinfo/opensim-users



_______________________________________________
Opensim-users mailing list
[hidden email]
https://lists.berlios.de/mailman/listinfo/opensim-users