Prometheus Node Exporter

Table of Contents

1. Prometheus Node Exporter

本文使用代码: 83dd27b

node exporter 的启动参数有很多,都是在启动时注入进去,方便控制哪些 collector 启用,哪些 collector 不启用. 主要逻辑在 collector.go L:60 registerCollector 这个函数中

func registerCollector(collector string, isDefaultEnabled bool, factory func(logger log.Logger) (Collector, error)) {
	var helpDefaultState string
	if isDefaultEnabled {
		helpDefaultState = "enabled"
	} else {
		helpDefaultState = "disabled"
	}

	flagName := fmt.Sprintf("collector.%s", collector)
	flagHelp := fmt.Sprintf("Enable the %s collector (default: %s).", collector, helpDefaultState)
	defaultValue := fmt.Sprintf("%v", isDefaultEnabled)

	flag := kingpin.Flag(flagName, flagHelp).Default(defaultValue).Action(collectorFlagAction(collector)).Bool()
	collectorState[collector] = flag

	factories[collector] = factory
}

2. Collector 的工作原理

collector 通过读系统中的信息来然后包装成 prometheus 可以读的格式.所以本质上就是一个读文件然后接受请求的 web server

主要是读取 /proc 与 /sys 下的信息

总的来说 node exporter 是一个功能很简单同时也很稳定的程序

3. Node Exporter 对照表

Created: 2023-11-24 Fri 09:50

Validate