]>
git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/dnsdistdist/html/local.js
5 $(document
).ready(function() {
6 $.ajaxSetup({ cache
: false });
8 var qpsgraph
= new Rickshaw
.Graph( {
9 element
: document
.getElementById("qpschart"),
13 series
: new Rickshaw
.Series
.FixedDuration([{ name
: 'servfailps' }, {name
: 'qps'}], undefined, {
16 timeBase
: new Date().getTime() / 1000
19 var y_ticks
= new Rickshaw
.Graph
.Axis
.Y( {
22 tickFormat
: Rickshaw
.Fixtures
.Number
.formatKMBT
,
23 element
: document
.getElementById('qpsy_axis')
28 var cpugraph
= new Rickshaw
.Graph( {
29 element
: document
.getElementById("cpuchart"),
33 series
: new Rickshaw
.Series
.FixedDuration([{ name
: 'one' }, {name
: 'two'}], undefined, {
36 timeBase
: new Date().getTime() / 1000
39 var y_ticks
= new Rickshaw
.Graph
.Axis
.Y( {
42 tickFormat
: Rickshaw
.Fixtures
.Number
.formatKMBT
,
43 element
: document
.getElementById('cpuy_axis')
49 function updateRingBuffers()
51 var filtered
=$("#filter1").is(':checked')
52 var qstring
='jsonstat?command=get-query-ring&name=queries';
54 qstring
=qstring
+"&public-filtered=1";
59 var bouw
="<table><tr><th>Number</th><th>Domain</th><th>Type</th></tr>";
62 $.each(data
["entries"], function(a
,b
) {
69 b
[1]=b
[1].substring(0,25);
71 bouw
=bouw
+("<tr><td>"+b
[0]+"</td><td>"+b
[1]+"</td><td>"+b
[2]+"</td></tr>");
73 bouw
+="<tr><td>"+rest
+"</td><td>Rest</td></tr>";
75 $("#queryring").html(bouw
);
79 filtered
=$("#filter2").is(':checked')
80 qstring
='jsonstat?command=get-query-ring&name=servfail-queries';
82 qstring
=qstring
+"&public-filtered=1";
86 var bouw
="<table><tr><th>Number</th><th>Servfail domain</th><th>Type</th></tr>";
87 var num
=0, total
=0, rest
=0;
88 $.each(data
["entries"], function(a
,b
) {
95 b
[1]=b
[1].substring(0,25);
96 bouw
=bouw
+("<tr><td>"+b
[0]+"</td><td>"+b
[1]+"</td><td>"+b
[2]+"</td></tr>");
98 bouw
+="<tr><td>"+rest
+"</td><td>Rest</td></tr>";
100 $("#servfailqueryring").html(bouw
);
104 $.getJSON('jsonstat?command=get-remote-ring&name=remotes',
106 var bouw
="<table><tr><th>Number</th><th>Remote</th></tr>";
107 var num
=0, total
=0, rest
=0;
108 $.each(data
["entries"], function(a
,b
) {
114 bouw
=bouw
+("<tr><td>"+b
[0]+"</td><td>"+b
[1]+"</td></tr>");
116 bouw
+="<tr><td>"+rest
+"</td><td>Rest</td></tr>";
117 bouw
=bouw
+"</table>";
118 $("#remotering").html(bouw
);
122 $.getJSON('jsonstat?command=get-remote-ring&name=servfail-remotes',
124 var bouw
="<table><tr><th>Number</th><th>Servfail Remote</th></tr>";
125 var num
=0, total
=0, rest
=0;
126 $.each(data
["entries"], function(a
,b
) {
132 bouw
=bouw
+("<tr><td>"+b
[0]+"</td><td>"+b
[1]+"</td></tr>");
134 bouw
+="<tr><td>"+rest
+"</td><td>Rest</td></tr>";
135 bouw
=bouw
+"</table>";
136 $("#servfailremotering").html(bouw
);
143 url
: 'jsonstat?command=stats',
147 success: function(data
, x
, y
) {
148 $("#questions").text(data
["queries"]);
149 $("#acl-drops").text(data
["acl-drops"]);
150 $("#dyn-drops").text(data
["dyn-blocked"]);
151 $("#rule-drops").text(data
["rule-drop"]);
152 $("#uptime").text(moment
.duration(data
["uptime"]*1000.0).humanize());
153 $("#latency").text((data
["latency-avg10000"]/1000.0).toFixed(2));
154 $("#latency-tcp").text((data
["latency-tcp-avg10000"]/1000.0).toFixed(2));
155 $("#latency-dot").text((data
["latency-dot-avg10000"]/1000.0).toFixed(2));
156 $("#latency-doh").text((data
["latency-doh-avg10000"]/1000.0).toFixed(2));
157 $("#latency-doq").text((data
["latency-doq-avg10000"]/1000.0).toFixed(2));
158 if(!gdata
["cpu-sys-msec"])
161 var cpu
=((1.0*data
["cpu-sys-msec"]+1.0*data
["cpu-user-msec"] - 1.0*gdata
["cpu-sys-msec"]-1.0*gdata
["cpu-user-msec"])/10.0);
163 $("#cpu").text(cpu
.toFixed(2));
164 var qps
=1.0*data
["queries"]-1.0*gdata
["queries"];
165 $("#qps").text(qps
.toFixed(2));
166 $("#server-policy").text(data
["server-policy"]);
168 var servfailps
=1.0*data
["servfail-responses"]-1.0*gdata
["servfail-responses"];
170 var totpcache
=1.0*data
["cache-hits"]-1.0*gdata
["cache-hits"]+1.0*data
["cache-misses"]-1.0*gdata
["cache-misses"];
173 hitrate
=100.0*(data
["cache-hits"]-1.0*gdata
["cache-hits"])/totpcache
;
174 $("#phitrate").text(hitrate
.toFixed(2));
177 $("#phitrate").text(0);
179 qpsgraph
.series
.addData({ qps
: qps
, servfailps
: servfailps
});
182 cpugraph
.series
.addData({ one
: cpu
, two
: hitrate
});
192 $.ajax({ url
: 'api/v1/servers/localhost', type
: 'GET', dataType
: 'json', jsonp
: false,
193 success: function(data
) {
194 $("#version").text(data
["daemon_type"]+" "+data
["version"]);
195 $("#acl").text(data
["acl"]);
196 $("#local").text(data
["local"]);
197 var bouw
='<table width="100%"><tr align=right><th>#</th><th align=left>Name</th><th align=left>Address</th><th>Status</th><th>UDP Latency</th><th>TCP Latency</th><th>Queries</th><th>Drops</th><th>QPS</th><th>Out</th><th>Weight</th><th>Order</th><th align=left>Pools</th></tr>';
198 $.each(data
["servers"], function(a
,b
) {
199 bouw
= bouw
+ ("<tr align=right><td>"+b
["id"]+"</td><td align=left>"+b
["name"]+"</td><td align=left>"+b
["address"]+"</td><td>"+b
["state"]+"</td>");
200 var latency
= (b
["latency"] === null || b
["latency"] === 0.0) ? "-" : b
["latency"].toFixed(2);
201 var tcpLatency
= (b
["tcpLatency"] === null || b
["tcpLatency"] === 0.0) ? "-" : b
["tcpLatency"].toFixed(2);
202 bouw
= bouw
+ ("<td>"+latency
+"</td><td>"+tcpLatency
+"</td><td>"+b
["queries"]+"</td><td>"+b
["reuseds"]+"</td><td>"+(b
["qps"]).toFixed(2)+"</td><td>"+b
["outstanding"]+"</td>");
203 bouw
= bouw
+ ("<td>"+b
["weight"]+"</td><td>"+b
["order"]+"</td><td align=left>"+b
["pools"]+"</td></tr>");
205 bouw
= bouw
+ "</table>";
206 $("#downstreams").html(bouw
);
208 bouw
='<table width="100%"><tr align=left><th>#</th><th align=left>Name</th><th align=left>Rule</th><th>Action</th><th>Matches</th></tr>';
209 if(data
["rules"].length
) {
210 $.each(data
["rules"], function(a
,b
) {
211 bouw
= bouw
+ ("<tr align=left><td>"+b
["id"]+"</td><td align=left>"+b
["name"]+"</td><td align=left>"+b
["rule"]+"</td><td>"+b
["action"]+"</td>");
212 bouw
= bouw
+ ("<td>"+b
["matches"]+"</td></tr>");
216 bouw
= bouw
+ '<tr><td align="center" colspan="4"><font color="#aaaaaa">No rules defined</font></td></tr>';
217 bouw
= bouw
+ "</table>";
218 $("#rules").html(bouw
);
220 bouw
='<table width="100%"><tr align=left><th>#</th><th align=left>Name</th><th align=left>Response Rule</th><th>Action</th><th>Matches</th></tr>';
221 if(data
["response-rules"].length
) {
222 $.each(data
["response-rules"], function(a
,b
) {
223 bouw
= bouw
+ ("<tr align=left><td>"+b
["id"]+"</td><td align=left>"+b
["name"]+"</td><td align=left>"+b
["rule"]+"</td><td>"+b
["action"]+"</td>");
224 bouw
= bouw
+ ("<td>"+b
["matches"]+"</td></tr>");
228 bouw
= bouw
+ '<tr><td align="center" colspan="4"><font color="#aaaaaa">No response rules defined</font></td></tr>';
229 bouw
= bouw
+ "</table>";
230 $("#response-rules").html(bouw
);
235 // if((intervalcount++)%5)
237 // updateRingBuffers();
239 $.ajax({ url
: 'jsonstat?command=dynblocklist', type
: 'GET', dataType
: 'json', jsonp
: false,
240 success: function(data
) {
241 var bouw
='<table width="100%"><tr align=left><th>Dyn blocked netmask</th><th>Seconds</th><th>Blocks</th><th>eBPF</th><th align=left>Reason</th></tr>';
243 $.each(data
, function(a
,b
) {
244 bouw
=bouw
+("<tr><td>"+a
+"</td><td>"+b
.seconds
+"</td><td>"+b
.blocks
+"</td><td>"+b
.ebpf
+"</td><td>"+b
.reason
+"</td></tr>");
249 bouw
= bouw
+ '<tr><td align="center" colspan="4"><font color="#aaaaaa">No dynamic blocks active</font></td></tr>';
251 bouw
=bouw
+"</table>";
252 $("#dynblock").html(bouw
);
256 $.ajax({ url
: 'jsonstat?command=ebpfblocklist', type
: 'GET', dataType
: 'json', jsonp
: false,
257 success: function(data
) {
258 var bouw
='<table width="100%"><tr align=left><th>Kernel-based dyn blocked netmask</th><th>Seconds</th></th><th>Blocks</th></tr>';
260 $.each(data
, function(a
,b
) {
261 bouw
=bouw
+("<tr><td>"+a
+"</td><td>"+b
.seconds
+"</td><td>"+b
.blocks
+"</td></tr>");
266 bouw
= bouw
+ '<tr><td align="center" colspan="4"><font color="#aaaaaa">No eBPF blocks active</font></td></tr>';
268 bouw
=bouw
+"</table>";
269 $("#ebpfblock").html(bouw
);
275 $("#filter1").click(updateRingBuffers
);
276 $("#filter2").click(updateRingBuffers
);
279 setInterval(update
, 1000);