summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/lvm/charts.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/go/collectors/go.d.plugin/modules/lvm/charts.go')
-rw-r--r--src/go/collectors/go.d.plugin/modules/lvm/charts.go66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/lvm/charts.go b/src/go/collectors/go.d.plugin/modules/lvm/charts.go
new file mode 100644
index 0000000000..20db6615e3
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/lvm/charts.go
@@ -0,0 +1,66 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package lvm
+
+import (
+ "fmt"
+
+ "github.com/netdata/netdata/go/go.d.plugin/agent/module"
+)
+
+const (
+ prioLVDataPercent = 2920 + iota
+ prioLVMetadataPercent
+)
+
+var lvThinPoolChartsTmpl = module.Charts{
+ lvDataSpaceUtilizationChartTmpl.Copy(),
+ lvMetadataSpaceUtilizationChartTmpl.Copy(),
+}
+
+var (
+ lvDataSpaceUtilizationChartTmpl = module.Chart{
+ ID: "lv_%s_vg_%s_lv_data_space_utilization",
+ Title: "Logical volume space allocated for data",
+ Units: "percentage",
+ Fam: "lv space usage",
+ Ctx: "lvm.lv_data_space_utilization",
+ Type: module.Area,
+ Priority: prioLVDataPercent,
+ Dims: module.Dims{
+ {ID: "lv_%s_vg_%s_data_percent", Name: "utilization", Div: 100},
+ },
+ }
+ lvMetadataSpaceUtilizationChartTmpl = module.Chart{
+ ID: "lv_%s_vg_%s_lv_metadata_space_utilization",
+ Title: "Logical volume space allocated for metadata",
+ Units: "percentage",
+ Fam: "lv space usage",
+ Ctx: "lvm.lv_metadata_space_utilization",
+ Type: module.Area,
+ Priority: prioLVMetadataPercent,
+ Dims: module.Dims{
+ {ID: "lv_%s_vg_%s_metadata_percent", Name: "utilization", Div: 100},
+ },
+ }
+)
+
+func (l *LVM) addLVMThinPoolCharts(lvName, vgName string) {
+ charts := lvThinPoolChartsTmpl.Copy()
+
+ for _, chart := range *charts {
+ chart.ID = fmt.Sprintf(chart.ID, lvName, vgName)
+ chart.Labels = []module.Label{
+ {Key: "lv_name", Value: lvName},
+ {Key: "vg_name", Value: vgName},
+ {Key: "volume_type", Value: "thin_pool"},
+ }
+ for _, dim := range chart.Dims {
+ dim.ID = fmt.Sprintf(dim.ID, lvName, vgName)
+ }
+ }
+
+ if err := l.Charts().Add(*charts...); err != nil {
+ l.Warning(err)
+ }
+}