@@ -7,19 +7,52 @@ import (
77)
88
99var (
10- phaseKey , _ = tag .NewKey ("phase" )
11- pre = "sealsupra_"
10+ phaseKey , _ = tag .NewKey ("phase" )
11+ nvmeDeviceKey , _ = tag .NewKey ("nvme_device" )
12+ pre = "sealsupra_"
1213)
1314
1415// SupraSealMeasures groups all SupraSeal metrics.
1516var SupraSealMeasures = struct {
1617 PhaseLockCount * stats.Int64Measure
1718 PhaseWaitingCount * stats.Int64Measure
1819 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
1936}{
2037 PhaseLockCount : stats .Int64 (pre + "phase_lock_count" , "Number of active locks in each phase" , stats .UnitDimensionless ),
2138 PhaseWaitingCount : stats .Int64 (pre + "phase_waiting_count" , "Number of goroutines waiting for a phase lock" , stats .UnitDimensionless ),
2239 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 ),
2356}
2457
2558// init registers the views for SupraSeal metrics.
@@ -40,6 +73,82 @@ func init() {
4073 Aggregation : view .LastValue (),
4174 TagKeys : []tag.Key {phaseKey },
4275 },
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+ },
43152 )
44153 if err != nil {
45154 panic (err )
0 commit comments