Exporting statistics via Carbon¶
Setting up a carbon export¶
To emit metrics to Graphite, or any other software supporting the Carbon protocol, use:
carbonServer('ip-address-of-carbon-server', 'ourname', 30, 'dnsdist', 'main')
Where ourname
can be used to override your hostname, and 30
is the reporting interval in seconds. dnsdist
and main
are used as namespace and instance variables. For querycount statistics these two variables are currently ignored. The last four arguments can be omitted.
The latest version of PowerDNS Metronome comes with attractive graphs for dnsdist by default.
Query counters¶
In addition to other metrics, it is possible to send per-records statistics of the amount of queries by using setQueryCount()
. With query counting enabled, dnsdist will increase a counter for every unique record or the behaviour you define in a custom Lua function by setting setQueryCountFilter()
. This filter can decide whether to keep count on a query at all or rewrite for which query the counter will be increased. An example of a QueryCountFilter would be:
function filter(dq)
qname = dq.qname:toString()
-- don't count PTRs at all
if(qname:match('in%-addr.arpa$')) then
return false, ""
end
-- count these queries as if they were queried without leading www.
if(qname:match('^www.')) then
qname = qname:gsub('^www.', '')
end
-- count queries by default
return true, qname
end
setQueryCountFilter(filter)
Valid return values for QueryCountFilter
functions are:
- true: count the specified query
- false: don’t count the query
Note that the query counters are buffered and flushed each time statistics are sent to the carbon server. The current content of the buffer can be inspected with :getQueryCounters()
. If you decide to enable query counting without carbonServer()
, make sure you implement clearing the log from maintenance()
by issuing clearQueryCounters()
.