CloudWatchにログが送れずDISKが枯渇

はじめに

AWSで稼働しているAmazonLinuxのdiskサイズが枯渇した

原因

何かが肥大化しているのが通例なので、duコマンドで調べていったら

/var/log/awslogs.log

が数ギガ使っていたということにたどり着いた

もちろんログローテートはしているが、数ギガ使っているというのは明らかに異常

何がawslogs.logに書き込んでいるか。

Linuxにある各種ログファイルを

CloudWatchMonitoringScripts
http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip

を用いてCloudWatchに送っているが、このスクリプトが送信した情報は

/var/log/awslogs.log

に書かれる。これが肥大化していた

どのようなエラー内容か

/var/log/awslogs.log

tailで見ると、以下のようなログが出力されていた。

AccessDeniedException

をみて、awsコマンドの設定周りが怪しいとあたりがついた

awsconfigについて

前途した通り、LinuxサーバはCloudWatchMonitoringScriptsを用いてログを送付しているが、

設定ファイルは/etc/配下に格納している。

それぞれ、awsコマンドを使う上での環境設定ファイルと、監視対象のログを記載したファイル

 

 

設定自体は問題なさそう。

原因

/etc/awslogsが最初に呼ばれるわけではない。

起動ユーザーの.awsディレクトリ配下が先に呼ばれる。

そのため、.awsディレクトリが存在していると、

ログが送れないなどの事象が発生する。

中身は[default]しか書かれていなかったが、設定ファイルが存在していた。

これが存在していたことにより、/etc/awslogsディレクトリが読み込まれず、Cloudwatchに送付できていなかったようだ。

対処

空の.awsディレクトリを削除し、awslogsを再起動

正常にcloudWatchにログが送付され、DISKの肥大化も解消した

Facebook Comments