Skip to content

Commit d69afb8

Browse files
authored
Merge pull request #1051 from yadzhang/dev/zram_metrics
feat(metrics): add zram metrics collection and processing
2 parents d8d525e + dbc024c commit d69afb8

File tree

6 files changed

+46
-12
lines changed

6 files changed

+46
-12
lines changed

pkg/consts/metric.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,13 @@ const (
220220
MetricCPUCodeName = "cpu.code.name"
221221
)
222222

223+
// System zram metrics
224+
const (
225+
MetricZramUsedTotal = "zram.used.total.system"
226+
MetricZramComprDataSize = "zram.compr.usage.system"
227+
MetricZramOriginDataSize = "zram.origin.usage.system"
228+
)
229+
223230
// container cpu metrics
224231
const (
225232
MetricCPULimitContainer = "cpu.limit.container"

pkg/metaserver/agent/metric/provisioner/malachite/client/client_system.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,13 @@ func (c *MalachiteClient) GetSystemMemoryStats() (*types.SystemMemoryData, error
8585
return &rsp.Data, nil
8686
}
8787

88-
func (c *MalachiteClient) GetSystemIOStats() (*types.SystemDiskIoData, error) {
88+
func (c *MalachiteClient) GetSystemIOStats() (*types.SystemIoData, error) {
8989
statsData, err := c.getSystemStats(IO)
9090
if err != nil {
9191
return nil, err
9292
}
9393

94-
rsp := &types.MalachiteSystemDiskIoResponse{}
94+
rsp := &types.MalachiteSystemIoResponse{}
9595
if err := json.Unmarshal(statsData, rsp); err != nil {
9696
return nil, fmt.Errorf("failed to unmarshal system io stats raw data, err %s", err)
9797
}

pkg/metaserver/agent/metric/provisioner/malachite/client/client_system_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ var (
6060
},
6161
}
6262

63-
fakeSystemIO = &types.MalachiteSystemDiskIoResponse{
63+
fakeSystemIO = &types.MalachiteSystemIoResponse{
6464
Status: 0,
65-
Data: types.SystemDiskIoData{
65+
Data: types.SystemIoData{
6666
DiskIo: []types.DiskIo{
6767
{},
6868
},

pkg/metaserver/agent/metric/provisioner/malachite/provisioner.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ func (m *MalachiteMetricsProvisioner) processSystemMemoryData(systemMemoryData *
382382
utilmetric.MetricData{Value: float64(mem.MemSockUdpLimit), Time: &updateTime})
383383
}
384384

385-
func (m *MalachiteMetricsProvisioner) processSystemIOData(systemIOData *malachitetypes.SystemDiskIoData) {
385+
func (m *MalachiteMetricsProvisioner) processSystemIOData(systemIOData *malachitetypes.SystemIoData) {
386386
if systemIOData == nil {
387387
return
388388
}
@@ -443,6 +443,17 @@ func (m *MalachiteMetricsProvisioner) processSystemIOData(systemIOData *malachit
443443
m.metricStore.SetDeviceMetric(device.DeviceName, consts.MetricIODiskWBTValue,
444444
utilmetric.MetricData{Value: float64(device.WBTValue), Time: &updateTime})
445445
}
446+
447+
var zramOrigin, zramUsedTotal, zramCompr uint64
448+
for _, stat := range systemIOData.ZramStat {
449+
zramOrigin += stat.OrigDataSize
450+
zramUsedTotal += stat.MemUsedTotal
451+
zramCompr += stat.ComprDataSize
452+
}
453+
454+
m.metricStore.SetNodeMetric(consts.MetricZramOriginDataSize, utilmetric.MetricData{Value: float64(zramOrigin), Time: &updateTime})
455+
m.metricStore.SetNodeMetric(consts.MetricZramUsedTotal, utilmetric.MetricData{Value: float64(zramUsedTotal), Time: &updateTime})
456+
m.metricStore.SetNodeMetric(consts.MetricZramComprDataSize, utilmetric.MetricData{Value: float64(zramCompr), Time: &updateTime})
446457
}
447458

448459
func (m *MalachiteMetricsProvisioner) processSystemNetData(systemNetData *malachitetypes.SystemNetworkData) {

pkg/metaserver/agent/metric/provisioner/malachite/provisioner_test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func Test_noneExistMetricsProvisioner(t *testing.T) {
6969
{},
7070
},
7171
}
72-
fakeSystemIO := &malachitetypes.SystemDiskIoData{
72+
fakeSystemIO := &malachitetypes.SystemIoData{
7373
DiskIo: []malachitetypes.DiskIo{
7474
{
7575
PrimaryDeviceID: 8,
@@ -100,6 +100,14 @@ func Test_noneExistMetricsProvisioner(t *testing.T) {
100100
WBTValue: 75234,
101101
},
102102
},
103+
ZramStat: []malachitetypes.ZramStat{
104+
{
105+
Name: "zram0",
106+
ComprDataSize: 1073741824,
107+
OrigDataSize: 2147483648,
108+
MemUsedTotal: 1077936128,
109+
},
110+
},
103111
}
104112
fakeSystemNet := &malachitetypes.SystemNetworkData{
105113
TCP: malachitetypes.TCP{},

pkg/metaserver/agent/metric/provisioner/malachite/types/system.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ limitations under the License.
1616

1717
package types
1818

19-
type MalachiteSystemDiskIoResponse struct {
20-
Status int `json:"status"`
21-
Data SystemDiskIoData `json:"data"`
19+
type MalachiteSystemIoResponse struct {
20+
Status int `json:"status"`
21+
Data SystemIoData `json:"data"`
2222
}
2323

2424
type DiskIo struct {
@@ -38,9 +38,17 @@ type DiskIo struct {
3838
IoWriteLat80 uint64 `json:"io_w_lat_80"`
3939
}
4040

41-
type SystemDiskIoData struct {
42-
DiskIo []DiskIo `json:"disk_io"`
43-
UpdateTime int64 `json:"update_time"`
41+
type SystemIoData struct {
42+
DiskIo []DiskIo `json:"disk_io"`
43+
ZramStat []ZramStat `json:"zram_stat"`
44+
UpdateTime int64 `json:"update_time"`
45+
}
46+
47+
type ZramStat struct {
48+
Name string `json:"name"`
49+
OrigDataSize uint64 `json:"orig_data_size"`
50+
ComprDataSize uint64 `json:"compr_data_size"`
51+
MemUsedTotal uint64 `json:"mem_used_total"`
4452
}
4553

4654
type MalachiteSystemNetworkResponse struct {

0 commit comments

Comments
 (0)