@@ -14,6 +14,7 @@ import (
1414 "hostlink/internal/crypto"
1515 "hostlink/internal/networkmetrics"
1616 "hostlink/internal/pgmetrics"
17+ "hostlink/internal/storagemetrics"
1718 "hostlink/internal/sysmetrics"
1819)
1920
@@ -26,13 +27,14 @@ type Pusher interface {
2627}
2728
2829type metricspusher struct {
29- apiserver apiserver.MetricsOperations
30- agentstate agentstate.Operations
31- metricscollector pgmetrics.Collector
32- syscollector sysmetrics.Collector
33- netcollector networkmetrics.Collector
34- crypto crypto.Service
35- privateKeyPath string
30+ apiserver apiserver.MetricsOperations
31+ agentstate agentstate.Operations
32+ metricscollector pgmetrics.Collector
33+ syscollector sysmetrics.Collector
34+ netcollector networkmetrics.Collector
35+ storagecollector storagemetrics.Collector
36+ crypto crypto.Service
37+ privateKeyPath string
3638}
3739
3840func NewWithConf () (* metricspusher , error ) {
@@ -51,6 +53,7 @@ func NewWithConf() (*metricspusher, error) {
5153 metricscollector : pgmetrics .New (),
5254 syscollector : sysmetrics .New (),
5355 netcollector : networkmetrics .New (),
56+ storagecollector : storagemetrics .New (),
5457 crypto : crypto .NewService (),
5558 privateKeyPath : appconf .AgentPrivateKeyPath (),
5659 }, nil
@@ -67,6 +70,7 @@ func NewWithDependencies(
6770 pgcollector pgmetrics.Collector ,
6871 syscollector sysmetrics.Collector ,
6972 netcollector networkmetrics.Collector ,
73+ storagecollector storagemetrics.Collector ,
7074 crypto crypto.Service ,
7175 privateKeyPath string ,
7276) * metricspusher {
@@ -76,6 +80,7 @@ func NewWithDependencies(
7680 metricscollector : pgcollector ,
7781 syscollector : syscollector ,
7882 netcollector : netcollector ,
83+ storagecollector : storagecollector ,
7984 crypto : crypto ,
8085 privateKeyPath : privateKeyPath ,
8186 }
@@ -157,6 +162,24 @@ func (mp *metricspusher) Push(cred credential.Credential) error {
157162 })
158163 }
159164
165+ storageMetrics , err := mp .storagecollector .Collect (ctx )
166+ if err != nil {
167+ collectionErrors = append (collectionErrors , fmt .Errorf ("storage metrics: %w" , err ))
168+ } else {
169+ for _ , sm := range storageMetrics {
170+ metricSets = append (metricSets , domainmetrics.MetricSet {
171+ Type : domainmetrics .MetricTypeStorage ,
172+ Attributes : map [string ]any {
173+ "mount_point" : sm .Attributes .MountPoint ,
174+ "device" : sm .Attributes .Device ,
175+ "filesystem_type" : sm .Attributes .FilesystemType ,
176+ "is_read_only" : sm .Attributes .IsReadOnly ,
177+ },
178+ Metrics : sm .Metrics ,
179+ })
180+ }
181+ }
182+
160183 if len (metricSets ) == 0 {
161184 return fmt .Errorf ("all metrics collection failed: %v" , collectionErrors )
162185 }
0 commit comments