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