Mackerel で「ECS クラスタ」のメトリクスを取得する mackerel-plugin-aws-ecs を試した.ちなみに mackerel-plugin-aws-ecs を使うためには,去年11月にリリースされた「mkr プラグインインストーラー機能」も使う必要があり,この機能もまだキャッチアップできていなかったので合わせて試してみた.
mkr プラグインインストーラー機能
最初に「mkr プラグインインストーラー機能」をザッと紹介しておこうと思う.「mkr プラグインインストーラー機能」によって大きく変更されたことは,今までプラグインを一元管理していた mackerelio/mackerel-agent-plugins リポジトリに,今後新規のプラグインが入らなくなったことだと思う.今後は自分自身の GitHub リポジトリにプラグインを追加し,そのプラグインを「プラグインレジストリ」と呼ばれるリポジトリに登録することにより,幅広く活用してもらうことができる.なお,オレオレプラグインなど,限られたユースケースで使うような場合は,プラグインレジストリに登録する必要はなく,自分自身の GitHub リポジトリを参照して使うことができるけど,GitHub Releases の命名規則だけは合わせる必要がある.
他にも,Go 以外の好きな言語でプラグインを開発できるようになったりもしている.詳細な解説は以下の記事に載っている.
mackerel-plugin-aws-ecs
プラグインレジストリの中に mackerel-plugin-aws-ecs がある.これは名前の通り ECS のメトリクスを取得するプラグインだけど,正確に言うと「ECS クラスタ」のメトリクスを取得する.「ECS コンテナインスタンス」や「ECS タスク」のメトリクスではないので,注意すること.さっそく試してみた.
インストール
mkr plugin install
コマンドでインストールすることができる.基本的には最新版の GitHub Releases がインストールされるけど,特定のバージョンをインストールする場合は mkr plugin install mackerelio/mackerel-plugin-aws-ecs@v0.0.1
のように指定することもできる.また,プラグインを更新するときは --overwrite
オプションを使う必要がある.今回は最新バージョンにした.
$ mkr --version mkr version 0.24.1 (rev:102ee8d) $ mkr plugin install mackerelio/mackerel-plugin-aws-ecs Downloading https://github.com/mackerelio/mackerel-plugin-aws-ecs/releases/download/v0.0.2/mackerel-plugin-aws-ecs_linux_386.zip Installing /opt/mackerel-agent/plugins/bin/mackerel-plugin-aws-ecs Successfully installed mackerelio/mackerel-plugin-aws-ecs
インストールしたプラグイン一覧
無意識に mkr plugin list
と打ってみたけど list
はサポートされていなかった.あれば良いのにー!今回は /opt/mackerel-agent/plugins/bin/
を ls して確認した.
$ mkr plugin list No help topic for 'list' $ ls -1 /opt/mackerel-agent/plugins/bin/ mackerel-plugin-aws-ecs
実行と設定
必要なオプションは複数あるけど,クレデンシャル関連は IAM Role で解決をしているため使わず,以下のようなコマンドにした.なお,メトリクスの値は仮で 0 にしている.あとオプションに付けるハイフンは,単語の場合は -
じゃなくて --
派なので,そうしている.
$ /opt/mackerel-agent/plugins/bin/mackerel-plugin-aws-ecs --metric-key-prefix ecs.kakakakakku-cluster --cluster-name kakakakakku-cluster --region ap-northeast-1 ecs.kakakakakku-cluster.CPUReservation.CPUReservationAverage 0 1515567018 ecs.kakakakakku-cluster.CPUReservation.CPUReservationMinimum 0 1515567018 ecs.kakakakakku-cluster.CPUReservation.CPUReservationMaximum 0 1515567018 ecs.kakakakakku-cluster.CPUUtilization.CPUUtilizationAverage 0 1515567018 ecs.kakakakakku-cluster.CPUUtilization.CPUUtilizationMinimum 0 1515567018 ecs.kakakakakku-cluster.CPUUtilization.CPUUtilizationMaximum 0 1515567018 ecs.kakakakakku-cluster.MemoryReservation.MemoryReservationAverage 0 1515567018 ecs.kakakakakku-cluster.MemoryReservation.MemoryReservationMinimum 0 1515567018 ecs.kakakakakku-cluster.MemoryReservation.MemoryReservationMaximum 0 1515567018 ecs.kakakakakku-cluster.MemoryUtilization.MemoryUtilizationAverage 0 1515567018 ecs.kakakakakku-cluster.MemoryUtilization.MemoryUtilizationMinimum 0 1515567018 ecs.kakakakakku-cluster.MemoryUtilization.MemoryUtilizationMaximum 0 1515567018
あとは /etc/mackerel-agent/mackerel-agent.conf
に以下の設定を追加する.
[plugin.metrics.aws-ecs] command = "/opt/mackerel-agent/plugins/bin/mackerel-plugin-aws-ecs --metric-key-prefix ecs.kakakakakku-cluster --cluster-name kakakakakku-cluster --region ap-northeast-1"
1日様子を見てみて,正常にメトリクスが取得できていた.
(検証環境で取得した CPUUtilization と MemoryUtilization)
メトリクス
既に書いた通り,mackerel-plugin-aws-ecs で取得できるメトリクスは「ECS クラスタ」のメトリクスで,以下の計12種類となっている.
- CPUReservation
- Average
- Minimum
- Maximum
- CPUUtilization
- Average
- Minimum
- Maximum
- MemoryReservation
- Average
- Minimum
- Maximum
- MemoryUtilization
- Average
- Minimum
- Maximum
詳細は以下のドキュメントに載っているけど,CPUReservation など,コンテナインスタンスのオートスケールに活用できるメトリクスを取得することができる.なお,CloudWatch だと「3ヶ月間」のメトリクスしか残らない(ドキュメント「2週間」と書いてあったけど,確認したら「3ヶ月間」残っていた)けど,Mackerel なら「400日間」残せるため,メトリクスの長期的な傾向を知るためには Mackerel にメリットがある.
まとめ
- 去年11月にリリースされた「mkr プラグインインストーラー機能」を試してみた
mkr plugin install
でインストールできる mackerel-plugin-aws-ecs を導入してみた- 「ECS クラスタ」のメトリクスが取得できて便利だった(AWS インテグレーションに追加されたらまた話は変わりそう)
- ECS 関連のアラート設定を Mackerel で管理できるので,運用も楽になる
typo 警察
mackerel-plugin-aws-ecs の README を読んでいたら,コマンド名が間違っていたので,修正しておいた.
mkr plugin
で気になったこと
最後に mkr plugin
で気になったこと(もしくは,僕の認識が間違っているかも)を箇条書きにしておこうと思う.
- バイナリ(例えば
/opt/mackerel-agent/plugins/bin/mackerel-plugin-aws-ecs
など)からバージョンを確認できなかった- プラグインに問題があったときなど,バージョンを確認できないと不安になる
- Chef でプラグインをプロビジョニングする場合,冪等性が保証できなくなる
mkr plugin list
のような,プラグインを一覧するサブコマンドがなかった- Mackerel 関連のプロビジョニングは,全て cookbook-mackerel-agent で管理しているので,attributes にプラグイン名とバージョンを書けると助かる