MackerelとECSのダイナミックポートマッピング

当方、現在の担当業務的にMackerelを両手で数えられるくらいのサーバにしか導入しておらず、しかも初期に設定をしたあとは絶賛放置中という超ライトユーザなのですが、先日なんの因果か他部署の方から「ECRのダイナミックポートマッピングしているときのコンテナのメトリクス取るのどうすればええん?」という相談をうけてしまいました。

完全無欠のMackerel情弱としては、極々テキトーなやり取りをせざるを得なかったのですが、なんだかそれなりにイイ感じまとまったみたいです。

kakakakakku.hatenablog.com kakakakakku.hatenablog.com

結論、id:kakku22 さんカッケー。

まあそれだけだとアレなわけで、事情があって歯牙にもかけてもらえなかった別の方法をこのエントリでは書いてみようと思います。


ざっくり提案したのは以下のようなやり方。なお当方テキトーなので自分で試してないです(ぉ

ECSのtask-definitionで以下のように複数コンテナが動くようなタスク設定をする

  1. メトリクスを取りたい対象のコンテナ
    → 適当なポートでサービスが動いていて、そのポートでメトリクスをとれる
    → hostとのポートマッピングは動的で、host側からアクセスではポート固定できない
  2. mackerel-agentを動かすコンテナ
    → dockerのlink機能で上記のコンテナのポート(こっちは固定指定可)にアクセスしてメトリクス収集

要するに1タスクを1ホストとみなして、そこの中でメトリクス収集を完結させちまおう、というやり方ですね。
そーすることでMackerelの管理画面でもroleでのグラフもいい感じにまとまって見れるんじゃね?的な?的な?

 

やろうと思えば設定もカンタンで管理画面上も管理しやすい、という案なのですが、既に書いたように採用は見送られました。

理由は単純で、Mackerelの課金がホスト単位なので、1タスク1ホストとかでポンポン設定入れちゃうとアホみたいにオカネがかかるから、という。。。

そんなわけでMackerel様としては「ホストあたりの基本料金を極々安くして、その代わりメトリクス数で従量課金する」みたいな設定も可能にしていただけるとイイなぁと思う次第であります。
# じゃねーとみんなdatadogに逃げちゃうよ?