summaryrefslogtreecommitdiffstats
path: root/src/go/plugin/go.d/modules/fail2ban/charts.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/go/plugin/go.d/modules/fail2ban/charts.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/go/plugin/go.d/modules/fail2ban/charts.go b/src/go/plugin/go.d/modules/fail2ban/charts.go
new file mode 100644
index 000000000..3015c7388
--- /dev/null
+++ b/src/go/plugin/go.d/modules/fail2ban/charts.go
@@ -0,0 +1,75 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package fail2ban
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/netdata/netdata/go/plugins/plugin/go.d/agent/module"
+)
+
+const (
+ prioJailBannedIPs = module.Priority + iota
+ prioJailActiveFailures
+)
+
+var jailChartsTmpl = module.Charts{
+ jailCurrentBannedIPs.Copy(),
+ jailActiveFailures.Copy(),
+}
+
+var (
+ jailCurrentBannedIPs = module.Chart{
+ ID: "jail_%s_banned_ips",
+ Title: "Fail2Ban Jail banned IPs",
+ Units: "addresses",
+ Fam: "bans",
+ Ctx: "fail2ban.jail_banned_ips",
+ Type: module.Line,
+ Priority: prioJailBannedIPs,
+ Dims: module.Dims{
+ {ID: "jail_%s_currently_banned", Name: "banned"},
+ },
+ }
+ jailActiveFailures = module.Chart{
+ ID: "jail_%s_active_failures",
+ Title: "Fail2Ban Jail active failures",
+ Units: "failures",
+ Fam: "failures",
+ Ctx: "fail2ban.jail_active_failures",
+ Type: module.Line,
+ Priority: prioJailActiveFailures,
+ Dims: module.Dims{
+ {ID: "jail_%s_currently_failed", Name: "active_failures"},
+ },
+ }
+)
+
+func (f *Fail2Ban) addJailCharts(jail string) {
+ charts := jailChartsTmpl.Copy()
+
+ for _, chart := range *charts {
+ chart.ID = fmt.Sprintf(chart.ID, jail)
+ chart.Labels = []module.Label{
+ {Key: "jail", Value: jail},
+ }
+ for _, dim := range chart.Dims {
+ dim.ID = fmt.Sprintf(dim.ID, jail)
+ }
+ }
+
+ if err := f.Charts().Add(*charts...); err != nil {
+ f.Warning(err)
+ }
+}
+
+func (f *Fail2Ban) removeJailCharts(jail string) {
+ px := fmt.Sprintf("jail_%s_", jail)
+ for _, chart := range *f.Charts() {
+ if strings.HasPrefix(chart.ID, px) {
+ chart.MarkRemove()
+ chart.MarkNotCreated()
+ }
+ }
+}