プライベートサブネットのEC2にMackerelエージェントをSSMでインストールしてみた
ご機嫌いかがでしょうか、豊崎です。
Mackerelでプライベートサブネットに配置されているEC2を監視する機会があり、導入をSSMで行ったので、備忘録として残して書き残して置きたいと思います。
環境
ある環境においてオンプレミスとVPCがVPN接続されており、インターネット側からプライベートサブネットにあるEC2にSSHができない状況でした。現在、AWSではいくつかのサーバへのログイン方法がありますが、ここではお馴染み、AWS Systems ManagerのAWS-RunShellScriptでMackerelエージェントをインストールしました。
EC2について
- Amazon Linux2 : amzn2-ami-hvm-2.0.20190618-x86_64-gp2
- SSM Agentがインストールされている状態
- NATGatewayがパブリックサブネットに配置されていてインターネット向けのアウトバウンド通信は可能
- つまりSSMのパブリックエンドポイントとMackerelへメトリクス送信が可能
やってみた
まずはSSMを利用するためにEC2にアタッチするIAMRoleを作成していきます。
IAMRoleダッシュボードから左ペインのロールを選択して、ロールの作成から進んでいきます。
AWSサービス、EC2を選択し、次のステップに進みます。
ここではAWSのマネージドポリシーの「AmazonEC2RoleforSSM」を設定しました。
あとは特に設定せずに進んで「demo-mackerel-role」という名前でIAMRoleを作成しました。
作成したIAMRoleを対象のEC2にアタッチしました。 これでAWS Systems Managerを利用する準備が整いました。
AWS Systems Managerダッシュボードからコマンドの実行を行う前に、Mackerel側でエージェントインストール用のコマンド(APIKEY含む)をコピーしてきます。そのためにMackerelにログインしました。
左ペインからHostsを選択して、エージェントをインストールをクリックします。
OSをAmazon Linux2と選択し、対象のコマンド(APIKEY含む)をコピーしました。
ようやく、AWS Systems Managerからコマンドの実行(RunCommand)が実行できます。
AWS Systems Managerダッシュボードの左ペインからコマンドの実行を選択し、コマンドの実行を行います。
コマンドのドキュメントでAWS-RunShellScriptを選択します。
Commandsの項目に先ほどコピーしたコマンドをコピーします※先頭に"sudo"をつけるのを忘れないようにしてください。
実行するして成功となることを確認します。
Mackerelのダッシュボード側でもホストが追加されていることが確認できます。 あとはMackerel上で好きに設定を行えばOKです。
さいごに
今回はSSH通信できないケースでAWS Systems ManagerのRunCommandを利用してMackerel-Agentをインストールする方法をご紹介しました。誰かのお役に立てれば幸いです。