CloudWatchログ

NO IMAGE

こんにちは、

先日、娘の10歳の誕生日でしたので、誕生日ケーキを作ってプレゼントしました。

といっても、ロールケーキを中心に、

いろんなフルーツを切って、ちょっとデコレーションしただけなんですが、

喜んでくれたので、ニヤニヤしていたパパヤマです。

 

AWSには、さまざまなサービスがありますが、

 

今回、「CloudWatch」を使ってみましたので、備忘録も兼ねてご紹介します。

 

CloudWatchとは、平たく言えばAWSが提供するクラウドサーバ監視サービスです。

 

サーバの運用といえば、やはり「監視」をどう実現するかも重要ですね。

このCloudWatchサービスは、

例えば、「CPUが5分間に渡って使用率50%を超えたら、メールで通知する」といったことが

簡単に設定できるサービスで、別途監視ツールなどをインストールしておく必要がなく、

非常に手軽に、且つ安く始められます。

 

そして、サーバ運用となると、「ログ」の監視も重要です。

何かトラブルがあった時、SSHでサーバへログインし、対象サービスのログを探し、

一つ一つログを見て追っていく、という作業など、一刻も早く解決しないといけない場合は大変ですね。

 

また、ログを見ながら、例えば原因の特定のために「キーワード」で検索するかもしれません。

予めそういったエラーの原因になりそうなキーワードがログに含まれていることがわかれば、

エラーの原因特定まで、非常にスムースにいきそうです。

 

そこで使用すべきサービスが、「CloudWatch Log」です。

 

「CloudWatch Log」の良いところ

  1. AWSのコンパネからすぐに、アプリのログを閲覧できる
  2. 特定文字が含まれている場合など、フィルターし易い
  3. 予めフィルターを作っておき、さらにそのフィルター結果に対してメール通知ができる

 

3はまだ、試していないのでまだ良くわかっていません、すみません。

(通常のCloudWatchでのメール通知は試しています)

 

このCloudWatchLogの導入手順を詳しく書こうかと思ったのですが、

 

http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/DeveloperGuide/QuickStartEC2Instance.html

 

こちらの公式ドキュメント通りに実施して頂ければ、3分で出来ます。

 

ポイントだけさら~っと書いていきます。

<1>

CloudWatchログに関する権限を持ったIAMユーザを作る。

あるいは、既存のIAMユーザに該当権限を付与する。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:*:*:*"
            ]
        }
    ]
}

 

<2>

yum install awslogs

でインストールした後に、

/etc/awslogs/awslogs.conf

に、監視対象とするログファイルを設定する

 

<3>

/etc/awslogs/awscli.conf

にさきほどのIAMユーザのアクセスIDとキーを設定する

リージョンには、ap-northeast-1を設定できるぽいです。

 

 

こんな感じでだいたい3ステップです。

あとはCloudWatchの画面でログを開いて、閲覧できるか確認しましょう。

 

 

その他、気になった点もピックアップさせて頂きます。

 

1)ローテートされたログの閲覧にも対応できる

 awslogs.confの「file」に、/usr/local/apache/logs/access_log*

 などのようにワイルドカードに対応しています。

 このように書けば、ローテートされた最新ログファイルが監視の対象となります。

 

2)でも、hogehoge.YYYYMMDD.logのようなファイルには対応できない

 ファイル後方のマッチングにしか対応していない?のかわからないですが、

 なぜか反応しませんでした。

 これは、私のやり方が良くない可能性もありますので、後日さらに調べてみます。

 ドキュメントに載ってるかも。

 ⇒ログファイル名によっては、CloudWatchLogに対応できないかもしれませんね。

 

⇒awslogsサービスを再起動したら問題なくいけたようです :(

 

 

3)log_group_name:クライアント名、log_stream_name:ログ名として運用

 弊社の場合は、このように命名して運用しています。

 実際の運用に合わせて命名すれば、良いと思います。

 

皆様もステキなCloudWatchLogライフをお過ごしください。