244 lines
5.4 KiB
PHP

<?php
/**
* Observium
*
* This file is part of Observium.
*
* @package observium
* @subpackage poller
* @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2019 Observium Limited
*
*/
/*
Not showing stats for:
- Different servers
- Timings
i.e.
serverX.queries
time.boot
time.elapsed
server0.queries=0
num.queries=0
time.boot=85706.132516
time.elapsed=120.662870
size.db.disk=67072
size.db.mem=38008
size.xfrd.mem=20990792
size.config.disk=0
size.config.mem=5184
num.type.A=0
num.type.NS=0
num.type.MD=0
num.type.MF=0
num.type.CNAME=0
num.type.SOA=0
num.type.MB=0
num.type.MG=0
num.type.MR=0
num.type.NULL=0
num.type.WKS=0
num.type.PTR=0
num.type.HINFO=0
num.type.MINFO=0
num.type.MX=0
num.type.TXT=0
num.type.RP=0
num.type.AFSDB=0
num.type.X25=0
num.type.ISDN=0
num.type.RT=0
num.type.NSAP=0
num.type.SIG=0
num.type.KEY=0
num.type.PX=0
num.type.AAAA=0
num.type.LOC=0
num.type.NXT=0
num.type.SRV=0
num.type.NAPTR=0
num.type.KX=0
num.type.CERT=0
num.type.DNAME=0
num.type.OPT=0
num.type.APL=0
num.type.DS=0
num.type.SSHFP=0
num.type.IPSECKEY=0
num.type.RRSIG=0
num.type.NSEC=0
num.type.DNSKEY=0
num.type.DHCID=0
num.type.NSEC3=0
num.type.NSEC3PARAM=0
num.type.TLSA=0
num.type.SPF=0
num.type.NID=0
num.type.L32=0
num.type.L64=0
num.type.LP=0
num.type.EUI48=0
num.type.EUI64=0
num.opcode.QUERY=0
num.class.IN=0
num.rcode.NOERROR=0
num.rcode.FORMERR=0
num.rcode.SERVFAIL=0
num.rcode.NXDOMAIN=0
num.rcode.NOTIMP=0
num.rcode.REFUSED=0
num.rcode.YXDOMAIN=0
num.edns=0
num.ednserr=0
num.udp=0
num.udp6=0
num.tcp=0
num.tcp6=0
num.answer_wo_aa=0
num.rxerr=0
num.txerr=0
num.raxfr=0
num.truncated=0
num.dropped=0
zone.master=3
zone.slave=0
*/
if (!empty($agent_data['app']['nsd']))
{
$app_id = discover_app($device, 'nsd');
foreach (explode("\n",$agent_data['app']['nsd']) as $line)
{
list($key,$value) = explode("=",$line,2);
$nsd[$key] = $value;
}
// Memory
$rrd_filename = "app-nsd-memory.rrd";
rrdtool_create($device, $rrd_filename, " \
DS:memDBDisk:GAUGE:600:0:125000000000 \
DS:memDBMem:GAUGE:600:0:125000000000 \
DS:memXFRDMem:GAUGE:600:0:125000000000 \
DS:memConfDisk:GAUGE:600:0:125000000000 \
DS:memConfMem:GAUGE:600:0:125000000000 ");
foreach (array("size.db.disk","size.db.mem","size.xfrd.mem","size.config.disk","size.config.disk") as $key)
{
$rrd_values[] = $nsd[$key];
}
rrdtool_update($device, $rrd_filename, "N:" . implode(':', $rrd_values));
unset($rrd_values);
// Zones
$rrd_filename = "app-nsd-zones.rrd";
rrdtool_create($device, $rrd_filename, " \
DS:zoneMaster:GAUGE:600:0:125000000000 \
DS:zoneSlave:GAUGE:600:0:125000000000 ");
foreach (array("zone.master","zone.slave") as $key)
{
$rrd_values[] = $nsd[$key];
}
rrdtool_update($device, $rrd_filename, "N:" . implode(':', $rrd_values));
unset($rrd_values);
// Queries
$rrd_filename = "app-nsd-queries.rrd";
$dns_qtype = array(
'A','NS','MD','MF','CNAME','SOA','MB','MG','MR','NULL','WKS','PTR','HINFO','MINFO','MX','TXT','RP','AFSDB','X25',
'ISDN','RT','NSAP','SIG','KEY','PX','AAAA','LOC','NXT','SRV','NAPTR','KX','CERT','DNAME','OPT','APL','DS','SSHFP','IPSECKEY',
'RRSIG','NSEC','DNSKEY','DHCID','NSEC3','NSEC3PARAM','TLSA','SPF','NID','L32','L64','LP','EUI48','EUI64');
$dns_rcode = array('FORMERR', 'NOERROR', 'NOTIMP', 'NXDOMAIN', 'REFUSED', 'SERVFAIL', 'YXDOMAIN');
foreach ($dns_qtype as $qtype)
{
$rrd_queries .= "DS:qType$qtype:DERIVE:600:0:125000000000 ";
}
$rrd_queries .= "DS:classIN:DERIVE:600:0:125000000000 ";
foreach ($dns_rcode as $rcode)
{
$rrd_queries .= "DS:rcode$rcode:DERIVE:600:0:125000000000 ";
}
$rrd_queries .= "DS:opcodeIN:DERIVE:600:0:125000000000 ";
$rrd_queries .= "DS:numQueries:DERIVE:600:0:125000000000 ";
$rrd_queries .=
"DS:numQueryUDP:DERIVE:600:0:125000000000 \
DS:numQueryUDP6:DERIVE:600:0:125000000000 \
DS:numQueryTCP:DERIVE:600:0:125000000000 \
DS:numQueryTCP6:DERIVE:600:0:125000000000 \
DS:numQueryEDNS:DERIVE:600:0:125000000000 \
DS:numQueryEDNSErr:DERIVE:600:0:125000000000 \
DS:numQueryRecieveErr:DERIVE:600:0:125000000000 \
DS:numQueryTransferErr:DERIVE:600:0:125000000000 \
DS:numRequestAXFR:DERIVE:600:0:125000000000 \
DS:numQueryTruncated:DERIVE:600:0:125000000000 \
DS:numQueryDropped:DERIVE:600:0:125000000000 \
DS:numQueriesWoAA:DERIVE:600:0:125000000000 \
";
rrdtool_create($device, $rrd_filename, "" . $rrd_queries );
foreach ($dns_qtype as $qtype)
{
$rrd_values[] = $nsd["num.type.$qtype"];
}
$rrd_values[] = $nsd["num.class.IN"];
foreach ($dns_rcode as $rcode)
{
$rrd_values[] = $nsd["num.rcode.$rcode"];
}
$rrd_values[] = $nsd["num.opcode.IN"];
$rrd_values[] = $nsd["num.queries"];
foreach (array('num.udp','num.udp6', 'num.tcp','num.tcp6', 'num.edns','num.ednserr','num.rxerr','num.txerr','num.raxfr','num.truncated','num.dropped','num.answer_wo_aa') as $key)
{
$rrd_values[] = $nsd[$key];
}
update_application($app_id, $nsd);
rrdtool_update($device, $rrd_filename, "N:" . implode(':', $rrd_values));
unset($rrd_values);
$serverNum = 0;
while (1)
{
if (isset($nsd["server$serverNum.queries"]))
{
$rrd_filename = "app-nsd-server$serverNum.rrd";
rrdtool_create($device, $rrd_filename, "DS:numQueries:DERIVE:600:0:125000000000");
rrdtool_update($device, $rrd_filename, "N:" . $nsd["server$serverNum.queries"]);
$serverNum++;
}
else
{
break;
}
}
unset($serverNum);
}
// EOF