1

私はawslogs agentをサーバー上で実行しています.AWSコンソールのCloudWatchログを見ると、ログは約60分遅れています。私たちのサーバーは1時間に約650MBのデータを生成し、エージェントは追いつくことができないようです。ここでawslogsエージェントが追いつくことができない

は、当社の簡略設定ファイルです:

[application.log] 
datetime_format = %Y-%m-%d %H:%M:%S 
time_zone = UTC 
file = var/output/logs/application.json.log* 
log_stream_name = {hostname} 
initial_position = start_of_file 
log_group_name = ApplicationLog 

[service_log] 
datetime_format = %Y-%m-%dT%H:%M:%S 
time_zone = UTC 
file = var/output/logs/service.json.log* 
log_stream_name = {hostname} 
initial_position = start_of_file 
log_group_name = ServiceLog 

awslogsエージェントの速度に共通する方法はありますか?

答えて

5

データ量(> 0.2MB/s)はエージェントにとって問題ではありません。エージェントのログファイルあたりの容量は約3MB/sです。しかし、複数のログファイルに対して同じログストリームを使用している場合、エージェントは同じストリームに書き込みを行い、お互いをブロックします。ログファイル間でストリームを共有すると、スループットが半減します。

また、パフォーマンスに影響を与える可能性があり、そのように構成することができますa few propertiesあります

buffer_duration = <integer> 
batch_count = <integer> 
batch_size = <integer> 

私の問題を解決するためには、私は2つの事でした:

  1. 劇的に(バッチサイズを増やします
  2. ログファイルごとに異なるログストリームを使用します。

エージェントは問題を解決できませんでした。ここに私の最終的な設定ファイルがあります:

[application.log] 
datetime_format = %Y-%m-%d %H:%M:%S 
time_zone = UTC 
file = var/output/logs/application.json.log* 
log_stream_name = {hostname}-app 
initial_position = start_of_file 
log_group_name = ApplicationLog 
batch_size = 524288 

[service_log] 
datetime_format = %Y-%m-%dT%H:%M:%S 
time_zone = UTC 
file = var/output/logs/service.json.log* 
log_stream_name = {hostname}-service 
initial_position = start_of_file 
log_group_name = ServiceLog 
batch_size = 524288 
+0

jsonデータを記録していることに気付きました。 Cloudwatchログで解析できますか? – Julian

+0

CloudWatchにはJSONのファーストクラスサポートがあります。 – EmptyArsenal

+0

甘い。それを知らなかった!ありがとう。 – Julian

0

awslogsエージェントはログローテーション をサポートしていますので、この:

file = var/output/logs/application.json.log* 

は、あまりにも多くのファイルを拾うでしょうか?

試してみてください。

file = var/output/logs/application.json.log 

は、プロセスをスピードアップします。

関連する問題