n9e源码阅读-agent-3-添加自定义系统指标采集

1. monStart采集监控指标,从该函数开始

func main() {
	...

	if config.Config.Enable.Mon {
		monStart()
	}
    ...
}


func monStart() {
	
    ...
    //采集系统指标
	funcs.BuildMappers()
	funcs.Collect()
    ...
}

2. 添加自定义指标

type FuncsAndInterval struct {
	Fs       []func() []*dataobj.MetricValue
	Interval int
}

var Mappers []FuncsAndInterval

func BuildMappers() {
	interval := sys.Config.Interval
	if sys.Config.Enable {
		log.Println("sys collect enable is true.")
		Mappers = []FuncsAndInterval{
			{
				Fs: []func() []*dataobj.MetricValue{
					CollectorMetrics,
					CpuMetrics,
					MemMetrics,
					NetMetrics,
					LoadAvgMetrics,
					IOStatsMetrics,
					NfMetrics,
					FsKernelMetrics,
					ProcsNumMetrics,
					EntityNumMetrics,
					NtpOffsetMetrics,
					SocketStatSummaryMetrics,
					UdpMetrics,
					TcpMetrics,
                    //测试添加系统mount的数量
					MountsMetrics,
				},
				Interval: interval,
			},
			{
				Fs: []func() []*dataobj.MetricValue{
					DeviceMetrics,
				},
				Interval: interval,
			},
		}

		logger.Infof("BuildMappers Mappers %v", Mappers[0].Fs[0]())

		logger.Infof("BuildMappers FsRWEnable %v", sys.Config.FsRWEnable)


		if sys.Config.FsRWEnable {
			Mapper := FuncsAndInterval{
				Fs: []func() []*dataobj.MetricValue{
					FsRWMetrics,
				},
				Interval: interval,
			}
			Mappers = append(Mappers, Mapper)
		}

	} else {
		log.Println("sys collect enable is false.")
		Mappers = []FuncsAndInterval{
			{
				Fs: []func() []*dataobj.MetricValue{
					CollectorMetrics,
				},
				Interval: interval,
			},
		}
	}
}


func MountsMetrics() []*dataobj.MetricValue  {
	mounts, err := file.ToString("/proc/mounts")
	if err != nil{
		return nil
	}
	listMounts := strings.Split(strings.TrimRight(mounts, "\n"), "\n")
	return []*dataobj.MetricValue{
        //指标名称,指标值
		core.GaugeValue("sys.mounts.total", len(listMounts)),
	}
}

3. 结果如下 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值