3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CloudWatchの空になったロググループ削除

Last updated at Posted at 2019-08-08

問題

ログはカスタムsyslogサーバで集めていた。EBはもちろん下位インスタントのログも無理やり転送していた。特に負荷問題はないし、カッコウわるいけど、まーいいかの状態だった。
それが・・・もやは、CloudWatchはシステム構成の必須サービスになっている。何にしろログサーバとしてEC2単体運用はよろしくないので徐々にCloudWatchに移動することに。

そこで・・・EBの場合、ログ設定項目の[保持期間]、[ライフサイクル]によって環境のリタイヤと同時に掃除されると思ったら・・・
CloudWatchのログファイルは消えるが、フォルダのような[ロググループ]や[ログストリーム]はそのまま残るのではないか。
EBはスワップで頻繁にリリースするので過去環境の[ロググループ]が大量に残っていた。
ググっても大した情報はなかった。いくぞ!Lambdaよ。

関数コード

Python3.7
import json
import boto3
import time

def lambda_handler(event, context):
    curTime = int(time.time())

    client = boto3.client('logs')
    pagenator = client.get_paginator('describe_log_groups')
    page_iterator = pagenator.paginate()
    
    for grps in page_iterator:
        for grp in grps["logGroups"]:
            grpName = grp["logGroupName"]
            storedBytes = grp["storedBytes"]
            creationTime = grp['creationTime']

            #新規ログテーブルはまだデータがない場合もあるため作成日14日以上を対象とする        
            useDays = int((curTime - (creationTime / 1000)) / (24 * 3600))

            #print(grpName, curTime, creationTime, f"useDays:${useDays}", f"storedBytes:${storedBytes}")
        
            if useDays >= 14:
                if storedBytes < 1:
                    print("DEL " + grpName + ": " + str(storedBytes) + "byte")

                    res = client.delete_log_group(
                        logGroupName = grpName
                    )

    return {
        'statusCode': 200,
        'body': json.dumps("OK")
    }
  • 設定
  • タイムアウト: デフォルト3秒ではタイムアウトになるので30秒程度に。
  • CloudWatch Events: cron(0 13 * * ? *) 一日1回で十分。

参考

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?