本节重点介绍 :

  • 无用指标计算方式变更
  • 真实案例分析
  • 华为云CCE服务,container_fs_usage_bytes 容器的都为0
  • drop之后利用率提升25%

无用指标计算方式变更

  • 之前的计算方法为 所有采集到的-(告警的+看图的)
scrape_metrics_set - (alert_metrics_set + graph_metrics_set)
  • 通过采集端tsdb-status获取高基数后的计算方式为:在上面的结果中查找高基数的指标
  • 举例,第一步的结果为,a-e5个指标
metrics_a
metrics_b
metrics_c
metrics_d
metrics_e
  • 高级数从高到低的结果为
metrics_a  100w
metrics_b  90w
metrics_f  80w
  • 那么应该去掉的为 metrics_a和metrics_b,metrics_f在使用

去掉的方法

  • 有些指标数据量很大,可以达到百万的量级,这种指标对监控系统是很大的压力
  • 有些指标我们不关心
  • 所以我们就可以使用drop将这些指标去掉
- source_labels: [__name__]
    separator: ;
    # 标签key前缀匹配到的drop
    regex: '(metrics_a|metrics_a).*'
    replacement: $1
    action: drop

真实案例分析

25.3 使用relabel中的drop将对应的无用指标丢弃_监控系统

华为云CCE服务,container_fs_usage_bytes 容器的都为0

  • 是因为华为存储为devicemapper
  • id=“/” 代表宿主机而不是容器
    container_fs_usage_bytes{cluster=~“ugc-cce-prod”,id!=“/”,container_name!=“POD”}
  • cadvisor 在统计container_fs_usage_bytes指标时不支持 devicemapper ,所以相关指标的结果都为0
  • issue地址
  • 代码分析 位置 E:\go_path\src\github.com\google\cadvisor\container\docker\factory.go
if storageDriver(dockerInfo.Driver) == devicemapperStorageDriver {
		thinPoolWatcher, err = startThinPoolWatcher(dockerInfo)
		if err != nil {
			klog.Errorf("devicemapper filesystem stats will not be reported: %v", err)
		}

		// Safe to ignore error - driver status should always be populated.
		status, _ := StatusFromDockerInfo(*dockerInfo)
		thinPoolName = status.DriverStatus[dockerutil.DriverStatusPoolName]
	}

本节重点总结 :

  • 无用指标计算方式变更
  • drop依据:脚本分析指标利用率(报警和grafana看图),同时采集端量比较大
  • 真实案例分析
  • 华为云CCE服务,container_fs_usage_bytes 容器的都为0
  • drop之后利用率提升25%