LINEで送る
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とサブスクリプションフィルターの形式は適宜変更しましょう。

LINEで送る
Pocket

カテゴリー: AWSTerraform

adachin

1989年生まれのLancers SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。好きなツールはAnsible,Terraform,CircleCIで、ECS/Fargateでのインフラ構築を得意とする。副業では数社サーバー保守とベンチャー企業のインフラ改善やMENTAで未経験者にインフラのコーチングを実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、ECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

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