master
go 70 lines 1.94 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package hddtemp
4
5 import (
6 "fmt"
7 "strings"
8
9 "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi"
10 )
11
12 const (
13 prioDiskTemperature = collectorapi.Priority + iota
14 prioDiskTemperatureSensorStatus
15 )
16
17 var (
18 diskTemperatureChartsTmpl = collectorapi.Chart{
19 ID: "disk_%s_temperature",
20 Title: "Disk temperature",
21 Units: "Celsius",
22 Fam: "temperature",
23 Ctx: "hddtemp.disk_temperature",
24 Type: collectorapi.Line,
25 Priority: prioDiskTemperature,
26 Dims: collectorapi.Dims{
27 {ID: "disk_%s_temperature", Name: "temperature"},
28 },
29 }
30 diskTemperatureSensorChartsTmpl = collectorapi.Chart{
31 ID: "disk_%s_temperature_sensor_status",
32 Title: "Disk temperature sensor status",
33 Units: "status",
34 Fam: "sensor",
35 Ctx: "hddtemp.disk_temperature_sensor_status",
36 Type: collectorapi.Line,
37 Priority: prioDiskTemperatureSensorStatus,
38 Dims: collectorapi.Dims{
39 {ID: "disk_%s_temp_sensor_status_ok", Name: "ok"},
40 {ID: "disk_%s_temp_sensor_status_err", Name: "err"},
41 {ID: "disk_%s_temp_sensor_status_na", Name: "na"},
42 {ID: "disk_%s_temp_sensor_status_unk", Name: "unk"},
43 {ID: "disk_%s_temp_sensor_status_nos", Name: "nos"},
44 {ID: "disk_%s_temp_sensor_status_slp", Name: "slp"},
45 },
46 }
47 )
48
49 func (c *Collector) addDiskTempSensorStatusChart(id string, disk diskStats) {
50 c.addDiskChart(id, disk, diskTemperatureSensorChartsTmpl.Copy())
51 }
52
53 func (c *Collector) addDiskTempChart(id string, disk diskStats) {
54 c.addDiskChart(id, disk, diskTemperatureChartsTmpl.Copy())
55 }
56
57 func (c *Collector) addDiskChart(id string, disk diskStats, chart *collectorapi.Chart) {
58 chart.ID = fmt.Sprintf(chart.ID, strings.ToLower(id))
59 chart.Labels = []collectorapi.Label{
60 {Key: "disk_id", Value: id},
61 {Key: "model", Value: disk.model},
62 }
63 for _, dim := range chart.Dims {
64 dim.ID = fmt.Sprintf(dim.ID, id)
65 }
66
67 if err := c.Charts().Add(chart); err != nil {
68 c.Warning(err)
69 }
70 }