2
1

More than 5 years have passed since last update.

aws-cli + jq でロードバランサー(ELB, ALB)のロギング設定を確認する

Last updated at Posted at 2017-04-16

遭遇した課題

AWSではロードバランサー(ELB, ALB)のアクセスログをS3上に保存することができるわけですが、将来のことをあまり良く考えずに場当たり的に設定した結果、以下のような課題にぶち当たりました。
起動しているロードバランサーが数台であれば、WEB管理画面からポチポチ確認すれば良いのですが、10台超えたあたりからしんどくなってきます。。。

  • そもそもアクセスログ有効になってるのか?
  • どのS3バケットのどんなパスに保存しているのか?

そこで、以下のように aws-cli + jq を使うといくらか苦痛が緩和されました。

手順

ELB の場合

実行したコマンド

$ aws elb describe-load-balancers | jq -r '.LoadBalancerDescriptions[].LoadBalancerName' > /tmp/elb-names.txt

$ cat /tmp/elb-names.txt | while read NAME \
do \
echo $NAME \
aws elb describe-load-balancer-attributes --load-balancer-name=$NAME \
| jq '.LoadBalancerAttributes.AccessLog | "s3://\(.S3BucketName)/\(.S3BucketPrefix)"' \
echo \
done

出力例

# ロギング設定なし
elb-hogehoge1
"s3://null/null"

elb-hogehoge2
"s3://bucket2/prefix"

elb-hogehoge3
"s3://bucket2/prefix"

ALB の場合

実行したコマンド

$ aws elbv2 describe-load-balancers | jq -r '.LoadBalancers[].LoadBalancerArn' > /tmp/alb-arns.txt

$ cat /tmp/alb-arns.txt | while read ARN \
do \
echo $ARN | cut -d'/' -f3 \
aws elbv2 describe-load-balancer-attributes --load-balancer-arn $ARN \
| jq '"s3://\(.Attributes[] | select(.Key=="access_logs.s3.bucket").Value)/\(.Attributes[] | select(.Key=="access_logs.s3.prefix").Value)"' \
echo \
done

出力例

# ロギング設定なし
alb-hogehoge1
"s3:///"

alb-hogehoge2
"s3://bucket2/prefix"

alb-hogehoge3
"s3://bucket3/prefix"
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1