最近 Mackerel が Azure インテグレーションに対応したと聞いたので、まったく関係ないですが Windows Server で動いてる Elastic Beanstalk に Mackerel をインストールして試してみました。
元々はてな好きユーザーなので、ちょっと気になっていたというのもあります。
Mackerel の Windows エージェントは MSI で提供されているので、Elastic Beanstalk には比較的簡単にインストールできますが、Azure App Service では使えなかったりします。
Elasitc Beanstalk で MSI なパッケージをインストールする場合には ebextensions が使えます。しかし、インストール時に API KEY を指定する必要があるのでダウンロードしてから、手動で msiexec を実行します。
files: "c:/msi/mackerel-agent-latest.msi": source: https://mackerel.io/file/agent/msi/mackerel-agent-latest.msi commands: install_agent: command: msiexec /qn /i c:\msi\mackerel-agent-latest.msi APIKEY="XXXXXX"
作成した YAML を MSDeploy パッケージに含めて Elastic Beanstalk にデプロイすると、Mackerel エージェントのインストールが行われます。
ebextensions を使うとアップデートの度に毎回実行されてしまうので、カスタム AMI を用意している場合は入れてしまうか、デプロイフックを使って postinit のタイミングで実行するのが良いかもしれません。
インストールが完了してしばらくすると Mackerel の管理画面に追加したインスタンスが表示されました。
AWS には標準で対応しているので、インスタンスの各種情報が表示されて便利です。
メトリックに関しては Linux 系より少し取れるデータが少ないような気がしました。
設定変更などでインスタンスを作り直した場合には、古いインスタンスのアラートが飛んできますが、そのアラートは間違っているので自動で退役したホスト扱いになって欲しいですね。AWS インテグレーションすれば解決するのかもしれませんが。
あと、インスタンスのステータスに poweroff というのがありましたが、正直よくわかりませんでした。ホストを退役させるのかと思いきや、そうではないみたいでした。
サービス / ロールを新しいインスタンスには毎回手動で付けないといけないっぽいのも、少し手間だと感じました。個人的にはインスタンスはガンガン作って捨てる派なので、毎回設定するとかやってらないのです。
基本的な部分を触っただけですが、PaaS 好きな自分向きなサービスではないかなという印象を持ちました。