为node_exporter添加新的自定义collector

相对于使用python+flask等方式生成metric更加鲁棒,也占用了更少的资源,同时让部署更加方便和集中,不失为一种规模管理集群监控的好方法

首先安装golang,保证版本为最新即可

wget https://studygolang.com/dl/golang/go1.14.7.linux-amd64.tar.gz

关于go env设置不再赘述

安装git工具,保证git工具为最新

yum install git -y

从github下载node_exporter得项目

go get github.com/prometheus/node_exporter
cd ${GOPATH-$HOME/go}/src/github.com/prometheus/node_exporter
make
./node_exporter <flags>

make是一个基本得操作,如果你不想make,可以使用go build命令

然后向项目中添加一个自定义的metric collector
在这里插入图片描述
比如添加一个online.go,用来收集游戏的在线数据


package collector

import (
	"github.com/go-kit/kit/log"
	"github.com/prometheus/client_golang/prometheus"
)

//定义数据结构
type OnlineCollector struct {
	online typedDesc
	logger   log.Logger
}

//注册collector
func init() {
	registerCollector("online", defaultEnabled, newOnlineCollector)
}

//新建collector
func newOnlineCollector(logger log.Logger) (Collector, error) {
	return &OnlineCollector{
		online: typedDesc{
			prometheus.NewDesc(
				prometheus.BuildFQName(namespace, "", "online data"),
				"game online data.",
				nil, nil,
			), prometheus.GaugeValue},
		logger: logger,
	}, nil
}

//下面的函数是需要自定义的收集游戏数据metric的函数
func getOnlineValue() (float64, error) {
	return 1234, nil
}

//更新metric数据到channel
func (c *OnlineCollector) Update(ch chan<- prometheus.Metric) error {
	v, err := getOnlineValue()
	if err != nil {
		return err
	}

	ch <- prometheus.MustNewConstMetric(
		prometheus.NewDesc(
			prometheus.BuildFQName(namespace, "", "ccu_online"), //这里的ccu_online就是metric的名字
			"current online data", //这里是描述
			nil, nil,
		), prometheus.GaugeValue, v)

	return nil
}

然后编译项目,生成node_exporter可执行文件
运行
在这里插入图片描述
查看node_exporter生成的metric数据

curl localhost:9100/metrics

可看到以下的数据

# HELP node_ccu_online current online data
# TYPE node_ccu_online gauge
node_ccu_online 1234
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值