helpAdded = true;
}
+ stats<<"# HELP "<<prefix<<"unknown_domain_inqueries_total Number of queries received for domains unknown to us"<<std::endl;
+ stats<<"# TYPE "<<prefix<<"unknown_domain_inqueries_total counter"<<std::endl;
+ stats<<prefix<<"unknown_domain_inqueries_total "<<progStats.unknownDomainInQueries<<std::endl;
+
return stats.str();
}
void registerDomain(const DNSName& d) {
domainStats[d].haveZone = false;
}
+ void incrementUnknownDomainInQueries(const DNSName &d) { // the name is ignored. It would be great to report it, but we don't want to blow up Prometheus
+ progStats.unknownDomainInQueries += 1;
+ }
private:
class perDomainStat {
public:
class programStats {
public:
time_t startTime;
+ std::atomic<uint32_t> unknownDomainInQueries;
};
std::map<DNSName, perDomainStat> domainStats;
g_stats.incrementSOAinQueries(mdp.d_qname); // FIXME: this also counts IXFR queries (but the response is the same as to a SOA query)
makeSOAPacket(mdp, packet);
} else {
+ g_stats.incrementUnknownDomainInQueries(mdp.d_qname);
makeRefusedPacket(mdp, packet);
}
_config_domains = {'example': '127.0.0.1:' + str(xfrServerPort)}
- metric_prog_stats = ["ixfrdist_uptime_seconds", "ixfrdist_domains"]
+ metric_prog_stats = ["ixfrdist_uptime_seconds", "ixfrdist_domains", "ixfrdist_unknown_domain_inqueries_total"]
metric_domain_stats = ["ixfrdist_soa_serial", "ixfrdist_soa_checks_total",
"ixfrdist_soa_checks_failed_total",
"ixfrdist_soa_inqueries_total",