例えば ECS コンテナインスタンスなど,Docker ホストとして使っているインスタンスを Mackerel でモニタリングする場合,以下のように disk
と interface
と filesystem
のメトリクスが非常に多くなってしまう.Mackerel では,メトリクス数が 200 を超えると,1インスタンス追加と換算されてしまうため,比較的コンテナを多く起動している ECS コンテナインスタンスだと,メトリクス数が 200 を超えてしまうことが実際にあった(他にも多くメトリクスを取得しているため).
mackerel-agent v0.49.0
公式ブログでもアナウンスがあった通り,mackerel-agent v0.49.0 から Docker ホストで dm-*
と veth*
のメトリクスを取得しないようになっている.Docker ホストをモニタリングしている場合は mackerel-agent v0.49.0 以上(現在だと,最新は mackerel-agent v0.50.1)にすると良さそう.僕の運用している環境はすぐにアップデートして,不要なメトリクスが取得されないようになった.
取り込まれたプルリクは以下だった.簡単に言うと,メトリクス名が dm-*
と veth*
に一致した場合に取得しないようになっている.
なお,dm-*
のメトリクスは /proc/diskstats
から取得されていて,veth*
のメトリクスは /proc/net/dev
から取得されている.さらに veth*
は go-osstat ライブラリから取得されていることも知った.go-osstat は今まで知らなかったぞ!
Device Mapper と Virtual Ethernet
Device Mapper は Linux で論理デバイスを構成する機能で,Docker でも採用されている.Virtual Ethernet は仮想的な NIC で,コンテナごとに付与されている.Docker のネットワーク管理,デバイス管理の話は「Docker 実践入門」に載っていて,今回改めて読み直した.
Docker実践入門――Linuxコンテナ技術の基礎から応用まで (Software Design plus)
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2015/09/26
- メディア: 大型本
- この商品を含むブログ (2件) を見る
まとめ
- ECS コンテナインスタンスなど,Docker ホストをモニタリングする場合は mackerel-agent v0.49.0 以上にすると良さそう
- mackerel-agent のアップデートは定期的に確認するべし
関連記事
Mackerel でメトリクスを取得しすぎると,1インスタンス追加と換算される仕様は,以下に詳しく載っている.