Amazon EC2 のログを CloudWatch Logs へ保存するときに必要なエージェントの違いを今と昔で振り返ってみた

2023.09.21

CloudWatch Logs へログを送信する方法はいろいろと用意されています。コンテナであれば awslogs ログドライバーや、Firelens(Fluent Bit, Fluentd)などあります。

今回は EC2 インスタンスから CloudWatch Logs へログを送信するための方法を最近の推奨方法と、昔はどうやっていたのかを振り返ってみました。

最初に現在の推奨方法である統合 CloudWatch エージェントでできることをおさらいします。その後、非推奨となった昔の方法を紹介します。

統合 CloudWatch エージェントとは

EC2 インスタンスからメトリクス、ログ、トレースデータの収集を行えるエージェントです。統合 CloudWatch エージェントは AWS から提供される AMI には基本プリインストールされていません。必要に応じてインストールするかたちとなっています。

できることは

  • CPU 使用率、メモリ使用率、ディスク使用率などの OS レベルのメトリクスの収集
    • CPU 使用率、ネットワーク転送量などは標準メトリクスでも収集可
    • Windows Server は Performance Monitor の値を CloudWatch メトリクスで収集も可
  • OS 上のログファイルの内容を CloudWatch Logs へ送信
    • 特定のファイルパス/var/log/messagesなどを指定
    • Windows Server はアプリケーションイベントログ、任意のテキストベースのログ(カスタムログ)を CloudWatch Logs へ送信可
  • AWS X-Ray, OpenTelemetry のトレースデータを X-Ray へ送信

統合と冠するだけのことはある

統合 CloudWatch エージェント(unified CloudWatch agent)は「統合(unified)」と言うだけあって、AWS が提唱している「システムの状態把握に必要な 3 本柱」のメトリクス、ログ、トレースのデータ収集を 1 つのエージェントで担っている働き者です。

画像引用: AWS-Black-Belt_2023_AmazonCloudWatch_0330_v1.pdf

上の図の AWS Black Belt Online Seminar が開催された 2023 年 3 月当時はトレースデータの収集には対応していませんでした。2023 年 8 月のアップデートで統合 CloudWatch エージェントに機能が追加されました。

CloudWatch 全般を学びたいときは Black Belt をご覧ください。

インストール方法

AWS Systems Manager エージェント(SSM エージェント)は AWS から提供される多くの AMI にプリインストールされていますが、統合 CloudWatch Agent はプリインストールされていません。

画像引用: AWS-Black-Belt_2023_AmazonCloudWatch_0330_v1.pdf

具体的な作業手順は以下のリンクをご参考ください。AWS 公式ドキュメントよりも図とキャプチャがあるため、頭に入ってきやすいかと思います。

今と昔を振り返る

自分の記憶の整理のために EC2 からのログ送信の歴史を振り返ります。ついでに 2023 年 8 月のアップデートで追加されたトレースデータの送信も確認しました。

OS 上のログ送信

CloudWatch Logs エージェント

2017 年 9 月にリリースされた現行の統合 CloudWatch エージェント以前は CloudWatch Logs エージェントでログを収集していました。

現在は統合 CloudWatch エージェントの利用が推奨されており、CloudWatch Logs エージェントの利用は非推奨かつ、サポートもされていません。使用が禁止されていたり、廃止されているわけではありませんでした。

The older logs-only agent is deprecated and is no longer supported.

Use the previous CloudWatch agent to get started with CloudWatch Logs - Amazon CloudWatch Logs

CloudWatch Logs エージェントがサポートしている OS で古いものですと、CentOS 6, RHEL 6.5, Ubuntu 12.04 LTS があり、オンプレミスサーバーでも使用可能なエージェントです。塩漬けされているマシンがある場合は人知れずログを送信し続けている可能性はあります。

SSM エージェント + aws:cloudWatch プラグイン

Windows Server 限定で AWS Systems Manager エージェント(SSM エージェント)に aws:cloudWatch プラグインの組み合わせで、CloudWatch Logs へログ送信ができました。

こちらも同様に現在は統合 CloudWatch エージェントの利用が推奨されており、aws:cloudWatch プラグインはサポートされていません。

Export data from Windows Server to Amazon CloudWatch or Amazon CloudWatch Logs and monitor the data using CloudWatch metrics. This plugin only runs on Windows Server operating systems. For more information about configuring CloudWatch integration with Amazon Elastic Compute Cloud (Amazon EC2), see Collecting metrics and logs from Amazon EC2 instances and on-premises servers with the CloudWatch agent. -- 中略 -- The SSM Agent aws:cloudWatch plugin is not supported.

Command document plugin reference - AWS Systems Manager

古い Windows OS ですと 2016 年 11 月以降に公開された Windows Server 2008, 2012 R2 の AWS が提供するAMI には SSM エージェントがインストールされています。CloudWatch Logs エージェントないし、統合 CloudWatch エージェントを新たにインストールする必要なく、プラグイン設定でログを CloudWatch Logs へ送信できました。どちらの方法が良いかは好みがあったかもしれませんが、需要はあったのではないでしょうか。

私が過去に対応させて頂いたお客様ではプラグインをご利用されておりました。今は統合 CloudWatch エージェントへ移行されています。

トレースデータの送信

AWS X-Ray へトレースデータを送信するには X-Ray デーモンをインストールして利用しています。2023 年 8 月のアップデートで統合 CloudWatch エージェントが X-Ray デーモンの機能を兼ねたというかたちとなりました。

CloudWatch エージェントのアップデートからまだ間もないため、X-Ray デーモンの動向は不明です。今のところは非推奨になったという記述は見つけられませんでした。

オブザーバビリティを実現するために必要な 3 つの要素の収集を 1 つのエージェントを動かせばカバーできることは大きなメリットに感じます。

画像引用: AWS-Black-Belt_2023_AmazonCloudWatch_0330_v1.pdf

まとめ

EC2 インスタンスからメトリクス、ログ、トレースデータの収集を行う推奨方法は、統合 CloudWatch エージェントを利用する。

  • CloudWatch メトリクスでメトリクスを収取するなら統合 CloudWatch エージェント
  • CloudWatch Logs でログを収取するなら統合 CloudWatch エージェント
  • X-Ray でトレースデータを収取するなら統合 CloudWatch エージェントか、X-Ray デーモン

おわりに

SSM エージェントで何かのログを CloudWatch Logs へ送信できていたけど、なんのログなら送信できたのかを思い出せなく調べていました。思いのほか情報を見つけだすのに苦労したので備忘録として残しました。

個人的は統合と冠するだけあって、モニタリング、オブザーバビリティの冠することは統合 CloudWatch エージェントに寄せていきたい思惑があるように思えました。

参考