kakakakakku blog

Weekly Tech Blog: Keep on Learning!

ECS コンテナインスタンスをモニタリングするときは mackerel-agent v0.49.0 以上にすると良さそう

例えば ECS コンテナインスタンスなど,Docker ホストとして使っているインスタンスを Mackerel でモニタリングする場合,以下のように diskinterfacefilesystem のメトリクスが非常に多くなってしまう.Mackerel では,メトリクス数が 200 を超えると,1インスタンス追加と換算されてしまうため,比較的コンテナを多く起動している ECS コンテナインスタンスだと,メトリクス数が 200 を超えてしまうことが実際にあった(他にも多くメトリクスを取得しているため).

f:id:kakku22:20180117122957p:plain

mackerel-agent v0.49.0

公式ブログでもアナウンスがあった通り,mackerel-agent v0.49.0 から Docker ホストで dm-*veth* のメトリクスを取得しないようになっている.Docker ホストをモニタリングしている場合は mackerel-agent v0.49.0 以上(現在だと,最新は mackerel-agent v0.50.1)にすると良さそう.僕の運用している環境はすぐにアップデートして,不要なメトリクスが取得されないようになった.

mackerel.io

取り込まれたプルリクは以下だった.簡単に言うと,メトリクス名が dm-*veth* に一致した場合に取得しないようになっている.

github.com

github.com

なお,dm-* のメトリクスは /proc/diskstats から取得されていて,veth* のメトリクスは /proc/net/dev から取得されている.さらに veth* は go-osstat ライブラリから取得されていることも知った.go-osstat は今まで知らなかったぞ!

github.com

Device Mapper と Virtual Ethernet

Device Mapper は Linux で論理デバイスを構成する機能で,Docker でも採用されている.Virtual Ethernet は仮想的な NIC で,コンテナごとに付与されている.Docker のネットワーク管理,デバイス管理の話は「Docker 実践入門」に載っていて,今回改めて読み直した.

Docker実践入門――Linuxコンテナ技術の基礎から応用まで (Software Design plus)

Docker実践入門――Linuxコンテナ技術の基礎から応用まで (Software Design plus)

まとめ

  • ECS コンテナインスタンスなど,Docker ホストをモニタリングする場合は mackerel-agent v0.49.0 以上にすると良さそう
  • mackerel-agent のアップデートは定期的に確認するべし

関連記事

Mackerel でメトリクスを取得しすぎると,1インスタンス追加と換算される仕様は,以下に詳しく載っている.

mackerel.io