github.com/netdata/go.d.plugin@v0.58.1/modules/pihole/charts.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package pihole 4 5 import ( 6 "github.com/netdata/go.d.plugin/agent/module" 7 ) 8 9 const ( 10 prioDNSQueriesTotal = module.Priority + iota 11 prioDNSQueries 12 prioDNSQueriesPerc 13 prioUniqueClients 14 prioDomainsOnBlocklist 15 prioBlocklistLastUpdate 16 prioUnwantedDomainsBlockingStatus 17 18 prioDNSQueriesTypes 19 prioDNSQueriesForwardedDestination 20 ) 21 22 var baseCharts = module.Charts{ 23 chartDNSQueriesTotal.Copy(), 24 chartDNSQueries.Copy(), 25 chartDNSQueriesPerc.Copy(), 26 chartUniqueClients.Copy(), 27 chartDomainsOnBlocklist.Copy(), 28 chartBlocklistLastUpdate.Copy(), 29 chartUnwantedDomainsBlockingStatus.Copy(), 30 } 31 32 var ( 33 chartDNSQueriesTotal = module.Chart{ 34 ID: "dns_queries_total", 35 Title: "DNS Queries Total (Cached, Blocked and Forwarded)", 36 Units: "queries", 37 Fam: "queries", 38 Ctx: "pihole.dns_queries_total", 39 Priority: prioDNSQueriesTotal, 40 Dims: module.Dims{ 41 {ID: "dns_queries_today", Name: "queries"}, 42 }, 43 } 44 chartDNSQueries = module.Chart{ 45 ID: "dns_queries", 46 Title: "DNS Queries", 47 Units: "queries", 48 Fam: "queries", 49 Ctx: "pihole.dns_queries", 50 Type: module.Stacked, 51 Priority: prioDNSQueries, 52 Dims: module.Dims{ 53 {ID: "queries_cached", Name: "cached"}, 54 {ID: "ads_blocked_today", Name: "blocked"}, 55 {ID: "queries_forwarded", Name: "forwarded"}, 56 }, 57 } 58 chartDNSQueriesPerc = module.Chart{ 59 ID: "dns_queries_percentage", 60 Title: "DNS Queries Percentage", 61 Units: "percentage", 62 Fam: "queries", 63 Ctx: "pihole.dns_queries_percentage", 64 Type: module.Stacked, 65 Priority: prioDNSQueriesPerc, 66 Dims: module.Dims{ 67 {ID: "queries_cached_perc", Name: "cached", Div: precision}, 68 {ID: "ads_blocked_today_perc", Name: "blocked", Div: precision}, 69 {ID: "queries_forwarded_perc", Name: "forwarded", Div: precision}, 70 }, 71 } 72 chartUniqueClients = module.Chart{ 73 ID: "unique_clients", 74 Title: "Unique Clients", 75 Units: "clients", 76 Fam: "clients", 77 Ctx: "pihole.unique_clients", 78 Priority: prioUniqueClients, 79 Dims: module.Dims{ 80 {ID: "unique_clients", Name: "unique"}, 81 }, 82 } 83 chartDomainsOnBlocklist = module.Chart{ 84 ID: "domains_on_blocklist", 85 Title: "Domains On Blocklist", 86 Units: "domains", 87 Fam: "blocklist", 88 Ctx: "pihole.domains_on_blocklist", 89 Priority: prioDomainsOnBlocklist, 90 Dims: module.Dims{ 91 {ID: "domains_being_blocked", Name: "blocklist"}, 92 }, 93 } 94 chartBlocklistLastUpdate = module.Chart{ 95 ID: "blocklist_last_update", 96 Title: "Blocklist Last Update", 97 Units: "seconds", 98 Fam: "blocklist", 99 Ctx: "pihole.blocklist_last_update", 100 Priority: prioBlocklistLastUpdate, 101 Dims: module.Dims{ 102 {ID: "blocklist_last_update", Name: "ago"}, 103 }, 104 } 105 chartUnwantedDomainsBlockingStatus = module.Chart{ 106 ID: "unwanted_domains_blocking_status", 107 Title: "Unwanted Domains Blocking Status", 108 Units: "status", 109 Fam: "status", 110 Ctx: "pihole.unwanted_domains_blocking_status", 111 Priority: prioUnwantedDomainsBlockingStatus, 112 Dims: module.Dims{ 113 {ID: "blocking_status_enabled", Name: "enabled"}, 114 {ID: "blocking_status_disabled", Name: "disabled"}, 115 }, 116 } 117 ) 118 119 var ( 120 chartDNSQueriesTypes = module.Chart{ 121 ID: "dns_queries_types", 122 Title: "DNS Queries Per Type", 123 Units: "percentage", 124 Fam: "doQuery types", 125 Ctx: "pihole.dns_queries_types", 126 Type: module.Stacked, 127 Priority: prioDNSQueriesTypes, 128 Dims: module.Dims{ 129 {ID: "A", Div: 100}, 130 {ID: "AAAA", Div: 100}, 131 {ID: "ANY", Div: 100}, 132 {ID: "PTR", Div: 100}, 133 {ID: "SOA", Div: 100}, 134 {ID: "SRV", Div: 100}, 135 {ID: "TXT", Div: 100}, 136 }, 137 } 138 chartDNSQueriesForwardedDestination = module.Chart{ 139 ID: "dns_queries_forwarded_destination", 140 Title: "DNS Queries Per Destination", 141 Units: "percentage", 142 Fam: "queries answered by", 143 Ctx: "pihole.dns_queries_forwarded_destination", 144 Type: module.Stacked, 145 Priority: prioDNSQueriesForwardedDestination, 146 Dims: module.Dims{ 147 {ID: "destination_cached", Name: "cached", Div: 100}, 148 {ID: "destination_blocked", Name: "blocked", Div: 100}, 149 {ID: "destination_other", Name: "other", Div: 100}, 150 }, 151 } 152 ) 153 154 func (p *Pihole) addChartDNSQueriesType() { 155 chart := chartDNSQueriesTypes.Copy() 156 if err := p.Charts().Add(chart); err != nil { 157 p.Warning(err) 158 } 159 } 160 161 func (p *Pihole) addChartDNSQueriesForwardedDestinations() { 162 chart := chartDNSQueriesForwardedDestination.Copy() 163 if err := p.Charts().Add(chart); err != nil { 164 p.Warning(err) 165 } 166 }