AWS環境の設定内容を確認する簡単なツールです。 コマンド実行後、OK/NGの数をカンマ区切りで出力します。
- コマンド実行例
$ コマンド
OKカウント数,NGカウント数
$
この実行結果をMackerelのサービスメトリックに投稿し、可視化/監視するような利用方法を想定しています。(=Mackerelに投げつけるため、ビルドしたコマンドをbash等でラップする想定)
ELB(CLB)にEC2が紐付けられていればOKにカウント、1台もEC2が紐付けられていない場合はNGにカウント。
引数に指定したEC2メトリックのCloudwatchアラームのステータスをOKの場合はOKにカウント、ALARMの場合はNGにカウント。
availableのEBSボリュームをNGにカウント。available以外はOKにカウント。
AMI作成時に取得したSnapshotで、基となるAMIが存在しない場合はNGにカウント。 AMIが存在する場合はOKにカウント。
引数に指定したタグがSnapshotに設定されていたらOKにカウント。設定されてなければNGにカウント。
EBSボリュームの「Delete on Terminate」が設定されてなかったらNGにカウント。 設定されていればOKにカウント。
引数に指定したタグがEBSボリュームに設定されていたらOKにカウント。設定されてなければNGにカウント。
EC2のLaunchTimeが引数に指定した時刻より古ければNGにカウント。若ければOKにカウント。
引数に指定したタグがEC2に設定されていたらOKにカウント。設定されてなければNGにカウント。
関連付けされていないEIPをNGにカウント。関連済みはOKにカウント。
$ go get github.com/suzukiyuzs/aws-check-tools
$ cd $GOPATH/src/github.com/suzukiyuzs/aws-check-tools
$ cd << サブディレクトリ >>
$ go build .
※Check-EBS-SnapshotAmi/main.go, Check-EBS-SnapshotTag/main.goはビルド前にAWSアカウントIDの修正が必要。 ※リージョンをハードコーディングしているので「ap-northeast-1」以外の場合はregionの値も変更が必要です。
以下IAMポリシーをコマンド実行前に作成し、コマンド実行時のIAMユーザーに適用、またはインスタンスプロファイルに設定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeImages",
"elasticloadbalancing:DescribeLoadBalancers",
"ec2:DescribeInstances",
"ec2:DescribeAddresses",
"ec2:DescribeVolumes",
"cloudwatch:DescribeAlarms",
"ec2:DescribeSnapshots"
],
"Resource": "*"
}
]
}
以下は、AWSのAccess Key、Secret Access Keyは「aws configure」で設定済みの環境を想定した実行例です。
$ ./Check-CLB-RegisteredInstances
20,4
$
$ ./Check-Cloudwatch-EC2Alarm CPUUtilization
10,1
$
$ ./Check-EBS-AvailableVolume
91,15
$
$ ./Check-EBS-SnapshotAmi
120,88
$
./Check-EBS-SnapshotTag Name
6,210
$
$ Check-EBS-VolumeDeleteFlag
90,1
$
./Check-EBS-VolumeTag Name
39,67
$
$ ./Check-EC2-LaunchTime 2018-12-01T00:00:00
63,18
$
$ ./Check-EC2-Tag Stack
54,27
$
$ ./Check-EIP-Association
55,1
$