can vary.
/* don't account truncate actions for TCP queries, since they are not applied */
if (appliedPolicy.d_kind != DNSFilterEngine::PolicyKind::Truncate || !dc->d_tcp) {
++g_stats.policyResults[appliedPolicy.d_kind];
- ++g_stats.policyHits[appliedPolicy.getName()];
+ ++(g_stats.policyHits.lock()->operator[](appliedPolicy.getName()));
}
if (sr.doLog() && appliedPolicy.d_type != DNSFilterEngine::PolicyType::None) {
return entries;
}
-static StatsMap toRPZStatsMap(const string& name, const std::unordered_map<std::string, std::atomic<uint64_t>>& map)
+static StatsMap toRPZStatsMap(const string& name, LockGuarded<std::unordered_map<std::string, std::atomic<uint64_t>>>& map)
{
const string pbasename = getPrometheusName(name);
StatsMap entries;
uint64_t total = 0;
- for (const auto& entry: map) {
+ for (const auto& entry: *map.lock()) {
auto &key = entry.first;
auto count = entry.second.load();
std::string sname, pname;
pname = pbasename + "{type=\"filter\"}";
} else {
sname = name + "-rpz-" + key;
- pname = pbasename + "{type=\"rpz\",policyname=\"" + entry.first + "\"}";
+ pname = pbasename + "{type=\"rpz\",policyname=\"" + key + "\"}";
}
entries.emplace(sname, StatsMapEntry{pname, std::to_string(count)});
total += count;
policy-hits
^^^^^^^^^^^
Number of policy decisions based on Lua (``type = "filter"``), or RPZ (``type = "rpz"``). RPZ hits include the :ref:`rpz-policyName`.
-These metrics are useful for Prometheus and not listed other outputs by default.
+These metrics are useful for Prometheus and not listed in other outputs by default.
policy-result-noaction
^^^^^^^^^^^^^^^^^^^^^^
#include <map>
// Metric types for Prometheus
-enum class PrometheusMetricType
+enum class PrometheusMetricType : uint8_t
{
counter,
gauge,
/* don't account truncate actions for TCP queries, since they are not applied */
if (d_appliedPolicy.d_kind != DNSFilterEngine::PolicyKind::Truncate || !d_queryReceivedOverTCP) {
++g_stats.policyResults[d_appliedPolicy.d_kind];
- ++g_stats.policyHits[d_appliedPolicy.getName()];
+ ++(g_stats.policyHits.lock()->operator[](d_appliedPolicy.getName()));
}
if (d_appliedPolicy.d_type != DNSFilterEngine::PolicyType::None) {
std::map<vState, std::atomic<uint64_t> > dnssecResults;
std::map<vState, std::atomic<uint64_t> > xdnssecResults;
std::map<DNSFilterEngine::PolicyKind, std::atomic<uint64_t> > policyResults;
- std::unordered_map<std::string, std::atomic<uint64_t>> policyHits;
+ LockGuarded<std::unordered_map<std::string, std::atomic<uint64_t>>> policyHits;
std::atomic<uint64_t> rebalancedQueries{0};
std::atomic<uint64_t> proxyProtocolInvalidCount{0};
std::atomic<uint64_t> nodLookupsDroppedOversize{0};