こんにちは、技術四課のシノビです。
技術四課の新たな試みとして、他の課員に教えてもらった技術等々をブログにしよう! ということで、今回は某課員から教えてもらったCloudWatch Logsのエージェントについてのお話です。
エージェントの種類
実は CloudWatch Logs にログを送るエージェントは以下の2種類が存在します。
- CloudWatch Logs エージェント
- 統合 CloudWatch エージェント
統合 CloudWatch エージェントの方が新しいエージェントとなります。 統合 CloudWatch エージェントを使用すると、ログファイルだけではなくカスタムメトリクスをCloudWatch Logs に送信できます。 また、CloudWatch Logs エージェントではEC2インスタンス単位でパラメータを管理していましたが、統合 CloudWatch エージェントではパラメータストアで管理することも可能となりました。
エージェント移行時の注意点
せっかくだから新しいエージェントである統合 CloudWatch エージェントに移行したい!という方はAWS Systems Managerから統合 CloudWatch エージェントをインストールすることが可能です。1
ただしその際に注意点です。 CloudWatch Logs エージェントと統合 CloudWatch エージェントではパラメータの指定方法にちょっとした変更点があります。2 3
無くなったパラメータ
CloudWatch Logs エージェントでは存在した以下のパラメータが、統合 CloudWatch エージェントでは無くなっていますので注意が必要です。
file_fingerprint_lines
ファイルを識別するために使用する行数を指定するパラメータ。 統合 CloudWatch エージェントではこのパラメータが廃止され、logs/stateディレクトリ配下でファイルごとに個別にオフセットの状態を管理するよう実装が変更されております。
initial_position
データの読み出しをどこから開始するかの指定するパラメータ。 start_of_file
または end_of_file
が選択できました。
統合 CloudWatch エージェントではこのパラメータが廃止されています。
buffer_duration
batch_count
batch_size
ログイベントの期間や最大値を指定するパラメータ。
上記が force_flush_interval
に集約されました。
batch_size
/ batch_count
の個別指定は廃止され、 force_flush_interval
で指定した秒数が経過した時点、もしくはバッファサイズが 1MB に達した時点でログがサーバーに送信されるよう実装が変更されました。
datetime_format と timestamp_format の指定の違い
タイムスタンプ形式を指定する際のパラメータについて、 CloudWatch Logs エージェントの datetime_format
と統合 CloudWatch エージェントの timestamp_format
で微妙に異なります。
例えば日の指定であれば、以下のような違いがあります。
datetime_format
: %d
でゼロ詰め/ゼロ詰めなし(※)の10進数での日の指定。2
※ドキュメント上は記載ありませんが、動作確認の結果ゼロ詰めなしの10進数での指定でも問題ないようです。
timestamp_format
: %d
でゼロ詰めの10進数での日の指定、 %-d
でゼロ詰めなしの10進数での日の指定。3
フォーマットに一致しないとログの転送を行ってくれません。
そのため、CloudWatch Logs エージェントで %d
を指定していたものを統合 CloudWatch エージェントでも同じように %d
指定してしまうと、毎月1~9日のログが転送されないなんてことが起こりえますのでご注意ください。
まとめ
いかがでしょうか。この情報を教えてくださった某課員も細かいパラメータの違いにハマったそうです。 皆さまもCloudWatch Logs のエージェント移行時は、注意して移行しましょう。
以上