@@ -7,19 +7,52 @@ import (
7
7
)
8
8
9
9
var (
10
- phaseKey , _ = tag .NewKey ("phase" )
11
- pre = "sealsupra_"
10
+ phaseKey , _ = tag .NewKey ("phase" )
11
+ nvmeDeviceKey , _ = tag .NewKey ("nvme_device" )
12
+ pre = "sealsupra_"
12
13
)
13
14
14
15
// SupraSealMeasures groups all SupraSeal metrics.
15
16
var SupraSealMeasures = struct {
16
17
PhaseLockCount * stats.Int64Measure
17
18
PhaseWaitingCount * stats.Int64Measure
18
19
PhaseAvgDuration * stats.Float64Measure
20
+
21
+ // NVMe Health measures
22
+ NVMeTemperature * stats.Float64Measure
23
+ NVMeAvailableSpare * stats.Int64Measure
24
+ NVMePercentageUsed * stats.Int64Measure
25
+ NVMePowerCycles * stats.Int64Measure
26
+ NVMePowerOnHours * stats.Float64Measure
27
+ NVMeUnsafeShutdowns * stats.Int64Measure
28
+ NVMeMediaErrors * stats.Int64Measure
29
+ NVMeErrorLogEntries * stats.Int64Measure
30
+ NVMeCriticalWarning * stats.Int64Measure
31
+
32
+ NVMeBytesRead * stats.Int64Measure
33
+ NVMeBytesWritten * stats.Int64Measure
34
+ NVMeReadIO * stats.Int64Measure
35
+ NVMeWriteIO * stats.Int64Measure
19
36
}{
20
37
PhaseLockCount : stats .Int64 (pre + "phase_lock_count" , "Number of active locks in each phase" , stats .UnitDimensionless ),
21
38
PhaseWaitingCount : stats .Int64 (pre + "phase_waiting_count" , "Number of goroutines waiting for a phase lock" , stats .UnitDimensionless ),
22
39
PhaseAvgDuration : stats .Float64 (pre + "phase_avg_duration" , "Average duration of each phase in seconds" , stats .UnitSeconds ),
40
+
41
+ // NVMe Health measures
42
+ NVMeTemperature : stats .Float64 (pre + "nvme_temperature_celsius" , "NVMe Temperature in Celsius" , stats .UnitDimensionless ),
43
+ NVMeAvailableSpare : stats .Int64 (pre + "nvme_available_spare" , "NVMe Available Spare" , stats .UnitDimensionless ),
44
+ NVMePercentageUsed : stats .Int64 (pre + "nvme_percentage_used" , "NVMe Percentage Used" , stats .UnitDimensionless ),
45
+ NVMePowerCycles : stats .Int64 (pre + "nvme_power_cycles" , "NVMe Power Cycles" , stats .UnitDimensionless ),
46
+ NVMePowerOnHours : stats .Float64 (pre + "nvme_power_on_hours" , "NVMe Power On Hours" , stats .UnitDimensionless ),
47
+ NVMeUnsafeShutdowns : stats .Int64 (pre + "nvme_unsafe_shutdowns" , "NVMe Unsafe Shutdowns" , stats .UnitDimensionless ),
48
+ NVMeMediaErrors : stats .Int64 (pre + "nvme_media_errors" , "NVMe Media Errors" , stats .UnitDimensionless ),
49
+ NVMeErrorLogEntries : stats .Int64 (pre + "nvme_error_log_entries" , "NVMe Error Log Entries" , stats .UnitDimensionless ),
50
+ NVMeCriticalWarning : stats .Int64 (pre + "nvme_critical_warning" , "NVMe Critical Warning Flags" , stats .UnitDimensionless ),
51
+
52
+ NVMeBytesRead : stats .Int64 (pre + "nvme_bytes_read" , "NVMe Bytes Read" , stats .UnitBytes ),
53
+ NVMeBytesWritten : stats .Int64 (pre + "nvme_bytes_written" , "NVMe Bytes Written" , stats .UnitBytes ),
54
+ NVMeReadIO : stats .Int64 (pre + "nvme_read_io" , "NVMe Read IOs" , stats .UnitDimensionless ),
55
+ NVMeWriteIO : stats .Int64 (pre + "nvme_write_io" , "NVMe Write IOs" , stats .UnitDimensionless ),
23
56
}
24
57
25
58
// init registers the views for SupraSeal metrics.
@@ -40,6 +73,82 @@ func init() {
40
73
Aggregation : view .LastValue (),
41
74
TagKeys : []tag.Key {phaseKey },
42
75
},
76
+ // NVMe Health views
77
+ & view.View {
78
+ Measure : SupraSealMeasures .NVMeTemperature ,
79
+ Aggregation : view .LastValue (),
80
+ TagKeys : []tag.Key {nvmeDeviceKey },
81
+ },
82
+ & view.View {
83
+ Measure : SupraSealMeasures .NVMeAvailableSpare ,
84
+ Aggregation : view .LastValue (),
85
+ TagKeys : []tag.Key {nvmeDeviceKey },
86
+ },
87
+ & view.View {
88
+ Measure : SupraSealMeasures .NVMePercentageUsed ,
89
+ Aggregation : view .LastValue (),
90
+ TagKeys : []tag.Key {nvmeDeviceKey },
91
+ },
92
+ & view.View {
93
+ Measure : SupraSealMeasures .NVMePowerCycles ,
94
+ Aggregation : view .LastValue (),
95
+ TagKeys : []tag.Key {nvmeDeviceKey },
96
+ },
97
+ & view.View {
98
+ Measure : SupraSealMeasures .NVMePowerOnHours ,
99
+ Aggregation : view .LastValue (),
100
+ TagKeys : []tag.Key {nvmeDeviceKey },
101
+ },
102
+ & view.View {
103
+ Measure : SupraSealMeasures .NVMeUnsafeShutdowns ,
104
+ Aggregation : view .LastValue (),
105
+ TagKeys : []tag.Key {nvmeDeviceKey },
106
+ },
107
+ & view.View {
108
+ Measure : SupraSealMeasures .NVMeMediaErrors ,
109
+ Aggregation : view .LastValue (),
110
+ TagKeys : []tag.Key {nvmeDeviceKey },
111
+ },
112
+ & view.View {
113
+ Measure : SupraSealMeasures .NVMeErrorLogEntries ,
114
+ Aggregation : view .LastValue (),
115
+ TagKeys : []tag.Key {nvmeDeviceKey },
116
+ },
117
+ & view.View {
118
+ Measure : SupraSealMeasures .NVMeCriticalWarning ,
119
+ Aggregation : view .LastValue (),
120
+ TagKeys : []tag.Key {nvmeDeviceKey },
121
+ },
122
+ & view.View {
123
+ Measure : SupraSealMeasures .NVMeBytesRead ,
124
+ Aggregation : view .Sum (),
125
+ TagKeys : []tag.Key {nvmeDeviceKey },
126
+ },
127
+ & view.View {
128
+ Measure : SupraSealMeasures .NVMeBytesWritten ,
129
+ Aggregation : view .Sum (),
130
+ TagKeys : []tag.Key {nvmeDeviceKey },
131
+ },
132
+ & view.View {
133
+ Measure : SupraSealMeasures .NVMeReadIO ,
134
+ Aggregation : view .Sum (),
135
+ TagKeys : []tag.Key {nvmeDeviceKey },
136
+ },
137
+ & view.View {
138
+ Measure : SupraSealMeasures .NVMeWriteIO ,
139
+ Aggregation : view .Sum (),
140
+ TagKeys : []tag.Key {nvmeDeviceKey },
141
+ },
142
+ & view.View {
143
+ Measure : SupraSealMeasures .NVMeReadIO ,
144
+ Aggregation : view .Sum (),
145
+ TagKeys : []tag.Key {nvmeDeviceKey },
146
+ },
147
+ & view.View {
148
+ Measure : SupraSealMeasures .NVMeWriteIO ,
149
+ Aggregation : view .Sum (),
150
+ TagKeys : []tag.Key {nvmeDeviceKey },
151
+ },
43
152
)
44
153
if err != nil {
45
154
panic (err )
0 commit comments