summaryrefslogtreecommitdiffstats
path: root/src/go/plugin/go.d/modules/adaptecraid/charts.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/go/plugin/go.d/modules/adaptecraid/charts.go')
-rw-r--r--src/go/plugin/go.d/modules/adaptecraid/charts.go129
1 files changed, 129 insertions, 0 deletions
diff --git a/src/go/plugin/go.d/modules/adaptecraid/charts.go b/src/go/plugin/go.d/modules/adaptecraid/charts.go
new file mode 100644
index 000000000..65be20199
--- /dev/null
+++ b/src/go/plugin/go.d/modules/adaptecraid/charts.go
@@ -0,0 +1,129 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package adaptecraid
+
+import (
+ "fmt"
+ "strconv"
+
+ "github.com/netdata/netdata/go/plugins/plugin/go.d/agent/module"
+)
+
+const (
+ prioLDStatus = module.Priority + iota
+
+ prioPDState
+ prioPDSmartWarnings
+ prioPDSmartTemperature
+)
+
+var ldChartsTmpl = module.Charts{
+ ldStatusChartTmpl.Copy(),
+}
+
+var (
+ ldStatusChartTmpl = module.Chart{
+ ID: "logical_device_%s_status",
+ Title: "Logical Device status",
+ Units: "status",
+ Fam: "ld health",
+ Ctx: "adaptecraid.logical_device_status",
+ Type: module.Line,
+ Priority: prioLDStatus,
+ Dims: module.Dims{
+ {ID: "ld_%s_health_state_ok", Name: "ok"},
+ {ID: "ld_%s_health_state_critical", Name: "critical"},
+ },
+ }
+)
+
+var pdChartsTmpl = module.Charts{
+ pdStateChartTmpl.Copy(),
+ pdSmartWarningChartTmpl.Copy(),
+ pdTemperatureChartTmpl.Copy(),
+}
+
+var (
+ pdStateChartTmpl = module.Chart{
+ ID: "physical_device_%s_state",
+ Title: "Physical Device state",
+ Units: "state",
+ Fam: "pd health",
+ Ctx: "adaptecraid.physical_device_state",
+ Type: module.Line,
+ Priority: prioPDState,
+ Dims: module.Dims{
+ {ID: "pd_%s_health_state_ok", Name: "ok"},
+ {ID: "pd_%s_health_state_critical", Name: "critical"},
+ },
+ }
+ pdSmartWarningChartTmpl = module.Chart{
+ ID: "physical_device_%s_smart_warnings",
+ Title: "Physical Device SMART warnings",
+ Units: "warnings",
+ Fam: "pd smart",
+ Ctx: "adaptecraid.physical_device_smart_warnings",
+ Type: module.Line,
+ Priority: prioPDSmartWarnings,
+ Dims: module.Dims{
+ {ID: "pd_%s_smart_warnings", Name: "smart"},
+ },
+ }
+ pdTemperatureChartTmpl = module.Chart{
+ ID: "physical_device_%s_temperature",
+ Title: "Physical Device temperature",
+ Units: "Celsius",
+ Fam: "pd temperature",
+ Ctx: "adaptecraid.physical_device_temperature",
+ Type: module.Line,
+ Priority: prioPDSmartTemperature,
+ Dims: module.Dims{
+ {ID: "pd_%s_temperature", Name: "temperature"},
+ },
+ }
+)
+
+func (a *AdaptecRaid) addLogicalDeviceCharts(ld *logicalDevice) {
+ charts := ldChartsTmpl.Copy()
+
+ for _, chart := range *charts {
+ chart.ID = fmt.Sprintf(chart.ID, ld.number)
+ chart.Labels = []module.Label{
+ {Key: "ld_number", Value: ld.number},
+ {Key: "ld_name", Value: ld.name},
+ {Key: "raid_level", Value: ld.raidLevel},
+ }
+ for _, dim := range chart.Dims {
+ dim.ID = fmt.Sprintf(dim.ID, ld.number)
+ }
+ }
+
+ if err := a.Charts().Add(*charts...); err != nil {
+ a.Warning(err)
+ }
+}
+
+func (a *AdaptecRaid) addPhysicalDeviceCharts(pd *physicalDevice) {
+ charts := pdChartsTmpl.Copy()
+
+ if _, err := strconv.ParseInt(pd.temperature, 10, 64); err != nil {
+ _ = charts.Remove(pdTemperatureChartTmpl.ID)
+ }
+
+ for _, chart := range *charts {
+ chart.ID = fmt.Sprintf(chart.ID, pd.number)
+ chart.Labels = []module.Label{
+ {Key: "pd_number", Value: pd.number},
+ {Key: "location", Value: pd.location},
+ {Key: "vendor", Value: pd.vendor},
+ {Key: "model", Value: pd.model},
+ }
+ for _, dim := range chart.Dims {
+ dim.ID = fmt.Sprintf(dim.ID, pd.number)
+ }
+ }
+
+ if err := a.Charts().Add(*charts...); err != nil {
+ a.Warning(err)
+ }
+}