Pocket

[AWS][Python]CloudWatch LogsをLambdaで定期的にS3へエクスポートする

上記のように、今までCloudWatch Logsの各ログらはLambdaを使ってS3に定期的にエクスポートをしていましたが、そもそもPythonのバージョンアップなどやメンテナンスがしにくいということから、今回はECSのログやRDSのスロークエリログ(CloudWatch Logs)Amazon Kinesis Data Firehoseで同様のことを実装してみました。Terraform化すると非常に便利なので試してみるといいでしょう!


構成


Amazon Kinesis

  • S3 bucket
    ・logs.adachin.com
  • Prefix
    ・/hoge/log/hoge-app/!{timestamp:yyyy-MM-dd/}

    ・/hoge/rds/cluster_hoge/audit/!{timestamp:yyyy-MM-dd/}
  • Error prefix :
    ・/hoge-log/hoge-app/result=!{firehose:error-output-type}/!{timestamp:yyyy-MM-dd/}
    ・/hoge/rds/cluster_hoge/audit/result=!{firehose:error-output-type}/!{timestamp:yyyy-MM-dd/}
  • Buffer conditions
    ・10 MiB or 300 seconds
  • Compression
    ・GZIP
  • Encryption
    ・Disabled

CloudWatch Logs

  • subscription filter
  • log_group_name
    ・/ecs/app
    ・/aws/rds/cluster/hoge/slowquery

Resource: aws_kinesis_firehose_delivery_stream

https://www.terraform.io/docs/providers/aws/r/kinesis_firehose_delivery_stream.html


Terraform

  • iam.tf

  • files/assume_role_policy/firehose_delivery_role_policy.json

  • files/assume_role_policy/kinesis_access_s3_logs_bucket.json

  • files/assume_role_policy/kinesis_basic_role_policy.json

  • files/assume_role_policy/kinesis_allow_deliverystreams.json

上記の xxxxxxxxxx はAWSのアカウントIDを指定してください。

  • variables.tf

  • kinesis.tf

joinelement により設定ファイルを重複して書くことがないよう、variables.tfで管理するようにしています。


確認

  • Kinesis Data Firehose delivery streams

  • s3

  • Download log

まとめ

Lambdaで書く工数がなくなったので、良き!ただ、S3に保存されているファイルはgzで圧縮されているのでファイル名をgzに変えてjqコマンドで確認という工程を忘れそうだな。。
Prefixとサブスクリプションフィルターの形式は適宜変更しましょう。

※以下はログ自体をLTSV形式にする方法なので、生ログで管理したい場合は参考にしてみてください。

[AWS][Terraform]CloudWatch LogsのアクセスログをLambdaでLTSV形式に変換してKinesisでS3に保存する

Pocket

カテゴリー: AWSTerraform

adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください