Mackerel Advent Calendar 2020 8日目の参加記事です。
2020年11月に、Amazon Lightsail Container というサービスがリリースされました。
最低月額 $7 で、コンテナを気軽に(ロードバランサー込みで!) Amazon Lightsail 上にデプロイできるというものです。普通に AWS で Fargate のコンテナとロードバランサー(ALB)を動かすと最低でも$25/月程度はかかってしまうので、これはお手軽でよさそうですよね。
ということで、この Lightsail Container を Mackerel で監視してみましょう。
Lightsail Container の実体は?
なにはともあれ、Ligtsail Container に環境変数を出力する Web アプリケーションをデプロイして素性を探ってみます。環境変数を JSON で出力する HTTP サーバを起動してくれる便利な phamviet/printenv という Public Image があるので、これを適当に Lightsail Container にデプロイしてアクセスしてみると、以下のようなレスポンスが得られました。
{ "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI": "/v2/credentials/03aed4fb-11f7-4c84-967a-34389ff48412", "AWS_DEFAULT_REGION": "ap-northeast-1", "AWS_EXECUTION_ENV": "AWS_ECS_FARGATE", "AWS_REGION": "ap-northeast-1", "ECS_CONTAINER_METADATA_URI": "http://169.254.170.2/v3/3715f73c-a351-4df9-a923-02163d4df095", "ECS_CONTAINER_METADATA_URI_V4": "http://169.254.170.2/v4/3715f73c-a351-4df9-a923-02163d4df095", "HOME": "/root", "HOSTNAME": "ip-172-26-26-31.ap-northeast-1.compute.internal", "NODE_VERSION": "10.16.3", "PATH": "/usr/src/app/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "PWD": "/usr/src/app", "SHLVL": "1", "YARN_VERSION": "1.17.3" }
"AWS_EXECUTION_ENV": "AWS_ECS_FARGATE"
なるほどですね。
Lightsail Container = Fargate を簡単に使えるようにいい感じにしてくれているなにか、のようです(あくまで推測ですよ?)
ということは普通に mackerel-container-agent で ECS / Fargate を監視するのと同じ方法でいけそうですよね。サイドカーを追加してみましょう。
mackerel-container-agent のサイドカーを追加する
公式のドキュメントをもとに、以下のような設定でコンテナを追加しました Amazon ECSにmackerel-container-agentをセットアップする
- image: mackerel/mackerel-container-agent:v0.5.0
- environment
- MACKEREL_APIKEY: *************
- MACKEREL_CONTAINER_PLATFORM: ecs
デプロイしてしばらく待ってみると…
普通に Fargate task として認識され、同様のメトリックが得られました。よかったですね。
[PR] デプロイツール sailtrim 開発中
現在、fujiwara/sailtrim という、Lightsail Container 用のデプロイツールを開発しています。
まだまだ荒削りですが、ECSのデプロイツール ecspresso や Lambda のデプロイツール lambroll と同じような使い勝手で Lightsail Container をコード管理してデプロイできるツールです。よろしくどうぞ。