| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | package dnsdist |
| 4 | |
| 5 | import "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi" |
| 6 | |
| 7 | var charts = collectorapi.Charts{ |
| 8 | { |
| 9 | ID: "queries", |
| 10 | Title: "Client queries received", |
| 11 | Units: "queries/s", |
| 12 | Fam: "queries", |
| 13 | Ctx: "dnsdist.queries", |
| 14 | Dims: collectorapi.Dims{ |
| 15 | {ID: "queries", Name: "all", Algo: collectorapi.Incremental}, |
| 16 | {ID: "rdqueries", Name: "recursive", Algo: collectorapi.Incremental}, |
| 17 | {ID: "empty-queries", Name: "empty", Algo: collectorapi.Incremental}, |
| 18 | }, |
| 19 | }, |
| 20 | { |
| 21 | ID: "queries_dropped", |
| 22 | Title: "Client queries dropped", |
| 23 | Units: "queries/s", |
| 24 | Fam: "queries", |
| 25 | Ctx: "dnsdist.queries_dropped", |
| 26 | Dims: collectorapi.Dims{ |
| 27 | {ID: "rule-drop", Name: "rule drop", Algo: collectorapi.Incremental}, |
| 28 | {ID: "dyn-blocked", Name: "dynamic blocked", Algo: collectorapi.Incremental}, |
| 29 | {ID: "no-policy", Name: "no policy", Algo: collectorapi.Incremental}, |
| 30 | {ID: "noncompliant-queries", Name: "non queries", Algo: collectorapi.Incremental}, |
| 31 | }, |
| 32 | }, |
| 33 | { |
| 34 | ID: "packets_dropped", |
| 35 | Title: "Packets dropped", |
| 36 | Units: "packets/s", |
| 37 | Fam: "packets", |
| 38 | Ctx: "dnsdist.packets_dropped", |
| 39 | Dims: collectorapi.Dims{ |
| 40 | {ID: "acl-drops", Name: "acl", Algo: collectorapi.Incremental}, |
| 41 | }, |
| 42 | }, |
| 43 | { |
| 44 | ID: "answers", |
| 45 | Title: "Answers statistics", |
| 46 | Units: "answers/s", |
| 47 | Fam: "answers", |
| 48 | Ctx: "dnsdist.answers", |
| 49 | Dims: collectorapi.Dims{ |
| 50 | {ID: "self-answered", Name: "self answered", Algo: collectorapi.Incremental}, |
| 51 | {ID: "rule-nxdomain", Name: "nxdomain", Algo: collectorapi.Incremental, Mul: -1}, |
| 52 | {ID: "rule-refused", Name: "refused", Algo: collectorapi.Incremental, Mul: -1}, |
| 53 | {ID: "trunc-failures", Name: "trunc failures", Algo: collectorapi.Incremental, Mul: -1}, |
| 54 | }, |
| 55 | }, |
| 56 | { |
| 57 | ID: "backend_responses", |
| 58 | Title: "Backend responses", |
| 59 | Units: "responses/s", |
| 60 | Fam: "backends", |
| 61 | Ctx: "dnsdist.backend_responses", |
| 62 | Dims: collectorapi.Dims{ |
| 63 | {ID: "responses", Name: "responses", Algo: collectorapi.Incremental}, |
| 64 | }, |
| 65 | }, |
| 66 | { |
| 67 | ID: "backend_commerrors", |
| 68 | Title: "Backend communication errors", |
| 69 | Units: "errors/s", |
| 70 | Fam: "backends", |
| 71 | Ctx: "dnsdist.backend_commerrors", |
| 72 | Dims: collectorapi.Dims{ |
| 73 | {ID: "downstream-send-errors", Name: "send errors", Algo: collectorapi.Incremental}, |
| 74 | }, |
| 75 | }, |
| 76 | { |
| 77 | ID: "backend_errors", |
| 78 | Title: "Backend error responses", |
| 79 | Units: "responses/s", |
| 80 | Fam: "backends", |
| 81 | Ctx: "dnsdist.backend_errors", |
| 82 | Dims: collectorapi.Dims{ |
| 83 | {ID: "downstream-timeouts", Name: "timeouts", Algo: collectorapi.Incremental}, |
| 84 | {ID: "servfail-responses", Name: "servfail", Algo: collectorapi.Incremental}, |
| 85 | {ID: "noncompliant-responses", Name: "non compliant", Algo: collectorapi.Incremental}, |
| 86 | }, |
| 87 | }, |
| 88 | { |
| 89 | ID: "cache", |
| 90 | Title: "Cache performance", |
| 91 | Units: "answers/s", |
| 92 | Fam: "cache", |
| 93 | Ctx: "dnsdist.cache", |
| 94 | Dims: collectorapi.Dims{ |
| 95 | {ID: "cache-hits", Name: "hits", Algo: collectorapi.Incremental}, |
| 96 | {ID: "cache-misses", Name: "misses", Algo: collectorapi.Incremental, Mul: -1}, |
| 97 | }, |
| 98 | }, |
| 99 | { |
| 100 | ID: "servercpu", |
| 101 | Title: "DNSdist server CPU utilization", |
| 102 | Units: "ms/s", |
| 103 | Fam: "server", |
| 104 | Ctx: "dnsdist.servercpu", |
| 105 | Type: collectorapi.Stacked, |
| 106 | Dims: collectorapi.Dims{ |
| 107 | {ID: "cpu-sys-msec", Name: "system state", Algo: collectorapi.Incremental}, |
| 108 | {ID: "cpu-user-msec", Name: "user state", Algo: collectorapi.Incremental}, |
| 109 | }, |
| 110 | }, |
| 111 | { |
| 112 | ID: "servermem", |
| 113 | Title: "DNSdist server memory utilization", |
| 114 | Units: "MiB", |
| 115 | Fam: "server", |
| 116 | Ctx: "dnsdist.servermem", |
| 117 | Type: collectorapi.Area, |
| 118 | Dims: collectorapi.Dims{ |
| 119 | {ID: "real-memory-usage", Name: "memory usage", Div: 1 << 20}, |
| 120 | }, |
| 121 | }, |
| 122 | { |
| 123 | ID: "query_latency", |
| 124 | Title: "Query latency", |
| 125 | Units: "queries/s", |
| 126 | Fam: "latency", |
| 127 | Ctx: "dnsdist.query_latency", |
| 128 | Type: collectorapi.Stacked, |
| 129 | Dims: collectorapi.Dims{ |
| 130 | {ID: "latency0-1", Name: "1ms", Algo: collectorapi.Incremental}, |
| 131 | {ID: "latency1-10", Name: "10ms", Algo: collectorapi.Incremental}, |
| 132 | {ID: "latency10-50", Name: "50ms", Algo: collectorapi.Incremental}, |
| 133 | {ID: "latency50-100", Name: "100ms", Algo: collectorapi.Incremental}, |
| 134 | {ID: "latency100-1000", Name: "1sec", Algo: collectorapi.Incremental}, |
| 135 | {ID: "latency-slow", Name: "slow", Algo: collectorapi.Incremental}, |
| 136 | }, |
| 137 | }, |
| 138 | { |
| 139 | ID: "query_latency_avg", |
| 140 | Title: "Average latency for the last N queries", |
| 141 | Units: "microseconds", |
| 142 | Fam: "latency", |
| 143 | Ctx: "dnsdist.query_latency_avg", |
| 144 | Dims: collectorapi.Dims{ |
| 145 | {ID: "latency-avg100", Name: "100"}, |
| 146 | {ID: "latency-avg1000", Name: "1k"}, |
| 147 | {ID: "latency-avg10000", Name: "10k"}, |
| 148 | {ID: "latency-avg1000000", Name: "1000k"}, |
| 149 | }, |
| 150 | }, |
| 151 | } |