node_exporterでルーティングテーブルを監視する

先日リリースされたnode_exporter 1.1.0network_routeコレクタが追加され、Linux上のルーティングテーブルを監視することが出来るようになりました。

このPRは私が昨年出したもので、指摘を頂きながらマージしてもらったものです。

動作の概要

PR説明文からの引用ですが、 network_route コレクタを有効にすると以下のようなメトリクスを出力します。 こちらの内容をPrometheusが収集・Grafana等で可視化するという形です。

# HELP node_network_route network routing table
# TYPE node_network_route gauge
node_network_route{dest="10.0.0.0/24",gw="100.0.0.1",if="eth1",priority="20",proto="zebra",src="",weight="1"} 1
node_network_route{dest="10.0.0.0/24",gw="100.0.0.2",if="eth1",priority="20",proto="zebra",src="",weight="1"} 1
node_network_route{dest="100.0.0.0/24",gw="",if="eth1",priority="0",proto="kernel",src="100.0.0.3",weight=""} 1
node_network_route{dest="192.168.10.0/24",gw="",if="eth0",priority="0",proto="kernel",src="192.168.10.2",weight=""} 1
node_network_route{dest="default",gw="192.168.10.1",if="eth0",priority="0",proto="static",src="",weight=""} 1
# HELP node_network_routes_total network routing table
# TYPE node_network_routes_total gauge
node_network_routes_total{if="eth0"} 2
node_network_routes_total{if="eth1"} 3

背景

Linuxマシンにzebra,ospfd,bgpd等の経路交換を行うソフトウェアを利用しており、これらが実際に設定した経路を監視したいと言ったことが実装のモチベーションです。 最初は社内のGitHub Enterpriseにのみ route_exporter という名前の別ソフトウェアとして公開していましたが、他の人にも需要が有るだろうということで node_exporter へPRを提出しました。

kubernetes環境を自分で構築する場合、CalicoでBGPネットワークの構築などを行うケースも多いと思われます。また、ノードの台数を動的に変更するケースも少なくないと思いますので、このコレクタの適用範囲はある程度広いと考えています。

導入方法

network_route コレクタはデフォルトで有効になっていないので、起動引数に --collector.network_route を与えることで有効化されます。