node_exporter の次期アップグレードで変更になるオプション設定

現時点ではリリースされていないのですが、masterに後方互換のない破壊的変更が入っていますので紹介します。

node_exporterでは、28個のコレクターが既定で有効になっています。
既定で有効になっているコレクターを無効にするには、「–no-collector.<name>」をflagに設定します。

例えば、arpとcpuを無効にするには、オプションに次のように指定します。

./node_exporter –no-collector.arp –no-collector.cpu

また、node_exporterは、既定では無効になっている16個のコレクターがあります。
それらを有効にするには、「–collector.<name>」をflagに設定します。

例えば、logindを有効にするには、オプションに次のように指定します。

./node_exporter –collector.logind

実装

コレクターの実装を見てみましょう。
コレクターをnode_exporterに登録するには、init時に「registerCollector」で登録します。
引数にコレクター名と、デフォルトで有効か無効かと、実装関数を渡します。

func init() {
    registerCollector("bonding", defaultDisabled, NewBondingCollector)
}

collector.go では、配列に実装関数とコレクターフラグ名・有効無効とをそれぞれに格納します。

collectorState[collector] = flag
factories[collector] = factory

後は順次、ループで非同期でコレクターをexecuteしていきます。

// Collect implements the prometheus.Collector interface.
func (n nodeCollector) Collect(ch chan<- prometheus.Metric) {
	wg := sync.WaitGroup{}
	wg.Add(len(n.Collectors))
	for name, c := range n.Collectors {
		go func(name string, c Collector) {
			execute(name, c, ch)
			wg.Done()
		}(name, c)
	}
	wg.Wait()
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です