为node_exporter添加新的自定义collector

本文介绍如何使用Golang和Prometheus Node Exporter自定义监控指标,通过添加自定义的metric 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
### Node Exporter Collector 配置与使用 Node Exporter 是 Prometheus 生态系统中的一个重要组件,用于收集主机级别的各种指标数据。Collector 负责具体的数据采集工作。 #### 默认 Collectors 启用情况 默认情况下,Node Exporter 会启用大部分内置的 collectors 来自动抓取系统的各项性能指标[^1]。这些默认开启的collectors涵盖了CPU、内存、磁盘IO等多个方面的重要信息。 #### 自定义 Collector 设置 如果希望调整哪些collector被激活或禁用某些不需要的collector,则可以通过命令行参数`--no-collector.<name>`来关闭特定的collector;也可以通过设置环境变量`NODE_EXPORTER_COLLECTOR_TEXTFILE_DIR=/path/to/textfile_directory`指定额外textfile collector使用的目录位置。 对于更复杂的场景,可以创建一个名为`collector.text.conf`的文件,在其中定义要加载的一组collector及其选项,并将其放置于Node Exporter启动时能够访问的位置。此配置文件支持多种语法结构,允许灵活控制各个collector的行为模式。 ```bash # Example of disabling specific collectors via command line argument when starting node_exporter service /usr/local/bin/node_exporter \ --web.listen-address=":9100" \ --no-collector.cpu \ --no-collector.filesystem \ ... ``` #### 查看当前已启用的Collectors列表 为了确认实际运行环境中究竟启用了哪些collectors,可以在浏览器地址栏输入目标服务器IP加上端口号(通常是`:9100`)并附加路径`/metrics`,这将展示所有由node_exporter暴露出来的metric名称以及它们所属的具体collector类别。 ```bash curl http://localhost:9100/metrics | grep "node_" | cut -d "_" -f 1,2 | sort | uniq -c ``` 上述命令可以帮助快速统计各类collector所贡献的metric数量分布状况。 #### 文档资源链接 官方文档提供了详细的说明关于如何进一步定制化collector行为,建议查阅最新版本的手册获取最权威指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值