The Lua engine can generate and retrieve metrics.
Custom metrics can be added which will be shown in the output of ‘rec_control get-all’ and sent to the metrics server over the Carbon protocol. They will also appear in the JSON HTTP API.
Create a custom metric with:
myMetric=getMetric("myspecialmetric")
getMetric
(name[, prometheusName]) → Metric¶Returns the Metric
object with the name name
, creating the metric if it does not exist.
Parameters: | name (str) – The metric to retrieve |
---|
New in version 4.5.0.
Parameters: | prometheusName (string) – The optional Prometheus specific name. |
---|
Metric
¶Represents a custom metric
Metric::inc()
Increase metric by 1
Metric::incBy(amount)
Increase metric by amount
Parameters: | amount (int) – |
---|
Metric::set(to)
Set metric to value to
Parameters: | to (int) – |
---|
Metric::get() -> int
Get value of metric
Metrics are shared across all of PowerDNS and are fully atomic and high performance.
A Metric
object is effectively a pointer to an atomic value.
Note that metrics live in the same namespace as ‘system’ metrics. So if you generate one that overlaps with a PowerDNS stock metric, you will get double output and weird results.
New in version 4.1.0.
Statistics can be retrieved from Lua using the getStat()
call.
getStat
(name) → int¶Returns the value of a statistic.
Parameters: | name (string) – The name of the statistic. |
---|
For example, to retrieve the number of cache misses:
cacheMisses = getStat("cache-misses")
Please be aware that retrieving statistics is a relatively costly operation, and as such should for example not be done for every query.