@@ -42,6 +42,17 @@ type MetricsClient struct {
4242 errOut * prometheus.GaugeVec
4343 dropIn * prometheus.GaugeVec
4444 dropOut * prometheus.GaugeVec
45+
46+ // diskio stats
47+ ioServiceBytesRead * prometheus.GaugeVec
48+ ioServiceBytesWrite * prometheus.GaugeVec
49+ ioServicedRead * prometheus.GaugeVec
50+ ioServicedWrite * prometheus.GaugeVec
51+ // io/byte per second
52+ ioServiceBytesReadPerSecond * prometheus.GaugeVec
53+ ioServiceBytesWritePerSecond * prometheus.GaugeVec
54+ ioServicedReadPerSecond * prometheus.GaugeVec
55+ ioServicedWritePerSecond * prometheus.GaugeVec
4556}
4657
4758var clients sync.Map
@@ -67,7 +78,6 @@ func NewMetricsClient(statsd, hostname string, container *Container) *MetricsCli
6778 "orchestrator" : cluster .ERUMark ,
6879 "labels" : strings .Join (clables , "," ),
6980 }
70-
7181 cpuHostUsage := prometheus .NewGauge (prometheus.GaugeOpts {
7282 Name : "cpu_host_usage" ,
7383 Help : "cpu usage in host view." ,
@@ -163,7 +173,46 @@ func NewMetricsClient(statsd, hostname string, container *Container) *MetricsCli
163173 Help : "drop out." ,
164174 ConstLabels : labels ,
165175 }, []string {"nic" })
166-
176+ ioServiceBytesRead := prometheus .NewGaugeVec (prometheus.GaugeOpts {
177+ Name : "io_service_bytes_read" ,
178+ Help : "number of bytes read to the disk by the group." ,
179+ ConstLabels : labels ,
180+ }, []string {"dev" })
181+ ioServiceBytesWrite := prometheus .NewGaugeVec (prometheus.GaugeOpts {
182+ Name : "io_service_bytes_write" ,
183+ Help : "number of bytes write to the disk by the group." ,
184+ ConstLabels : labels ,
185+ }, []string {"dev" })
186+ ioServicedRead := prometheus .NewGaugeVec (prometheus.GaugeOpts {
187+ Name : "io_serviced_read" ,
188+ Help : "number of read IOs to the disk by the group." ,
189+ ConstLabels : labels ,
190+ }, []string {"dev" })
191+ ioServicedWrite := prometheus .NewGaugeVec (prometheus.GaugeOpts {
192+ Name : "io_serviced_write" ,
193+ Help : "number of write IOs to the disk by the group." ,
194+ ConstLabels : labels ,
195+ }, []string {"dev" })
196+ ioServiceBytesReadPerSecond := prometheus .NewGaugeVec (prometheus.GaugeOpts {
197+ Name : "io_service_bytes_read_per_second" ,
198+ Help : "number of bytes read per second to the disk by the group." ,
199+ ConstLabels : labels ,
200+ }, []string {"dev" })
201+ ioServiceBytesWritePerSecond := prometheus .NewGaugeVec (prometheus.GaugeOpts {
202+ Name : "io_service_bytes_write_per_second" ,
203+ Help : "number of bytes write per second to the disk by the group." ,
204+ ConstLabels : labels ,
205+ }, []string {"dev" })
206+ ioServicedReadPerSecond := prometheus .NewGaugeVec (prometheus.GaugeOpts {
207+ Name : "io_serviced_read_per_second" ,
208+ Help : "number of read IOs per second to the disk by the group." ,
209+ ConstLabels : labels ,
210+ }, []string {"dev" })
211+ ioServicedWritePerSecond := prometheus .NewGaugeVec (prometheus.GaugeOpts {
212+ Name : "io_serviced_write_per_second" ,
213+ Help : "number of write IOs per second to the disk by the group." ,
214+ ConstLabels : labels ,
215+ }, []string {"dev" })
167216 // TODO 这里已经没有了版本了
168217 tag := fmt .Sprintf ("%s.%s" , hostname , coreutils .ShortID (container .ID ))
169218 endpoint := fmt .Sprintf ("%s.%s" , container .Name , container .EntryPoint )
@@ -174,7 +223,7 @@ func NewMetricsClient(statsd, hostname string, container *Container) *MetricsCli
174223 cpuContainerSysUsage , cpuContainerUsage , cpuContainerUserUsage ,
175224 memMaxUsage , memRss , memUsage , memPercent , memRSSPercent ,
176225 bytesRecv , bytesSent , packetsRecv , packetsSent ,
177- errIn , errOut , dropIn , dropOut ,
226+ errIn , errOut , dropIn , dropOut , ioServiceBytesRead , ioServiceBytesWrite , ioServicedRead , ioServicedWrite , ioServiceBytesReadPerSecond , ioServiceBytesWritePerSecond , ioServicedReadPerSecond , ioServicedWritePerSecond ,
178227 )
179228
180229 metricsClient := & MetricsClient {
@@ -204,6 +253,16 @@ func NewMetricsClient(statsd, hostname string, container *Container) *MetricsCli
204253 errOut : errOut ,
205254 dropIn : dropIn ,
206255 dropOut : dropOut ,
256+
257+ ioServiceBytesRead : ioServiceBytesRead ,
258+ ioServiceBytesWrite : ioServiceBytesWrite ,
259+ ioServicedRead : ioServicedRead ,
260+ ioServicedWrite : ioServicedWrite ,
261+
262+ ioServiceBytesReadPerSecond : ioServiceBytesReadPerSecond ,
263+ ioServiceBytesWritePerSecond : ioServiceBytesWritePerSecond ,
264+ ioServicedReadPerSecond : ioServicedReadPerSecond ,
265+ ioServicedWritePerSecond : ioServicedWritePerSecond ,
207266 }
208267 clients .Store (container .ID , metricsClient )
209268 return metricsClient
@@ -233,6 +292,16 @@ func (m *MetricsClient) Unregister() {
233292 prometheus .Unregister (m .errOut )
234293 prometheus .Unregister (m .dropIn )
235294 prometheus .Unregister (m .dropOut )
295+
296+ prometheus .Unregister (m .ioServiceBytesRead )
297+ prometheus .Unregister (m .ioServiceBytesWrite )
298+ prometheus .Unregister (m .ioServicedRead )
299+ prometheus .Unregister (m .ioServicedWrite )
300+
301+ prometheus .Unregister (m .ioServiceBytesReadPerSecond )
302+ prometheus .Unregister (m .ioServiceBytesWritePerSecond )
303+ prometheus .Unregister (m .ioServicedReadPerSecond )
304+ prometheus .Unregister (m .ioServicedWritePerSecond )
236305}
237306
238307// CPUHostUsage set cpu usage in host view
@@ -349,6 +418,54 @@ func (m *MetricsClient) DropOut(nic string, i float64) {
349418 m .dropOut .WithLabelValues (nic ).Set (i )
350419}
351420
421+ // IOServiceBytesRead .
422+ func (m * MetricsClient ) IOServiceBytesRead (dev string , i float64 ) {
423+ m .data [dev + ".io_service_bytes_read" ] = i
424+ m .ioServiceBytesRead .WithLabelValues (dev ).Set (i )
425+ }
426+
427+ // IOServiceBytesWrite .
428+ func (m * MetricsClient ) IOServiceBytesWrite (dev string , i float64 ) {
429+ m .data [dev + ".io_service_bytes_write" ] = i
430+ m .ioServiceBytesWrite .WithLabelValues (dev ).Set (i )
431+ }
432+
433+ // IOServicedRead .
434+ func (m * MetricsClient ) IOServicedRead (dev string , i float64 ) {
435+ m .data [dev + ".io_serviced_read" ] = i
436+ m .ioServicedRead .WithLabelValues (dev ).Set (i )
437+ }
438+
439+ // IOServicedWrite .
440+ func (m * MetricsClient ) IOServicedWrite (dev string , i float64 ) {
441+ m .data [dev + ".io_serviced_write" ] = i
442+ m .ioServicedWrite .WithLabelValues (dev ).Set (i )
443+ }
444+
445+ // IOServiceBytesReadPerSecond .
446+ func (m * MetricsClient ) IOServiceBytesReadPerSecond (dev string , i float64 ) {
447+ m .data [dev + ".io_service_bytes_read_per_second" ] = i
448+ m .ioServiceBytesReadPerSecond .WithLabelValues (dev ).Set (i )
449+ }
450+
451+ // IOServiceBytesWritePerSecond .
452+ func (m * MetricsClient ) IOServiceBytesWritePerSecond (dev string , i float64 ) {
453+ m .data [dev + ".io_service_bytes_write_per_second" ] = i
454+ m .ioServiceBytesWritePerSecond .WithLabelValues (dev ).Set (i )
455+ }
456+
457+ // IOServicedReadPerSecond .
458+ func (m * MetricsClient ) IOServicedReadPerSecond (dev string , i float64 ) {
459+ m .data [dev + ".io_serviced_read_per_second" ] = i
460+ m .ioServicedReadPerSecond .WithLabelValues (dev ).Set (i )
461+ }
462+
463+ // IOServicedWritePerSecond .
464+ func (m * MetricsClient ) IOServicedWritePerSecond (dev string , i float64 ) {
465+ m .data [dev + ".io_serviced_write_per_second" ] = i
466+ m .ioServicedWritePerSecond .WithLabelValues (dev ).Set (i )
467+ }
468+
352469// Lazy connecting
353470func (m * MetricsClient ) checkConn () error {
354471 if m .statsdClient != nil {
0 commit comments