Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ログ基盤をCloudWatchLogからNewRelic Logs + S3に変えたら 利便性も上がってコストも下がった話

ログ基盤をCloudWatchLogからNewRelic Logs + S3に変えたら 利便性も上がってコストも下がった話

72328eacb3f08064170cfec86b728d2a?s=128

ono-hiroshi1

June 16, 2022
Tweet

More Decks by ono-hiroshi1

Other Decks in Technology

Transcript

  1. © DMM.com ログ基盤をCloudWatchLogからNewRelic Logs + S3に変えたら 利便性も上がってコストも下がった話 合同会社 DMM.com SRE部

    小野 博志
  2. © DMM.com 自己紹介 2 小野 博志 / Ono Hiroshi 合同会社DMM.com

    ITインフラ本部 SRE部 エンジニアリング マネージャー 2005年に新卒で中小独立系Sierに入社。Javaを使ったWeb系開発に従事。 2008年よりMSP(マネージド・サービス・プロバイダ)の業務に従事。アカウントSEから始まり、サービス企画や テクニカルディレクターを務める。エンタープライズの領域で大規模なコーポレートサイト、WebCMSを中心とし て担当していた。 2018年よりB2Cもやってみようかなって思って2020年にDMM.comに入社。DMMブックスやNewRelicの導 入推進を主に担当しています。 たまに山登りしてます
  3. © DMM.com いつものスライド このスライドを覚えてもらうために毎回登壇しています

  4. © DMM.com 話題のコミックや小説などを パソコンやスマホで 読めるプラットフォーム コミック、雑誌、小説、写真集等の電子書籍を配信しております。現在は 67万冊以上の作品を取り揃えており さまざまなジャンルの作品を提供しています。

  5. © DMM.com 本日の内容はSRE NEXT 2022で話した内容と 同じなのでご覧になった方は休憩時間です

  6. © DMM.com ECSログ基盤の変遷 CloudWatch Logs AWS化した直後 CloudWatch Logs Elasticsearch ちょっと

    いい感じに CloudWatch Logs +Lambda NewRelic 各種メトリクスといい感じに 並べて ハッピーだけど・・ 現実的な理想系が 出来たけど・・ CloudWatch Logs +Lambda Kinesis Data Streams NewRelic S3 Good!
  7. © DMM.com 最終系に辿り着いた背景 • DMMブックスは多くの機能をAWS上で構築しているが、全体コストに対して CloudWach Logsの費用が徐々に大きくなっていった。 • 調べてみるとDataProcessing-Bytesが大きなコストを占めており、更に読み解くと、 PutLogEvents

    でありログを登録する場合にかかる費用であることも分かった。
  8. © DMM.com コストが掛かっていた理由 CloudWatch Logs アプリケーション newrelic-log-ingestion CloudWatch LogsへのPutEventに多くのコストが掛かっていた ロググループ単位で集計するとアクセスログおよびアプリケーションログで多くのコストが掛かっていた。

    更にログの保管ではなく登録に多くのコストが掛かっていた。 収集(データの取り込み) 0.76USD/GB 保存(アーカイブ) 0.033USD 料金
  9. © DMM.com CloudWatch Logsを利用しない構成へ アプリケーション FireLens Kinesis Data Streams S3

  10. © DMM.com 作り方はとっても簡単 { "Action": "firehose:PutRecordBatch", "Effect": "Allow", "Resource": "arn:aws:firehose:*:*:deliverystream/*",

    "Sid": "" }, ECSに権限付与 ECS taskにログルータの追加 "logConfiguration": { "logDriver": "awsfirelens", "options": { "Name": "firehose", "region": "ap-northeast-1", "delivery_stream": "<kinesisの名前 >" } }, 〜〜〜 中略 ~~~~ { "name": "log-router", "image": "906394416424.dkr.ecr.ap-northeast-1.amazonaws.com/aws-for-fluent-bit:latest", "essential": true, "firelensConfiguration": { "type": "fluentbit" }, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "${SERVICE_NAME}-log-router", "awslogs-region": "ap-northeast-1", "awslogs-stream-prefix": "firelens" } } } Kinesisの作成 NewRelicのプリセットが存在 おまけ ログ送信量が多い場合はKinesisの Burffer hintsをチューニングが入ります Kinesis エンドポイント VPCEndpointの作成
  11. © DMM.com 結果 当初Kinesis FirehoseのVPCエンドポイントを作成してなかったため、 NATGatewayのコストがかさんだ。 しかし、VPCエンドポイントを作成したところ約4割減のコスト削減に繋がった。 NewRelic CloudWatch Logs

    +Lambda Kinesis Data Streams NewRelic S3