CloudWatchとSNSを使う

  • CloudWatchを使ってインスタンスのリソース情報を確認する
  • カスタムメトリクスを使ってNginxのアクセスログを収集する

CloudWatchを使ってインスタンスのリソース情報を確認

(ex)
CPUUtilization <instance_id>
NetworkIn <instance_id>
DiskReadOps <instance_id>
aws-devops-fig aws-devops-fig
  • AWS-CLIでCloudwatchのメトリクスを取得する
aws cloudwatch get-metric-statistics --metric-name CPUUtilization --start-time 2016-10-27T21:00:00 --end-time 2016-10-28T22:00:00 --period 3600 --namespace AWS/EC2 --statistics Maximum --dimensions Name=InstanceId,Value=<instance-id>
{
    "Datapoints": [
        {
            "Timestamp": "2016-10-28T12:00:00Z",
            "Maximum": 1.33,
            "Unit": "Percent"
        },
        {
            "Timestamp": "2016-10-28T11:00:00Z",
            "Maximum": 0.68,
            "Unit": "Percent"
        },
        {
            "Timestamp": "2016-10-28T13:00:00Z",
            "Maximum": 0.68,
            "Unit": "Percent"
        }
    ],
    "Label": "CPUUtilization"
}

カスタムメトリクスを使ってNginxのアクセスログを収集

  • TimeZoneを変更する
    • cp /usr/share/zoneinfo/Japan /etc/localtime
    • /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=true
# yum -y update
# yum install -y awslogs
# service awslogs start

NginxのAccessログをCloudWatchに登録してみる

  • /etc/awslogs/awslogs.conf
aws_access_key_id = ${aws_access_key_id}
aws_secret_access_key = ${aws_secret_access_key}


[/var/log/nginx/access.log]
datetime_format = %b %d %H:%M:%S 
file = /var/log/nginx/access.log*
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = Nginx_Access_Log
time_zone = LOCAL
  • 実際に登録されているかを確認する
aws-devops-fig

SNSを使ってCloudWatchからE-mailで通知を飛ばしてみる

aws-devops-fig aws-devops-fig
  • 通知の部分にSNSで作ったTopicsを選択して通知先を入力する
aws-devops-fig
  • 【結果】 CloudWatchにアラートとして上がり、メールも受信できた