ログは外に出しますよね
EC2 の Windows インスタンスでイベントログやアプリケーションログを CloudWatch Logs に転送して運用しています。
ログを見るためにいちいちインスタンスに入る必要もないし、必要なログがインスタンス外にあることで AutoScaling でインスタンスが勝手に破棄されても大丈夫という設計です。
これまで
ログ転送設定を C:\Program Files\Amazon\Ec2ConfigService\Setting\AWS.EC2.Windows.CloudWatch.json
に書いて EC2Config サービスを再起動することでインスタンスごとにログ転送の仕方を設定していました。
これを CodeDeploy の Hook スクリプトで行い、アプリケーションの配置と同時にログが指定した(アプリケーションごとの)ロググループにロストすることなく集めることができていました。
ちなみに Windows Server 2012 R2 です。
EC2Config ログ転送やめるってよ
あるとき、こんな記事を見つけました。
Windows ServerのCloudWatch LogsをSSMで行う | Developers.IO
従来のEC2 Configの設定を行っても、CloudWatch Logsへログの転送が行われないので注意してください。
え?まじで?
試しに新しい AMI で試してみましたがやっぱりログは転送されません。
今後は SSM で設定しなくちゃいけないのかと調べましたが、どうもやりたいことができません。
やりたいことって何よ?を書くと長くなりそうなんで書きませんが、とにかく、インスタンスに置いたローカルファイルからログ転送設定をしたいんです。
どうも SSMAgent です
EC2Config バージョン履歴的なドキュメント を確認したらなんだかローカル設定ファイルを使えそうな雰囲気が・・・
ローカル設定ファイル (AWS.EC2.Windows.CloudWatch.json) を使用して、インスタンスで CloudWatch の統合を有効にしている場合、SSM エージェントと連携して動作するようファイルを設定する必要があります。詳細については、「Windows Server 2016 インスタンスで CloudWatch 統合用のローカル設定ファイルを使用する」を参照してください。
お?・・・え? Windows Server 2016 だけなん?
結局、サポートに問い合わせて回答をいただきました。
CloudWatch Logsの設定方法
これまでと同様にローカルのファイルをお使い頂けますが、CloudWatchもしくはCloudwath Logsの設定変更が必要な場合には、下記の手順を実施頂くようお願いいたします。
- Amazonssmagent サービスを停止します。 コマンドプロンプトで net stop amazonssmagent を実行することで停止できます。
C:\Program Files\Amazon\SSM\Plugins\awsCloudWatch\AWS.EC2.Windows.CloudWatch.json
を削除いたします。C:\Program Files\Amazon\Ec2ConfigService\Setting\AWS.EC2.Windows.CloudWatch.json
の内容を編集いたします。- Amazomssmagent サービスを開始します。 コマンドプロンプトで net start amazonssmagent を実行することで開始できます。
新しい設定が反映されますと、AWS.EC2.Windows.CloudWatch.json の内容が
C:\Program Files\Amazon\SSM\Plugins\awsCloudWatch\AWS.EC2.Windows.CloudWatch.json
に出力されます。
テキストファイルの改行コードが変わり、Headerが追加されますが、影響はございませんので、無視頂くようお願いいたします。
・・・ふむ。
これ通りに試したところ、無事にログ転送がされました。
極端なことを言ってしまえば僕のケースでは、再起動するサービスを EC2Config から SSMAgent に変えるだけで良かったと言う話です。(担当部署が変わったからそっちに聞いて的な)
でもあくまで設定ファイルの大本は今まで通り EC2Config の下にあるファイルで、それを読み込んで SSM の下のワークスペース的なところに保持するって感じなんですね。
まとめ
- 新しい Windows AMI でも CloudWatch Logs のログ転送設定をローカルファイルで行える
- ただし扱うサービスは SSMAgent
- ファイルの置き場に注意
- AWS のドキュメントはやっぱり追いつくのが遅い
- AWS のサポートは丁寧で助かる