diff --git a/pkg/cloudmon/collectors/common/multiCloudMonUtils.go b/pkg/cloudmon/collectors/common/multiCloudMonUtils.go index 8b9baae0c6..b5555292ec 100644 --- a/pkg/cloudmon/collectors/common/multiCloudMonUtils.go +++ b/pkg/cloudmon/collectors/common/multiCloudMonUtils.go @@ -636,7 +636,7 @@ func cloudproviderRunfunc(ctx context.Context, factory ICloudReportFactory, prov session *mcclient.ClientSession) { opt := o.Options group, _ := errgroup.WithContext(ctx) - for i, _ := range ResMonTypeList { + for i := range ResMonTypeList { resType := ResMonTypeList[i] group.Go(func() error { log.Errorf("cloudprovider: %s,operator: %s start report().", provider.Name, resType) @@ -658,7 +658,8 @@ func CustomizeRunFunc(ctx context.Context, factory ICloudReportFactory, provider opt := o.Options err := factory.NewCloudReport(provider, session, &opt.ReportOptions, "").Report() if err != nil { - log.Errorf("provider: %s report metric err: %v", provider.Name, err) + // provider maybe nil + log.Errorf("provider: %v report metric err: %v", provider, err) return } log.Errorf("operator: %s report() end.", factory.GetId()) diff --git a/pkg/monitor/dbinit/metric_dbinit.go b/pkg/monitor/dbinit/metric_dbinit.go index c273decfd3..77c042f45a 100644 --- a/pkg/monitor/dbinit/metric_dbinit.go +++ b/pkg/monitor/dbinit/metric_dbinit.go @@ -164,6 +164,12 @@ func init() { newMetricFieldCreateInput("write_bytes", "Bytes write", monitor.METRIC_UNIT_BYTE, 6), }) + // vm_disk + RegistryMetricCreateInput("vm_disk", "Guest disk", monitor.METRIC_RES_TYPE_GUEST, + monitor.METRIC_DATABASE_TELE, 3, []monitor.MetricFieldCreateInput{ + newMetricFieldCreateInput("used_percent", "Used vm disk rate", monitor.METRIC_UNIT_PERCENT, 1), + }) + // vm_mem RegistryMetricCreateInput("vm_mem", "Guest memory", monitor.METRIC_RES_TYPE_GUEST, monitor.METRIC_DATABASE_TELE, 2, []monitor.MetricFieldCreateInput{ diff --git a/pkg/util/influxdb/metrics.go b/pkg/util/influxdb/metrics.go index 4383d03b6d..f8e2a8eb7b 100644 --- a/pkg/util/influxdb/metrics.go +++ b/pkg/util/influxdb/metrics.go @@ -50,10 +50,12 @@ func (m *SMetricData) Line() string { line := strings.Builder{} line.WriteString(m.Name) + keys := map[string]bool{} for i := range m.Tags { - if len(m.Tags[i].Key) > 0 && len(m.Tags[i].Value) > 0 { + if _, ok := keys[m.Tags[i].Key]; !ok && len(m.Tags[i].Key) > 0 && len(m.Tags[i].Value) > 0 { line.WriteByte(',') line.WriteString(m.Tags[i].String()) + keys[m.Tags[i].Key] = true } } line.WriteByte(' ')