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 是一个功能很简单同时也很稳定的程序