EC2
AmazonLinux
カスタムメトリクス
AmazonLinux2

初EC2を立てるまで
前回EC2を立てたので、EC2の初期設定を色々やっていきます。

AmazonLinux2の方を使って構築しましたが、基本的にはAmazonLinuxと同様です。
若干違うところもあるので、その辺も記載します。

とにかくアップデートはしときます。

$ sudo yum update -y

タイムゾーンの変更

$ sudo cp /etc/localtime /etc/localtime.org
$ sudo ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

ホスト名変更

これはしてもしなくてもいいですが、いつもしてます。

AmazonLinuxの方を利用している方は↓

$ sudo vi /etc/sysconfig/network
HOSTNAME=[任意に書き換え]
$ sudo reboot

AmazonLinux2を利用している方は↓の箇所を丸っと書き換え。

$ sudo vi /etc/hostname 
ip-***-***-***-***.ap-northeast-1.compute.internal
$ sudo reboot
[ec2-user@ip-***-***-***-*** ~]$ hostname
ip-***-***-***-***.ap-northeast-1.compute.internal

ip----の部分が設定すると設定したものに変わります。

カスタムメトリクス導入

メモリ使用率、ディスク使用率等は、デフォルトのままでは、CloudWatchで監視不可能です。
そこで、カスタムメトリクスを導入して、監視できるようにします。

カスタムメトリクスを実行するユーザに設置してもらえればOKです(ec2-userでなくても良い)。

必要モジュールインストール

$ sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA

カスタムメトリクス ダウンロード

$ mkdir cloudwatch
$ cd cloudwatch/
$ wget http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip
--2018-03-21 00:08:30--  http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip
Resolving aws-cloudwatch.s3.amazonaws.com (aws-cloudwatch.s3.amazonaws.com)... 52.216.0.128
Connecting to aws-cloudwatch.s3.amazonaws.com (aws-cloudwatch.s3.amazonaws.com)|52.216.0.128|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24089 (24K) [application/zip]
Saving to: ‘CloudWatchMonitoringScripts-1.2.1.zip’

100%[==========================================================================================>] 24,089       155KB/s   in 0.2s   

2018-03-21 00:08:31 (155 KB/s) - ‘CloudWatchMonitoringScripts-1.2.1.zip’ saved [24089/24089]

$ unzip CloudWatchMonitoringScripts-1.2.1.zip
Archive:  CloudWatchMonitoringScripts-1.2.1.zip
 extracting: aws-scripts-mon/awscreds.template  
  inflating: aws-scripts-mon/AwsSignatureV4.pm  
  inflating: aws-scripts-mon/CloudWatchClient.pm  
  inflating: aws-scripts-mon/LICENSE.txt  
  inflating: aws-scripts-mon/mon-get-instance-stats.pl  
  inflating: aws-scripts-mon/mon-put-instance-data.pl  
  inflating: aws-scripts-mon/NOTICE.txt  
$ rm CloudWatchMonitoringScripts-1.2.1.zip 
$ ll
total 0
drwxrwxr-x 2 ec2-user ec2-user 185 Mar 21 00:08 aws-scripts-mon 

credentials設定

AWSアカウント発行時に取得できる「Access key ID」,「Secret access key」を設定します。

$ ll
total 0
drwxrwxr-x 2 ec2-user ec2-user 185 Mar 21 00:08 aws-scripts-mon
$ vi credential
$ cat credential 
AWSAccessKeyId=************
AWSSecretKey=**************
$ chmod 600 credential 
$ ll
total 4
drwxrwxr-x 2 ec2-user ec2-user 185 Mar 21 00:08 aws-scripts-mon
-rw------- 1 ec2-user ec2-user  90 Mar 21 00:14 credential

実行

$ /home/ec2-user/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl --mem-util --swap-util --disk-space-util --disk-path=/ --aws-credential-file=/home/ec2-user/cloudwatch/credential

うまくいくと以下のように返ってきます。

[ec2-user@slackbot ~]$ /home/ec2-user/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl --mem-util --swap-util --disk-space-util --disk-path=/ --aws-credential-file=/home/ec2-user/cloudwatch/credential

Successfully reported metrics to CloudWatch. Reference Id: **********

もし以下のようなエラーがでた場合はIAMユーザの設定を疑ってみてください。

$ /home/ec2-user/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl --mem-util --swap-util --disk-space-util --disk-path=/ --aws-credential-file=/home/ec2-user/cloudwatch/credential

ERROR: Failed to call CloudWatch: HTTP 400. Message: The security token included in the request is invalid.

For more information, run 'mon-put-instance-data.pl --help'

↓非アクティブになっているとダメです。。ハマりました。
スクリーンショット 2018-03-21 0.52.13.png

↓の状態ならOKです。
スクリーンショット 2018-03-21 0.53.39.png

cron登録

5分間隔でCloudWatchに登録する設定としました。
注意は、cronに登録するときは、「--from-cron」オプションをつけましょう。

$ crontab -e
crontab: installing new crontab
$ crontab -l
*/5 * * * * /home/ec2-user/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl --mem-util --swap-util --disk-space-util --disk-path=/ --from-cron --aws-credential-file=/home/ec2-user/cloudwatch/credential

CloudWatch確認

Linuxシステムが追加されます。これを確認して登録されていればOKです。

スクリーンショット 2018-03-21 0.56.22.png

これで設定OKです。
適宜、アラート設定してください。

aws configure

AWS Cliを使用する際に必要となります。
aws configureで設定したユーザのみ有効となるので、AWS Cliを使用したいユーザがあれば対象ユーザにログインして設定してください。

regionはEC2を建てたリージョンにしてください。

$ aws configure
AWS Access Key ID [None]: **********
AWS Secret Access Key [None]: **********
Default region name [None]: ap-northeast-1
Default output format [None]: json 
$ aws ec2 describe-instances 

が動けば設定OKです。

以上です。