2007-01-14 20:29:43 -05:00
<?xml version="1.0" encoding="UTF-8"?>
2006-12-21 20:59:44 -05:00
<!--
2018-02-23 03:53:12 -05:00
- Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2006-12-21 20:59:44 -05:00
-
2016-06-27 00:56:38 -04:00
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
2018-02-23 03:53:12 -05:00
-
- See the COPYRIGHT file distributed with this work for additional
- information regarding copyright ownership.
2006-12-21 20:59:44 -05:00
-->
2015-10-27 19:45:22 -04:00
2012-11-14 13:44:15 -05:00
<xsl:stylesheet xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" xmlns= "http://www.w3.org/1999/xhtml" version= "1.0" >
<xsl:output method= "html" indent= "yes" version= "4.0" />
2017-10-27 22:19:04 -04:00
<xsl:template match= "statistics[@version="3.11"]" >
2006-12-21 01:03:37 -05:00
<html >
<head >
2012-11-14 13:44:15 -05:00
<xsl:if test= "system-property('xsl:vendor')!='Transformiix'" >
<!-- Non Mozilla specific markup -->
<script type= "text/javascript" src= "https://www.google.com/jsapi" />
<script type= "text/javascript" >
2014-01-09 18:14:57 -05:00
2015-10-27 18:45:46 -04:00
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(loadGraphs);
var graphs=[];
function drawChart(chart_title,target,style,data) {
var data = google.visualization.arrayToDataTable(data);
var options = {
title: chart_title
};
var chart;
if (style == "barchart") {
chart = new google.visualization.BarChart(document.getElementById(target));
chart.draw(data, options);
} else if (style == "piechart") {
chart = new google.visualization.PieChart(document.getElementById(target));
chart.draw(data, options);
}
}
function loadGraphs(){
var g;
while(g = graphs.shift()){
// alert("going for: " + g.target);
if(g.data.length > 1){
drawChart(g.title,g.target,g.style,g.data);
}
}
}
<xsl:if test= "server/counters[@type="qtype"]/counter" >
// Server Incoming Query Types
graphs.push({
'title' : "Server Incoming Query Types",
'target': 'chart_incoming_qtypes',
'style': 'barchart',
'data': [['Type','Counter'],<xsl:for-each select= "server/counters[@type="qtype"]/counter" > ['<xsl:value-of select= "@name" /> ',<xsl:value-of select= "." /> ],</xsl:for-each> ]
});
</xsl:if>
<xsl:if test= "server/counters[@type="opcode"]/counter" >
// Server Incoming Requests by opcode
graphs.push({
'title' : "Server Incoming Requests by DNS Opcode",
'target': 'chart_incoming_opcodes',
'style': 'barchart',
'data': [['Opcode','Counter'],<xsl:for-each select= "server/counters[@type="opcode"]/counter[. > 0 or substring(@name,1,3) != 'RES']" > ['<xsl:value-of select= "@name" /> ',<xsl:value-of select= "." /> ],</xsl:for-each> ]});
</xsl:if>
</script>
2012-11-14 13:44:15 -05:00
</xsl:if>
2006-12-21 01:03:37 -05:00
<style type= "text/css" >
2012-11-14 13:44:15 -05:00
body {
font-family: sans-serif;
background-color: #ffffff;
color: #000000;
font-size: 10pt;
}
2014-01-09 18:14:57 -05:00
2012-11-14 13:44:15 -05:00
.odd{
background-color: #f0f0f0;
}
2014-01-09 18:14:57 -05:00
2012-11-14 13:44:15 -05:00
.even{
background-color: #ffffff;
}
2014-01-09 18:14:57 -05:00
2012-11-14 13:44:15 -05:00
p.footer{
font-style:italic;
color: grey;
}
table {
border-collapse: collapse;
border: 1px solid grey;
}
table.counters{
border: 1px solid grey;
width: 500px;
}
table.counters th {
2014-01-09 18:14:57 -05:00
text-align: right;
border: 1px solid grey;
width: 150px;
}
table.counters td {
text-align: right;
font-family: monospace;
}
table.counters tr:hover{
background-color: #99ddff;
}
table.info {
border: 1px solid grey;
width: 500px;
}
table.info th {
2012-11-14 13:44:15 -05:00
text-align: center;
border: 1px solid grey;
2014-01-09 18:14:57 -05:00
width: 150px;
2012-11-14 13:44:15 -05:00
}
2014-01-09 18:14:57 -05:00
table.info td {
text-align: center;
}
table.info tr:hover{
background-color: #99ddff;
}
table.tasks {
border: 1px solid grey;
width: 500px;
}
table.tasks th {
text-align: center;
border: 1px solid grey;
width: 150px;
}
table.tasks td {
text-align: right;
font-family: monospace;
}
table.tasks td:nth-child(2) {
text-align: center;
}
table.tasks td:nth-child(4) {
text-align: center;
}
table.tasks tr:hover{
2012-11-14 13:44:15 -05:00
background-color: #99ddff;
2014-01-09 18:14:57 -05:00
}
table.netstat {
border: 1px solid grey;
width: 500px;
}
table.netstat th {
text-align: center;
border: 1px solid grey;
width: 150px;
}
table.netstat td {
text-align: center;
}
table.netstat td:nth-child(4) {
text-align: right;
font-family: monospace;
}
table.netstat td:nth-child(7) {
text-align: left;
}
table.netstat tr:hover{
background-color: #99ddff;
}
table.mctx {
border: 1px solid grey;
width: 500px;
}
table.mctx th {
text-align: center;
border: 1px solid grey;
}
table.mctx td {
text-align: right;
font-family: monospace;
}
table.mctx td:nth-child(-n+2) {
text-align: left;
width: 100px;
}
table.mctx tr:hover{
background-color: #99ddff;
}
2012-11-14 13:44:15 -05:00
.totals {
background-color: rgb(1,169,206);
color: #ffffff;
}
td, th {
padding-right: 5px;
padding-left: 5px;
border: 1px solid grey;
}
.header h1 {
color: rgb(1,169,206);
padding: 0px;
}
.content {
background-color: #ffffff;
color: #000000;
padding: 4px;
}
.item {
padding: 4px;
text-align: right;
}
.value {
padding: 4px;
font-weight: bold;
}
h2 {
color: grey;
font-size: 14pt;
width:500px;
text-align:center;
}
2014-01-09 18:14:57 -05:00
2012-11-14 13:44:15 -05:00
h3 {
color: #444444;
font-size: 12pt;
width:500px;
text-align:center;
}
h4 {
2015-10-27 18:45:46 -04:00
color: rgb(1,169,206);
font-size: 10pt;
2012-11-14 13:44:15 -05:00
width:500px;
text-align:center;
}
.pie {
width:500px;
height: 500px;
}
</style>
<title > ISC BIND 9 Statistics</title>
2006-12-21 01:03:37 -05:00
</head>
<body >
2012-11-14 13:44:15 -05:00
<div class= "header" >
<h1 > ISC Bind 9 Configuration and Statistics</h1>
</div>
2015-10-27 18:45:46 -04:00
<p > Alternate statistics views: <a href= "/" > All</a> ,
2014-03-25 00:56:40 -04:00
<a href= "/xml/v3/status" > Status</a> ,
<a href= "/xml/v3/server" > Server</a> ,
<a href= "/xml/v3/zones" > Zones</a> ,
<a href= "/xml/v3/net" > Network</a> ,
2015-07-07 01:20:03 -04:00
<a href= "/xml/v3/tasks" > Tasks</a> ,
<a href= "/xml/v3/mem" > Memory</a> and
<a href= "/xml/v3/traffic" > Traffic Size</a> </p>
2012-11-14 13:44:15 -05:00
<hr />
2014-01-09 18:14:57 -05:00
<h2 > Server Status</h2>
<table class= "info" >
2012-11-14 13:44:15 -05:00
<tr >
<th > Boot time:</th>
<td >
<xsl:value-of select= "server/boot-time" />
</td>
</tr>
<tr >
2013-03-01 18:07:40 -05:00
<th > Last reconfigured:</th>
<td >
<xsl:value-of select= "server/config-time" />
</td>
</tr>
<tr >
<th > Current time:</th>
2012-11-14 13:44:15 -05:00
<td >
<xsl:value-of select= "server/current-time" />
</td>
</tr>
2015-10-27 18:45:46 -04:00
<tr >
<th > Server version:</th>
<td >
<xsl:value-of select= "server/version" />
</td>
</tr>
2012-11-14 13:44:15 -05:00
</table>
<br />
2014-01-09 18:14:57 -05:00
<xsl:if test= "server/counters[@type="opcode"]/counter[. > 0]" >
<xsl:if test= "system-property('xsl:vendor')!='Transformiix'" >
<h2 > Incoming Requests by DNS Opcode</h2>
<!-- Non Mozilla specific markup -->
<div class= "pie" id= "chart_incoming_opcodes" >
2015-10-27 18:45:46 -04:00
[cannot display chart]
</div>
2014-01-09 18:14:57 -05:00
</xsl:if>
<table class= "counters" >
<xsl:for-each select= "server/counters[@type="opcode"]/counter[. > 0 or substring(@name,1,3) != 'RES']" >
<xsl:sort select= "." data-type= "number" order= "descending" />
<tr >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
2012-11-14 13:44:15 -05:00
<tr >
2014-01-09 18:14:57 -05:00
<th class= "totals" > Total:</th>
<td class= "totals" >
<xsl:value-of select= "sum(server/counters[@type="opcode"]/counter)" />
2012-11-14 13:44:15 -05:00
</td>
2007-02-12 21:49:08 -05:00
</tr>
2014-01-09 18:14:57 -05:00
</table>
<br />
2012-11-14 13:44:15 -05:00
</xsl:if>
2014-01-09 18:14:57 -05:00
<xsl:if test= "server/counters[@type="qtype"]/counter" >
2012-11-14 13:44:15 -05:00
<xsl:if test= "system-property('xsl:vendor')!='Transformiix'" >
<!-- Non Mozilla specific markup -->
2014-01-09 18:14:57 -05:00
<h3 > Incoming Queries by Query Type</h3>
<div class= "pie" id= "chart_incoming_qtypes" >
2015-10-27 18:45:46 -04:00
[cannot display chart]
</div>
2012-11-14 13:44:15 -05:00
</xsl:if>
<table class= "counters" >
2014-01-09 18:14:57 -05:00
<xsl:for-each select= "server/counters[@type="qtype"]/counter" >
2012-11-14 13:44:15 -05:00
<xsl:sort select= "." data-type= "number" order= "descending" />
2014-01-09 18:14:57 -05:00
<xsl:variable name= "css-class" >
2012-11-14 13:44:15 -05:00
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
2014-01-09 18:14:57 -05:00
<tr class= "{$css-class}" >
2012-11-14 13:44:15 -05:00
<th >
<xsl:value-of select= "@name" />
</th>
2007-02-12 21:49:08 -05:00
<td >
2012-11-14 13:44:15 -05:00
<xsl:value-of select= "." />
2007-02-12 21:49:08 -05:00
</td>
2012-11-14 13:44:15 -05:00
</tr>
</xsl:for-each>
2014-01-09 18:14:57 -05:00
<tr >
<th class= "totals" > Total:</th>
<td class= "totals" >
<xsl:value-of select= "sum(server/counters[@type="qtype"]/counter)" />
</td>
</tr>
2012-11-14 13:44:15 -05:00
</table>
<br />
</xsl:if>
2014-01-09 18:14:57 -05:00
<xsl:if test= "views/view[count(counters[@type="resqtype"]/counter) > 0]" >
<h2 > Outgoing Queries per view</h2>
<xsl:for-each select= "views/view[count(counters[@type="resqtype"]/counter) > 0]" >
<h3 > View <xsl:value-of select= "@name" /> </h3>
<xsl:if test= "system-property('xsl:vendor')!='Transformiix'" >
<!-- Non Mozilla specific markup -->
2015-10-27 18:45:46 -04:00
<script type= "text/javascript" >
graphs.push({
'title': "Outgoing Queries for view: <xsl:value-of select= "@name" /> ",
'target': 'chart_outgoing_queries_view_<xsl:value-of select= "@name" /> ',
'style': 'barchart',
'data': [['Type','Counter'],<xsl:for-each select= "counters[@type="resqtype"]/counter" > ['<xsl:value-of select= "@name" /> ',<xsl:value-of select= "." /> ],</xsl:for-each> ]
});
</script>
<xsl:variable name= "target" >
<xsl:value-of select= "@name" />
</xsl:variable>
2014-01-09 18:14:57 -05:00
<div class= "pie" id= "chart_outgoing_queries_view_{$target}" > [no data to display]</div>
</xsl:if>
<table class= "counters" >
<xsl:for-each select= "counters[@type="resqtype"]/counter" >
<xsl:sort select= "." data-type= "number" order= "descending" />
<xsl:variable name= "css-class1" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class1}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
<br />
2012-11-14 13:44:15 -05:00
</xsl:for-each>
</xsl:if>
2014-01-09 18:14:57 -05:00
<xsl:if test= "server/counters[@type="nsstat"]/counter[.>0]" >
<h2 > Server Statistics</h2>
<xsl:if test= "system-property('xsl:vendor')!='Transformiix'" >
<!-- Non Mozilla specific markup -->
2015-10-27 18:45:46 -04:00
<script type= "text/javascript" >
graphs.push({
'title' : "Server Counters",
'target': 'chart_server_nsstat_restype',
'style': 'barchart',
'data': [['Type','Counter'],<xsl:for-each select= "server/counters[@type="nsstat"]/counter[.>0]" > ['<xsl:value-of select= "@name" /> ',<xsl:value-of select= "." /> ],</xsl:for-each> ]
});
</script>
2014-01-09 18:14:57 -05:00
<div class= "pie" id= "chart_server_nsstat_restype" > [no data to display]</div>
</xsl:if>
2012-11-14 13:44:15 -05:00
<table class= "counters" >
2014-01-09 18:14:57 -05:00
<xsl:for-each select= "server/counters[@type="nsstat"]/counter[.>0]" >
2012-11-14 13:44:15 -05:00
<xsl:sort select= "." data-type= "number" order= "descending" />
2014-01-09 18:14:57 -05:00
<xsl:variable name= "css-class2" >
2012-11-14 13:44:15 -05:00
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
2014-01-09 18:14:57 -05:00
<tr class= "{$css-class2}" >
2012-11-14 13:44:15 -05:00
<th >
<xsl:value-of select= "@name" />
</th>
2007-02-12 21:49:08 -05:00
<td >
2012-11-14 13:44:15 -05:00
<xsl:value-of select= "." />
2007-02-12 21:49:08 -05:00
</td>
2012-11-14 13:44:15 -05:00
</tr>
</xsl:for-each>
</table>
2014-01-09 18:14:57 -05:00
<br />
</xsl:if>
<xsl:if test= "server/counters[@type="zonestat"]/counter[.>0]" >
<xsl:if test= "system-property('xsl:vendor')!='Transformiix'" >
<h2 > Zone Maintenance Statistics</h2>
<script type= "text/javascript" >
2015-10-27 18:45:46 -04:00
graphs.push({
'title' : "Zone Maintenance Stats",
'target': 'chart_server_zone_maint',
'style': 'barchart',
'data': [['Type','Counter'],<xsl:for-each select= "server/counters[@type="zonestat"]/counter[.>0]" > ['<xsl:value-of select= "@name" /> ',<xsl:value-of select= "." /> ],</xsl:for-each> ]
});
</script>
2014-01-09 18:14:57 -05:00
<!-- Non Mozilla specific markup -->
<div class= "pie" id= "chart_server_zone_maint" > [no data to display]</div>
</xsl:if>
2013-02-08 17:53:14 -05:00
<table class= "counters" >
2014-01-09 18:14:57 -05:00
<xsl:for-each select= "server/counters[@type="zonestat"]/counter" >
2013-02-08 17:53:14 -05:00
<xsl:sort select= "." data-type= "number" order= "descending" />
2014-01-09 18:14:57 -05:00
<xsl:variable name= "css-class3" >
2013-02-08 17:53:14 -05:00
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
2014-01-09 18:14:57 -05:00
<tr class= "{$css-class3}" >
2013-02-08 17:53:14 -05:00
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
2014-01-09 18:14:57 -05:00
</xsl:if>
<xsl:if test= "server/counters[@type="resstat"]/counter[.>0]" >
<h2 > Resolver Statistics (Common)</h2>
2013-02-08 17:53:14 -05:00
<table class= "counters" >
2014-01-09 18:14:57 -05:00
<xsl:for-each select= "server/counters[@type="resstat"]/counter" >
2013-02-08 17:53:14 -05:00
<xsl:sort select= "." data-type= "number" order= "descending" />
2014-01-09 18:14:57 -05:00
<xsl:variable name= "css-class4" >
2013-02-08 17:53:14 -05:00
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
2014-01-09 18:14:57 -05:00
<tr class= "{$css-class4}" >
2013-02-08 17:53:14 -05:00
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
2014-01-09 18:14:57 -05:00
</xsl:if>
<xsl:for-each select= "views/view" >
<xsl:if test= "counters[@type="resstats"]/counter[.>0]" >
<h3 > Resolver Statistics for View <xsl:value-of select= "@name" /> </h3>
<table class= "counters" >
<xsl:for-each select= "counters[@type="resstats"]/counter[.>0]" >
<xsl:sort select= "." data-type= "number" order= "descending" />
<xsl:variable name= "css-class5" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class5}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
</xsl:for-each>
<xsl:for-each select= "views/view" >
<xsl:if test= "counters[@type="adbstat"]/counter[.>0]" >
<h3 > ADB Statistics for View <xsl:value-of select= "@name" /> </h3>
<table class= "counters" >
<xsl:for-each select= "counters[@type="adbstat"]/counter[.>0]" >
<xsl:sort select= "." data-type= "number" order= "descending" />
<xsl:variable name= "css-class5" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class5}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
2013-02-08 17:53:14 -05:00
</xsl:for-each>
2014-01-09 18:14:57 -05:00
<xsl:for-each select= "views/view" >
<xsl:if test= "counters[@type="cachestats"]/counter[.>0]" >
<h3 > Cache Statistics for View <xsl:value-of select= "@name" /> </h3>
<table class= "counters" >
<xsl:for-each select= "counters[@type="cachestats"]/counter[.>0]" >
<xsl:sort select= "." data-type= "number" order= "descending" />
<xsl:variable name= "css-class5" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class5}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
</xsl:for-each>
2012-11-14 13:44:15 -05:00
<xsl:for-each select= "views/view" >
2014-01-09 18:14:57 -05:00
<xsl:if test= "cache/rrset" >
<h3 > Cache DB RRsets for View <xsl:value-of select= "@name" /> </h3>
<table class= "counters" >
<xsl:for-each select= "cache/rrset" >
<xsl:variable name= "css-class6" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class6}" >
<th >
<xsl:value-of select= "name" />
</th>
<td >
<xsl:value-of select= "counter" />
</td>
</tr>
</xsl:for-each>
</table>
<br />
</xsl:if>
</xsl:for-each>
2015-07-07 01:20:03 -04:00
<xsl:if test= "traffic/udp/counters[@type="request-size"]/counter[.>0] or traffic/udp/counters[@type="response-size"]/counter[.>0] or traffic/tcp/counters[@type="request-size"]/counter[.>0] or traffic/tcp/counters[@type="response-size"]/counter[.>0]" >
<h2 > Traffic Size Statistics</h2>
2014-01-09 18:14:57 -05:00
</xsl:if>
2015-10-27 18:45:46 -04:00
<xsl:if test= "traffic/udp/counters[@type="request-size"]/counter[.>0]" >
<h4 > UDP Requests Received</h4>
<table class= "counters" >
<xsl:for-each select= "traffic/udp/counters[@type="request-size"]/counter[.>0]" >
<xsl:variable name= "css-class7" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class7}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
<br />
</xsl:if>
<xsl:if test= "traffic/udp/counters[@type="response-size"]/counter[.>0]" >
<h4 > UDP Responses Sent</h4>
<table class= "counters" >
<xsl:for-each select= "traffic/udp/counters[@type="response-size"]/counter[.>0]" >
<xsl:variable name= "css-class7" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class7}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
<br />
</xsl:if>
<xsl:if test= "traffic/tcp/counters[@type="request-size"]/counter[.>0]" >
<h4 > TCP Requests Received</h4>
<table class= "counters" >
<xsl:for-each select= "traffic/tcp/counters[@type="request-size"]/counter[.>0]" >
<xsl:variable name= "css-class7" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class7}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
<br />
</xsl:if>
<xsl:if test= "traffic/tcp/counters[@type="response-size"]/counter[.>0]" >
<h4 > TCP Responses Sent</h4>
<table class= "counters" >
<xsl:for-each select= "traffic/tcp/counters[@type="response-size"]/counter[.>0]" >
<xsl:variable name= "css-class7" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class7}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
<br />
</xsl:if>
<xsl:if test= "server/counters[@type="sockstat"]/counter[.>0]" >
<h2 > Socket I/O Statistics</h2>
<table class= "counters" >
<xsl:for-each select= "server/counters[@type="sockstat"]/counter[.>0]" >
<xsl:variable name= "css-class7" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class7}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
<br />
</xsl:if>
<xsl:if test= "views/view[zones/zone/counters[@type="qtype"]/counter >0]" >
<h2 > Received QTYPES per view/zone</h2>
<xsl:for-each select= "views/view[zones/zone/counters[@type="qtype"]/counter >0]" >
<h3 > View <xsl:value-of select= "@name" /> </h3>
<xsl:variable name= "thisview" >
<xsl:value-of select= "@name" />
</xsl:variable>
<xsl:for-each select= "zones/zone" >
<xsl:if test= "counters[@type="qtype"]/counter[count(.) > 0]" >
<h4 > Zone <xsl:value-of select= "@name" /> </h4>
<xsl:if test= "system-property('xsl:vendor')!='Transformiix'" >
<!-- Non Mozilla specific markup -->
<script type= "text/javascript" >
2015-07-07 01:20:03 -04:00
graphs.push({
'title': "Query types for zone <xsl:value-of select= "@name" /> ",
'target': 'chart_qtype_<xsl:value-of select= "../../@name" /> _<xsl:value-of select= "@name" /> ',
'style': 'barchart',
'data': [['Type','Counter'],<xsl:for-each select= "counters[@type="qtype"]/counter[.>0 and @name != "QryAuthAns"]" > ['<xsl:value-of select= "@name" /> ',<xsl:value-of select= "." /> ],</xsl:for-each> ]
});
</script>
2015-10-27 18:45:46 -04:00
<xsl:variable name= "target" >
<xsl:value-of select= "@name" />
</xsl:variable>
<div class= "pie" id= "chart_qtype_{$thisview}_{$target}" > [no data to display]</div>
</xsl:if>
<table class= "counters" >
<xsl:for-each select= "counters[@type="qtype"]/counter" >
<xsl:sort select= "." />
<xsl:variable name= "css-class10" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class10}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:if>
<xsl:if test= "views/view[zones/zone/counters[@type="rcode"]/counter >0]" >
<h2 > Response Codes per view/zone</h2>
<xsl:for-each select= "views/view[zones/zone/counters[@type="rcode"]/counter >0]" >
<h3 > View <xsl:value-of select= "@name" /> </h3>
<xsl:variable name= "thisview2" >
<xsl:value-of select= "@name" />
</xsl:variable>
<xsl:for-each select= "zones/zone" >
<xsl:if test= "counters[@type="rcode"]/counter[. > 0]" >
<h4 > Zone <xsl:value-of select= "@name" /> </h4>
<xsl:if test= "system-property('xsl:vendor')!='Transformiix'" >
<!-- Non Mozilla specific markup -->
<script type= "text/javascript" >
2015-07-07 01:20:03 -04:00
graphs.push({
'title': "Response codes for zone <xsl:value-of select= "@name" /> ",
'target': 'chart_rescode_<xsl:value-of select= "../../@name" /> _<xsl:value-of select= "@name" /> ',
'style': 'barchart',
'data': [['Type','Counter'],<xsl:for-each select= "counters[@type="rcode"]/counter[.>0 and @name != "QryAuthAns"]" > ['<xsl:value-of select= "@name" /> ',<xsl:value-of select= "." /> ],</xsl:for-each> ]
});
</script>
2015-10-27 18:45:46 -04:00
<xsl:variable name= "target" >
<xsl:value-of select= "@name" />
</xsl:variable>
<div class= "pie" id= "chart_rescode_{$thisview2}_{$target}" > [no data to display]</div>
</xsl:if>
<table class= "counters" >
<xsl:for-each select= "counters[@type="rcode"]/counter[.>0 and @name != "QryAuthAns"]" >
<xsl:sort select= "." />
<xsl:variable name= "css-class11" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class11}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:if>
2017-10-06 05:54:16 -04:00
<xsl:if test= "views/view[zones/zone/counters[@type="gluecache"]/counter >0]" >
<h2 > Glue cache statistics</h2>
<xsl:for-each select= "views/view[zones/zone/counters[@type="gluecache"]/counter >0]" >
<h3 > View <xsl:value-of select= "@name" /> </h3>
<xsl:variable name= "thisview2" >
<xsl:value-of select= "@name" />
</xsl:variable>
<xsl:for-each select= "zones/zone" >
<xsl:if test= "counters[@type="gluecache"]/counter[. > 0]" >
<h4 > Zone <xsl:value-of select= "@name" /> </h4>
<table class= "counters" >
<xsl:for-each select= "counters[@type="gluecache"]/counter[. > 0]" >
<xsl:sort select= "." />
<xsl:variable name= "css-class11" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class11}" >
<th >
<xsl:value-of select= "@name" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:if>
2015-10-27 18:45:46 -04:00
<xsl:if test= "socketmgr/sockets/socket" >
<h2 > Network Status</h2>
<table class= "netstat" >
<tr >
<th > ID</th>
<th > Name</th>
<th > Type</th>
<th > References</th>
<th > LocalAddress</th>
<th > PeerAddress</th>
<th > State</th>
</tr>
<xsl:for-each select= "socketmgr/sockets/socket" >
<xsl:sort select= "id" />
<xsl:variable name= "css-class12" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class12}" >
<td >
<xsl:value-of select= "id" />
</td>
<td >
<xsl:value-of select= "name" />
</td>
<td >
<xsl:value-of select= "type" />
</td>
<td >
<xsl:value-of select= "references" />
</td>
<td >
<xsl:value-of select= "local-address" />
</td>
<td >
<xsl:value-of select= "peer-address" />
</td>
<td >
<xsl:for-each select= "states" >
<xsl:value-of select= "." />
</xsl:for-each>
</td>
</tr>
</xsl:for-each>
</table>
<br />
</xsl:if>
<xsl:if test= "taskmgr/thread-model/type" >
<h2 > Task Manager Configuration</h2>
<table class= "counters" >
<tr >
<th class= "even" > Thread-Model</th>
<td >
<xsl:value-of select= "taskmgr/thread-model/type" />
</td>
</tr>
<tr class= "odd" >
<th > Worker Threads</th>
<td >
<xsl:value-of select= "taskmgr/thread-model/worker-threads" />
</td>
</tr>
<tr class= "even" >
<th > Default Quantum</th>
<td >
<xsl:value-of select= "taskmgr/thread-model/default-quantum" />
</td>
</tr>
<tr class= "odd" >
<th > Tasks Running</th>
<td >
<xsl:value-of select= "taskmgr/thread-model/tasks-running" />
</td>
</tr>
<tr class= "even" >
<th > Tasks Ready</th>
<td >
<xsl:value-of select= "taskmgr/thread-model/tasks-ready" />
</td>
</tr>
</table>
<br />
</xsl:if>
<xsl:if test= "taskmgr/tasks/task" >
<h2 > Tasks</h2>
<table class= "tasks" >
<tr >
<th > ID</th>
<th > Name</th>
<th > References</th>
<th > State</th>
<th > Quantum</th>
<th > Events</th>
</tr>
<xsl:for-each select= "taskmgr/tasks/task" >
<xsl:sort select= "name" />
<xsl:variable name= "css-class14" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class14}" >
<td >
<xsl:value-of select= "id" />
</td>
<td >
<xsl:value-of select= "name" />
</td>
<td >
<xsl:value-of select= "references" />
</td>
<td >
<xsl:value-of select= "state" />
</td>
<td >
<xsl:value-of select= "quantum" />
</td>
<td >
<xsl:value-of select= "events" />
</td>
</tr>
</xsl:for-each>
</table>
<br />
</xsl:if>
<xsl:if test= "memory/summary" >
<h2 > Memory Usage Summary</h2>
<table class= "counters" >
<xsl:for-each select= "memory/summary/*" >
<xsl:variable name= "css-class13" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class13}" >
<th >
<xsl:value-of select= "name()" />
</th>
<td >
<xsl:value-of select= "." />
</td>
</tr>
</xsl:for-each>
</table>
<br />
</xsl:if>
<xsl:if test= "memory/contexts/context" >
<h2 > Memory Contexts</h2>
<table class= "mctx" >
<tr >
<th > ID</th>
<th > Name</th>
<th > References</th>
<th > TotalUse</th>
<th > InUse</th>
<th > MaxUse</th>
2017-02-01 23:36:38 -05:00
<th > Malloced</th>
<th > MaxMalloced</th>
2015-10-27 18:45:46 -04:00
<th > BlockSize</th>
<th > Pools</th>
<th > HiWater</th>
<th > LoWater</th>
</tr>
<xsl:for-each select= "memory/contexts/context" >
<xsl:sort select= "total" data-type= "number" order= "descending" />
<xsl:variable name= "css-class14" >
<xsl:choose >
<xsl:when test= "position() mod 2 = 0" > even</xsl:when>
<xsl:otherwise > odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class= "{$css-class14}" >
<td >
<xsl:value-of select= "id" />
</td>
<td >
<xsl:value-of select= "name" />
</td>
<td >
<xsl:value-of select= "references" />
</td>
<td >
<xsl:value-of select= "total" />
</td>
<td >
<xsl:value-of select= "inuse" />
</td>
<td >
<xsl:value-of select= "maxinuse" />
</td>
2017-02-01 23:36:38 -05:00
<td >
<xsl:value-of select= "malloced" />
</td>
<td >
<xsl:value-of select= "maxmalloced" />
</td>
2015-10-27 18:45:46 -04:00
<td >
<xsl:value-of select= "blocksize" />
</td>
<td >
<xsl:value-of select= "pools" />
</td>
<td >
<xsl:value-of select= "hiwater" />
</td>
<td >
<xsl:value-of select= "lowater" />
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
<hr />
<p class= "footer" > Internet Systems Consortium Inc.<br /> <a href= "http://www.isc.org" > http://www.isc.org</a> </p>
2006-12-21 01:03:37 -05:00
</body>
</html>
</xsl:template>
</xsl:stylesheet>