Hi,
I'm trying to create a dynamic REST template for monitoring aspects of PowerDNS recursor. One of the metrics counts how long each thread has spent on queries - as threads are dynamic and vary depending on the machine I thought I'd try to build a placeholder but I think either the format of the PowerDNS API is foiling me or PRTG.
These are the entries I'm trying to monitor with the template:
[ { "name": "cpu-msec-thread-0", "type": "StatisticItem", "value": "88195007" }, { "name": "cpu-msec-thread-1", "type": "StatisticItem", "value": "23439221" }, { "name": "cpu-msec-thread-10", "type": "StatisticItem", "value": "26430890" }, { "name": "cpu-msec-thread-11", "type": "StatisticItem", "value": "24616980" }, { "name": "cpu-msec-thread-12", "type": "StatisticItem", "value": "25795722" }, { "name": "cpu-msec-thread-2", "type": "StatisticItem", "value": "25027948" }, { "name": "cpu-msec-thread-3", "type": "StatisticItem", "value": "25910209" }, { "name": "cpu-msec-thread-4", "type": "StatisticItem", "value": "25116874" }, { "name": "cpu-msec-thread-5", "type": "StatisticItem", "value": "24945352" }, { "name": "cpu-msec-thread-6", "type": "StatisticItem", "value": "25538823" }, { "name": "cpu-msec-thread-7", "type": "StatisticItem", "value": "25172107" }, { "name": "cpu-msec-thread-8", "type": "StatisticItem", "value": "25194866" }, { "name": "cpu-msec-thread-9", "type": "StatisticItem", "value": "23597720" }, { "name": "fd-usage", "type": "StatisticItem", "value": "114" }, { "name": "malloc-bytes", "type": "StatisticItem", "value": "0" }, { "name": "real-memory-usage", "type": "StatisticItem", "value": "1257447424" }, { "name": "security-status", "type": "StatisticItem", "value": "1" }, { "name": "sys-msec", "type": "StatisticItem", "value": "193078605" }, { "name": "uptime", "type": "StatisticItem", "value": "2455604" }, { "name": "user-msec", "type": "StatisticItem", "value": "196111840" } ]
I'm trying to get PRTG to work out how many "cpu-msec-thread-n" gauges to create.
The current version of the template looks like this:
{ "prtg": { "description" : { "device": "PowerDNS Recursor (System)", "query": ":8082/api/v1/servers/localhost/statistics", "comment": "PowerDNS Recursor system stats" }, "result": [ { "channel": "Recursor CPU thread Time", "Unit": "Custom", "CustomUnit": "ms", "Mode": "Difference", "value": {$["cpu-msec-thread-"][#0]} }, { "channel": "Recursor CPU system Time", "Unit": "Custom", "CustomUnit": "ms", "Mode": "Difference", "value": $["sys-msec"] }, { "channel": "Recursor CPU user Time", "Unit": "Custom", "CustomUnit": "ms", "Mode": "Difference", "value": $["user-msec"] }, { "channel": "Recursor Memory Usage", "VolumeSize": "KiloByte", "value": $["real-memory-usage"] }, { "channel": "Recursor File Descriptors", "Unit": "Count", "value": $["fd-usage"] }, { "channel": "Recursor Software Update Status", "ValueLookup": "cleminan.pccw.powerdns.security.status", "ShowChart": "0", "ShowTable": "1", "value": $["security-status"] }, { "channel": "Recursor Process Uptime", "Unit": "TimeSeconds", "value": $.uptime } ] } }
I've had a play around with the format of the query string both:
"value": {$["cpu-msec-thread-"][#0]}
and
"value": {$["cpu-msec-thread-"[#0]]}
But with PRTG's handling of hyphens requiring a combination of punctuation it muddies the examples given.
https://www.paessler.com/manuals/prtg/rest_custom_sensor#jsonpath_expressions
Any help would be gratefully received.
Many thanks a.
Add comment