初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'
###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です。
これで設定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です。
以上です。