includes/polling/applications/bind.inc.php
<?php
use LibreNMS\RRD\RrdDefinition;
$name = 'bind';
if (! empty($agent_data['app'][$name])) {
$bind = $agent_data['app'][$name];
} else {
$options = '-Oqv';
$mib = 'NET-SNMP-EXTEND-MIB';
$oid = 'nsExtendOutputFull.4.98.105.110.100';
$bind = snmp_get($device, $oid, $options, $mib);
}
$bind_data = explode("\n", $bind);
if (count($bind_data) !== 8) {
echo " Incorrect number of datapoints returned from device, skipping\n";
return;
}
[$incoming, $outgoing, $server, $resolver, $cache, $rrsets, $adb, $sockets] = $bind_data;
//
// INCOMING PROCESSING
//
[$a, $aaaa, $afsdb, $apl, $caa, $cdnskey, $cds, $cert, $cname, $dhcid, $dlv, $dnskey, $ds, $ipseckey, $key, $kx,
$loc, $mx, $naptr, $ns, $nsec, $nsec3, $nsec3param, $ptr, $rrsig, $rp, $sig, $soa, $srv, $sshfp, $ta, $tkey, $tlsa,
$tsig, $txt, $uri, $dname, $any, $axfr, $ixfr, $opt, $spf] = explode(',', $incoming);
$metrics = [];
$rrd_name = ['app', $name, $app->app_id];
$rrd_def = RrdDefinition::make()
->addDataset('any', 'DERIVE', 0)
->addDataset('a', 'DERIVE', 0)
->addDataset('aaaa', 'DERIVE', 0)
->addDataset('cname', 'DERIVE', 0)
->addDataset('mx', 'DERIVE', 0)
->addDataset('ns', 'DERIVE', 0)
->addDataset('ptr', 'DERIVE', 0)
->addDataset('soa', 'DERIVE', 0)
->addDataset('srv', 'DERIVE', 0)
->addDataset('spf', 'DERIVE', 0);
$fields = [
'any' => $any,
'a' => $a,
'aaaa' => $aaaa,
'cname' => $cname,
'mx' => $mx,
'ns' => $ns,
'ptr' => $ptr,
'soa' => $soa,
'srv' => $srv,
'spf' => $spf,
];
$metrics['queries'] = $fields;
$tags = ['name' => $name, 'app_id' => $app->app_id, 'type' => 'incoming', 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
data_update($device, 'app', $tags, $fields);
$rrd_name = ['app', $name, $app->app_id, 'incoming'];
$rrd_def = RrdDefinition::make()
->addDataset('afsdb', 'DERIVE', 0)
->addDataset('apl', 'DERIVE', 0)
->addDataset('caa', 'DERIVE', 0)
->addDataset('cdnskey', 'DERIVE', 0)
->addDataset('cds', 'DERIVE', 0)
->addDataset('cert', 'DERIVE', 0)
->addDataset('dhcid', 'DERIVE', 0)
->addDataset('dlv', 'DERIVE', 0)
->addDataset('dnskey', 'DERIVE', 0)
->addDataset('ds', 'DERIVE', 0)
->addDataset('ipseckey', 'DERIVE', 0)
->addDataset('key', 'DERIVE', 0)
->addDataset('kx', 'DERIVE', 0)
->addDataset('loc', 'DERIVE', 0)
->addDataset('naptr', 'DERIVE', 0)
->addDataset('nsec', 'DERIVE', 0)
->addDataset('nsec3', 'DERIVE', 0)
->addDataset('nsec3param', 'DERIVE', 0)
->addDataset('rrsig', 'DERIVE', 0)
->addDataset('rp', 'DERIVE', 0)
->addDataset('sig', 'DERIVE', 0)
->addDataset('sshfp', 'DERIVE', 0)
->addDataset('ta', 'DERIVE', 0)
->addDataset('tkey', 'DERIVE', 0)
->addDataset('tlsa', 'DERIVE', 0)
->addDataset('tsig', 'DERIVE', 0)
->addDataset('txt', 'DERIVE', 0)
->addDataset('uri', 'DERIVE', 0)
->addDataset('dname', 'DERIVE', 0)
->addDataset('axfr', 'DERIVE', 0)
->addDataset('ixfr', 'DERIVE', 0)
->addDataset('opt', 'DERIVE', 0);
$fields = [
'afsdb' => $afsdb,
'apl' => $apl,
'caa' => $caa,
'cdnskey' => $cdnskey,
'cds' => $cds,
'cert' => $cert,
'dhcid' => $dhcid,
'dlv' => $dlv,
'dnskey' => $dnskey,
'ds' => $ds,
'ipseckey' => $ipseckey,
'key' => $key,
'kx' => $kx,
'loc' => $loc,
'naptr' => $naptr,
'nsec' => $nsec,
'nsec3' => $nsec3,
'nsec3param' => $nsec3param,
'rrsig' => $rrsig,
'rp' => $rp,
'sig' => $sig,
'sshfp' => $sshfp,
'ta' => $ta,
'tkey' => $tkey,
'tlsa' => $tlsa,
'tsig' => $tsig,
'txt' => $txt,
'uri' => $uri,
'dname' => $dname,
'axfr' => $axfr,
'ixfr' => $ixfr,
'opt' => $opt,
];
$metrics['incoming'] = $fields;
$tags = ['name' => $name, 'app_id' => $app->app_id, 'type' => 'incoming_extended', 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
data_update($device, 'app', $tags, $fields);
//
// OUTGOING PROCESSING
//
[$a, $aaaa, $afsdb, $apl, $caa, $cdnskey, $cds, $cert, $cname, $dhcid, $dlv, $dnskey, $ds, $ipseckey, $key, $kx,
$loc, $mx, $naptr, $ns, $nsec, $nsec3, $nsec3param, $ptr, $rrsig, $rp, $sig, $soa, $srv, $sshfp, $ta, $tkey, $tlsa,
$tsig, $txt, $uri, $dname, $any, $axfr, $ixfr, $opt, $spf] = explode(',', $outgoing);
$rrd_name = ['app', $name, $app->app_id, 'outgoing'];
$rrd_def = RrdDefinition::make()
->addDataset('any', 'DERIVE', 0)
->addDataset('a', 'DERIVE', 0)
->addDataset('aaaa', 'DERIVE', 0)
->addDataset('cname', 'DERIVE', 0)
->addDataset('mx', 'DERIVE', 0)
->addDataset('ns', 'DERIVE', 0)
->addDataset('ptr', 'DERIVE', 0)
->addDataset('soa', 'DERIVE', 0)
->addDataset('srv', 'DERIVE', 0)
->addDataset('spf', 'DERIVE', 0)
->addDataset('afsdb', 'DERIVE', 0)
->addDataset('apl', 'DERIVE', 0)
->addDataset('caa', 'DERIVE', 0)
->addDataset('cdnskey', 'DERIVE', 0)
->addDataset('cds', 'DERIVE', 0)
->addDataset('cert', 'DERIVE', 0)
->addDataset('dhcid', 'DERIVE', 0)
->addDataset('dlv', 'DERIVE', 0)
->addDataset('dnskey', 'DERIVE', 0)
->addDataset('ds', 'DERIVE', 0)
->addDataset('ipseckey', 'DERIVE', 0)
->addDataset('key', 'DERIVE', 0)
->addDataset('kx', 'DERIVE', 0)
->addDataset('loc', 'DERIVE', 0)
->addDataset('naptr', 'DERIVE', 0)
->addDataset('nsec', 'DERIVE', 0)
->addDataset('nsec3', 'DERIVE', 0)
->addDataset('nsec3param', 'DERIVE', 0)
->addDataset('rrsig', 'DERIVE', 0)
->addDataset('rp', 'DERIVE', 0)
->addDataset('sig', 'DERIVE', 0)
->addDataset('sshfp', 'DERIVE', 0)
->addDataset('ta', 'DERIVE', 0)
->addDataset('tkey', 'DERIVE', 0)
->addDataset('tlsa', 'DERIVE', 0)
->addDataset('tsig', 'DERIVE', 0)
->addDataset('txt', 'DERIVE', 0)
->addDataset('uri', 'DERIVE', 0)
->addDataset('dname', 'DERIVE', 0)
->addDataset('axfr', 'DERIVE', 0)
->addDataset('ixfr', 'DERIVE', 0)
->addDataset('opt', 'DERIVE', 0);
$fields = [
'any' => $any,
'a' => $a,
'aaaa' => $aaaa,
'cname' => $cname,
'mx' => $mx,
'ns' => $ns,
'ptr' => $ptr,
'soa' => $soa,
'srv' => $srv,
'spf' => $spf,
'afsdb' => $afsdb,
'apl' => $apl,
'caa' => $caa,
'cdnskey' => $cdnskey,
'cds' => $cds,
'cert' => $cert,
'dhcid' => $dhcid,
'dlv' => $dlv,
'dnskey' => $dnskey,
'ds' => $ds,
'ipseckey' => $ipseckey,
'key' => $key,
'kx' => $kx,
'loc' => $loc,
'naptr' => $naptr,
'nsec' => $nsec,
'nsec3' => $nsec3,
'nsec3param' => $nsec3param,
'rrsig' => $rrsig,
'rp' => $rp,
'sig' => $sig,
'sshfp' => $sshfp,
'ta' => $ta,
'tkey' => $tkey,
'tlsa' => $tlsa,
'tsig' => $tsig,
'txt' => $txt,
'uri' => $uri,
'dname' => $dname,
'axfr' => $axfr,
'ixfr' => $ixfr,
'opt' => $opt,
];
$metrics['outgoing'] = $fields;
$tags = ['name' => $name, 'app_id' => $app->app_id, 'type' => 'outgoing', 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
data_update($device, 'app', $tags, $fields);
//
// SERVER PROCESSING
//
[$i4rr, $i6rr, $rwer, $trr, $aqr, $rqr, $rs, $trs, $rwes, $qrisa, $qriaa, $qrinaa, $qrin, $qris, $qrind,
$qcr, $dqr, $oqf, $uqr, $tqr, $oeor, $qd] = explode(',', $server);
$rrd_name = ['app', $name, $app->app_id, 'server'];
$rrd_def = RrdDefinition::make()
->addDataset('i4rr', 'DERIVE', 0)
->addDataset('i6rr', 'DERIVE', 0)
->addDataset('rwer', 'DERIVE', 0)
->addDataset('trr', 'DERIVE', 0)
->addDataset('aqr', 'DERIVE', 0)
->addDataset('rqr', 'DERIVE', 0)
->addDataset('rs', 'DERIVE', 0)
->addDataset('trs', 'DERIVE', 0)
->addDataset('rwes', 'DERIVE', 0)
->addDataset('qrisa', 'DERIVE', 0)
->addDataset('qriaa', 'DERIVE', 0)
->addDataset('qrinaa', 'DERIVE', 0)
->addDataset('qrin', 'DERIVE', 0)
->addDataset('qris', 'DERIVE', 0)
->addDataset('qrind', 'DERIVE', 0)
->addDataset('qcr', 'DERIVE', 0)
->addDataset('dqr', 'DERIVE', 0)
->addDataset('oqf', 'DERIVE', 0)
->addDataset('uqr', 'DERIVE', 0)
->addDataset('tqr', 'DERIVE', 0)
->addDataset('oeor', 'DERIVE', 0)
->addDataset('qd', 'DERIVE', 0);
$fields = [
'i4rr' => $i4rr,
'i6rr' => $i6rr,
'rwer' => $rwer,
'trr' => $trr,
'aqr' => $aqr,
'rqr' => $rqr,
'rs' => $rs,
'trs' => $trs,
'rwes' => $rwes,
'qrisa' => $qrisa,
'qriaa' => $qriaa,
'qrinaa' => $qrinaa,
'qrin' => $qrin,
'qris' => $qris,
'qrind' => $qrind,
'qcr' => $qcr,
'dqr' => $dqr,
'oqf' => $oqf,
'uqr' => $uqr,
'tqr' => $tqr,
'oeor' => $oeor,
'qd' => $qd,
];
$metrics['server'] = $fields;
$tags = ['name' => $name, 'app_id' => $app->app_id, 'type' => 'server', 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
data_update($device, 'app', $tags, $fields);
//
// RESOLVER PROCESSING
//
[$i4qs, $i6qs, $i4rr, $i6rr, $nr, $sr, $fr, $eqf, $trr, $ldr, $qr, $qt, $i4naf, $i6naf,
$i4naff, $i6naff, $rttl10, $rtt10t100, $rtt100t500, $rtt500t800, $rtt800t1600, $rttg1600,
$bs, $rr] = explode(',', $resolver);
$rrd_name = ['app', $name, $app->app_id, 'resolver'];
$rrd_def = RrdDefinition::make()
->addDataset('i4qs', 'DERIVE', 0)
->addDataset('i6qs', 'DERIVE', 0)
->addDataset('i4rr', 'DERIVE', 0)
->addDataset('i6rr', 'DERIVE', 0)
->addDataset('nr', 'DERIVE', 0)
->addDataset('sr', 'DERIVE', 0)
->addDataset('fr', 'DERIVE', 0)
->addDataset('eqf', 'DERIVE', 0)
->addDataset('trr', 'DERIVE', 0)
->addDataset('ldr', 'DERIVE', 0)
->addDataset('qr', 'DERIVE', 0)
->addDataset('qt', 'DERIVE', 0)
->addDataset('i4naf', 'DERIVE', 0)
->addDataset('i6naf', 'DERIVE', 0)
->addDataset('i4naff', 'DERIVE', 0)
->addDataset('i6naff', 'DERIVE', 0)
->addDataset('rttl10', 'DERIVE', 0)
->addDataset('rtt10t100', 'DERIVE', 0)
->addDataset('rtt100t500', 'DERIVE', 0)
->addDataset('rtt500t800', 'DERIVE', 0)
->addDataset('rtt800t1600', 'DERIVE', 0)
->addDataset('rttg1600', 'DERIVE', 0)
->addDataset('bs', 'GAUGE', 0)
->addDataset('rr', 'DERIVE', 0);
$fields = [
'i4qs' => $i4qs,
'i6qs' => $i6qs,
'i4rr' => $i4rr,
'i6rr' => $i6rr,
'nr' => $nr,
'sr' => $sr,
'fr' => $fr,
'eqf' => $eqf,
'trr' => $trr,
'ldr' => $ldr,
'qr' => $qr,
'qt' => $qt,
'i4naf' => $i4naf,
'i6naf' => $i6naf,
'i4naff' => $i4naff,
'i6naff' => $i6naff,
'rttl10' => $rttl10,
'rtt10t100' => $rtt10t100,
'rtt100t500' => $rtt100t500,
'rtt500t800' => $rtt500t800,
'rtt800t1600' => $rtt800t1600,
'rttg1600' => $rttg1600,
'bs' => $bs,
'rr' => $rr,
];
$metrics['resolver'] = $fields;
$tags = ['name' => $name, 'app_id' => $app->app_id, 'type' => 'resolver', 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
data_update($device, 'app', $tags, $fields);
//
// CACHE PROCESSING
//
[$ch, $cm, $chfq, $cmfq, $crddtme, $crddtte, $cdn, $cdhb, $ctmt, $ctmiu, $cthmiu,
$chmt, $chmiu, $chhmiu] = explode(',', $cache);
$rrd_def = RrdDefinition::make()
->addDataset('ch', 'DERIVE', 0)
->addDataset('cm', 'DERIVE', 0)
->addDataset('chfq', 'DERIVE', 0)
->addDataset('cmfq', 'DERIVE', 0)
->addDataset('crddtme', 'DERIVE', 0)
->addDataset('crddtte', 'DERIVE', 0)
->addDataset('cdn', 'GAUGE', 0)
->addDataset('cdhb', 'GAUGE', 0)
->addDataset('ctmt', 'GAUGE', 0)
->addDataset('ctmiu', 'GAUGE', 0)
->addDataset('cthmiu', 'GAUGE', 0)
->addDataset('chmt', 'GAUGE', 0)
->addDataset('chmiu', 'GAUGE', 0)
->addDataset('chhmiu', 'GAUGE', 0);
$fields = [
'ch' => $ch,
'cm' => $cm,
'chfq' => $chfq,
'cmfq' => $cmfq,
'crddtme' => $crddtme,
'crddtte' => $crddtte,
'cdn' => $cdn,
'cdhb' => $cdhb,
'ctmt' => $ctmt,
'ctmiu' => $ctmiu,
'cthmiu' => $cthmiu,
'chmt' => $chmt,
'chmiu' => $chmiu,
'chhmiu' => $chhmiu,
];
$metrics['cache'] = $fields;
$tags = [
'name' => $name,
'app_id' => $app->app_id,
'rrd_name' => ['app', $name, $app->app_id, 'cache'],
'rrd_def' => $rrd_def,
];
data_update($device, 'app', $tags, $fields);
//
// ADB PROCESSING
//
[$ahts, $aiht, $nhts, $niht] = explode(',', $adb);
$rrd_name = ['app', $name, $app->app_id, 'adb'];
$rrd_def = RrdDefinition::make()
->addDataset('ahts', 'GAUGE', 0)
->addDataset('aiht', 'GAUGE', 0)
->addDataset('nhts', 'GAUGE', 0)
->addDataset('niht', 'GAUGE', 0);
$fields = [
'ahts' => $ahts,
'aiht' => $aiht,
'nhts' => $nhts,
'niht' => $niht,
];
$metrics['adb'] = $fields;
$tags = ['name' => $name, 'app_id' => $app->app_id, 'type' => 'adb', 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
data_update($device, 'app', $tags, $fields);
//
// SOCKETS PROCESSING
//
[$ui4so, $ui6so, $ti4so, $ti6so, $rso, $ui4sc, $ui6sc, $ti4sc, $ti6sc, $ui4sbf, $ti4sbf, $ui6sbf, $ti6sbf,
$ui4scf, $ti4scf, $ui6scf, $ti6scf, $ui4ce, $ti4ce, $ui6ce, $ti6ce, $ti4ca, $ti6ca, $ui4se, $ti4se, $ui6se,
$ti6se, $ui4re, $ti4re, $ui6re, $ti6re, $ui4sa, $ui6sa, $ti4sa, $ti6sa, $rsa] = explode(',', $sockets);
$rrd_name = ['app', $name, $app->app_id, 'sockets'];
$rrd_def = RrdDefinition::make()
->addDataset('ui4so', 'DERIVE', 0)
->addDataset('ui6so', 'DERIVE', 0)
->addDataset('ti4so', 'DERIVE', 0)
->addDataset('ti6so', 'DERIVE', 0)
->addDataset('rso', 'DERIVE', 0)
->addDataset('ui4sc', 'DERIVE', 0)
->addDataset('ui6sc', 'DERIVE', 0)
->addDataset('ti4sc', 'DERIVE', 0)
->addDataset('ti6sc', 'DERIVE', 0)
->addDataset('ui4sbf', 'DERIVE', 0)
->addDataset('ti4sbf', 'DERIVE', 0)
->addDataset('ui6sbf', 'DERIVE', 0)
->addDataset('ti6sbf', 'DERIVE', 0)
->addDataset('ui4scf', 'DERIVE', 0)
->addDataset('ti4scf', 'DERIVE', 0)
->addDataset('ui6scf', 'DERIVE', 0)
->addDataset('ti6scf', 'DERIVE', 0)
->addDataset('ui4ce', 'DERIVE', 0)
->addDataset('ti4ce', 'DERIVE', 0)
->addDataset('ui6ce', 'DERIVE', 0)
->addDataset('ti6ce', 'DERIVE', 0)
->addDataset('ti4ca', 'DERIVE', 0)
->addDataset('ti6ca', 'DERIVE', 0)
->addDataset('ui4se', 'DERIVE', 0)
->addDataset('ti4se', 'DERIVE', 0)
->addDataset('ui6se', 'DERIVE', 0)
->addDataset('ti6se', 'DERIVE', 0)
->addDataset('ui4re', 'DERIVE', 0)
->addDataset('ti4re', 'DERIVE', 0)
->addDataset('ui6re', 'DERIVE', 0)
->addDataset('ti6re', 'DERIVE', 0)
->addDataset('ui4sa', 'GAUGE', 0)
->addDataset('ui6sa', 'GAUGE', 0)
->addDataset('ti4sa', 'GAUGE', 0)
->addDataset('ti6sa', 'GAUGE', 0)
->addDataset('rsa', 'GAUGE', 0);
$fields = [
'ui4so' => $ui4so,
'ui6so' => $ui6so,
'ti4so' => $ti4so,
'ti6so' => $ti6so,
'rso' => $rso,
'ui4sc' => $ui4sc,
'ui6sc' => $ui6sc,
'ti4sc' => $ti4sc,
'ti6sc' => $ti6sc,
'ui4sbf' => $ui4sbf,
'ti4sbf' => $ti4sbf,
'ui6sbf' => $ui6sbf,
'ti6sbf' => $ti6sbf,
'ui4scf' => $ui4scf,
'ti4scf' => $ti4scf,
'ui6scf' => $ui6scf,
'ti6scf' => $ti6scf,
'ui4ce' => $ui4ce,
'ti4ce' => $ti4ce,
'ui6ce' => $ui6ce,
'ti6ce' => $ti6ce,
'ti4ca' => $ti4ca,
'ti6ca' => $ti6ca,
'ui4se' => $ui4se,
'ti4se' => $ti4se,
'ui6se' => $ui6se,
'ti6se' => $ti6se,
'ui4re' => $ui4re,
'ti4re' => $ti4re,
'ui6re' => $ui6re,
'ti6re' => $ti6re,
'ui4sa' => $ui4sa,
'ui6sa' => $ui6sa,
'ti4sa' => $ti4sa,
'ti6sa' => $ti6sa,
'rsa' => $ti6sa,
];
$metrics['sockets'] = $fields;
$tags = ['name' => $name, 'app_id' => $app->app_id, 'type' => 'sockets', 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
data_update($device, 'app', $tags, $fields);
//
// RR SETS PROCESSING
//
[$a, $aaaa, $afsdb, $apl, $caa, $cdnskey, $cds, $cert, $cname, $dhcid, $dlv, $dnskey, $ds, $ipseckey, $key, $kx,
$loc, $mx, $naptr, $ns, $nsec, $nsec3, $nsec3param, $ptr, $rrsig, $rp, $sig, $soa, $srv, $sshfp, $ta, $tkey, $tlsa,
$tsig, $txt, $uri, $dname, $nxdomain, $any, $axfr, $ixfr, $opt, $spf, $nota, $notaaaa, $notafsdb, $notapl, $notcaa, $notcdnskey,
$notcds, $notcert, $notcname, $notdhcid, $notdlv, $notdnskey, $notds, $notipseckey, $notkey, $notkx, $notloc, $notmx,
$notnaptr, $notns, $notnsec, $notnsec3, $notnsec3param, $notptr, $notrrsig, $notrp, $notsig, $notsoa, $notsrv,
$notsshfp, $notta, $nottkey, $nottlsa, $nottsig, $nottxt, $noturi, $notdname, $notnxdomain, $notany, $notaxfr, $notixfr, $notopt,
$notspf] = explode(',', $rrsets);
$rrd_def = RrdDefinition::make()
->addDataset('any', 'GAUGE', 0)
->addDataset('a', 'GAUGE', 0)
->addDataset('aaaa', 'GAUGE', 0)
->addDataset('cname', 'GAUGE', 0)
->addDataset('mx', 'GAUGE', 0)
->addDataset('ns', 'GAUGE', 0)
->addDataset('ptr', 'GAUGE', 0)
->addDataset('soa', 'GAUGE', 0)
->addDataset('srv', 'GAUGE', 0)
->addDataset('spf', 'GAUGE', 0)
->addDataset('afsdb', 'GAUGE', 0)
->addDataset('apl', 'GAUGE', 0)
->addDataset('caa', 'GAUGE', 0)
->addDataset('cdnskey', 'GAUGE', 0)
->addDataset('cds', 'GAUGE', 0)
->addDataset('cert', 'GAUGE', 0)
->addDataset('dhcid', 'GAUGE', 0)
->addDataset('dlv', 'GAUGE', 0)
->addDataset('dnskey', 'GAUGE', 0)
->addDataset('ds', 'GAUGE', 0)
->addDataset('ipseckey', 'GAUGE', 0)
->addDataset('key', 'GAUGE', 0)
->addDataset('kx', 'GAUGE', 0)
->addDataset('loc', 'GAUGE', 0)
->addDataset('naptr', 'GAUGE', 0)
->addDataset('nsec', 'GAUGE', 0)
->addDataset('nsec3', 'GAUGE', 0)
->addDataset('nsec3param', 'GAUGE', 0)
->addDataset('rrsig', 'GAUGE', 0)
->addDataset('rp', 'GAUGE', 0)
->addDataset('sig', 'GAUGE', 0)
->addDataset('sshfp', 'GAUGE', 0)
->addDataset('ta', 'GAUGE', 0)
->addDataset('tkey', 'GAUGE', 0)
->addDataset('tlsa', 'GAUGE', 0)
->addDataset('tsig', 'GAUGE', 0)
->addDataset('txt', 'GAUGE', 0)
->addDataset('uri', 'GAUGE', 0)
->addDataset('dname', 'GAUGE', 0)
->addDataset('nxdomain', 'GAUGE', 0)
->addDataset('axfr', 'GAUGE', 0)
->addDataset('ixfr', 'GAUGE', 0)
->addDataset('opt', 'GAUGE', 0);
//first handle the positive
$rrd_name = ['app', $name, $app->app_id, 'rrpositive'];
$fields = [
'any' => $any,
'a' => $a,
'aaaa' => $aaaa,
'cname' => $cname,
'mx' => $mx,
'ns' => $ns,
'ptr' => $ptr,
'soa' => $soa,
'srv' => $srv,
'spf' => $spf,
'afsdb' => $afsdb,
'apl' => $apl,
'caa' => $caa,
'cdnskey' => $cdnskey,
'cds' => $cds,
'cert' => $cert,
'dhcid' => $dhcid,
'dlv' => $dlv,
'dnskey' => $dnskey,
'ds' => $ds,
'ipseckey' => $ipseckey,
'key' => $key,
'kx' => $kx,
'loc' => $loc,
'naptr' => $naptr,
'nsec' => $nsec,
'nsec3' => $nsec3,
'nsec3param' => $nsec3param,
'rrsig' => $rrsig,
'rp' => $rp,
'sig' => $sig,
'sshfp' => $sshfp,
'ta' => $ta,
'tkey' => $tkey,
'tlsa' => $tlsa,
'tsig' => $tsig,
'txt' => $txt,
'uri' => $uri,
'dname' => $dname,
'nxdomain' => $nxdomain,
'axfr' => $axfr,
'ixfr' => $ixfr,
'opt' => $opt,
];
$metrics['rrpositive'] = $fields;
$tags = ['name' => $name, 'app_id' => $app->app_id, 'type' => 'rrpositive', 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
data_update($device, 'app', $tags, $fields);
// now handle the negative
$rrd_name = ['app', $name, $app->app_id, 'rrnegative'];
$fields = [
'any' => $notany,
'a' => $nota,
'aaaa' => $notaaaa,
'cname' => $notcname,
'mx' => $notmx,
'ns' => $notns,
'ptr' => $notptr,
'soa' => $notsoa,
'srv' => $notsrv,
'spf' => $notspf,
'afsdb' => $notafsdb,
'apl' => $notapl,
'caa' => $notcaa,
'cdnskey' => $notcdnskey,
'cds' => $notcds,
'cert' => $notcert,
'dhcid' => $notdhcid,
'dlv' => $notdlv,
'dnskey' => $notdnskey,
'ds' => $notds,
'ipseckey' => $notipseckey,
'key' => $notkey,
'kx' => $notkx,
'loc' => $notloc,
'naptr' => $notnaptr,
'nsec' => $notnsec,
'nsec3' => $notnsec3,
'nsec3param' => $notnsec3param,
'rrsig' => $notrrsig,
'rp' => $notrp,
'sig' => $notsig,
'sshfp' => $notsshfp,
'ta' => $notta,
'tkey' => $nottkey,
'tlsa' => $nottlsa,
'tsig' => $nottsig,
'txt' => $nottxt,
'uri' => $noturi,
'dname' => $notdname,
'nxdomain' => $notnxdomain,
'axfr' => $notaxfr,
'ixfr' => $notixfr,
'opt' => $notopt,
];
$metrics['rrnegative'] = $fields;
$tags = ['name' => $name, 'app_id' => $app->app_id, 'type' => 'rrnegative', 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
data_update($device, 'app', $tags, $fields);
update_application($app, $bind, $metrics);