Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

© DMM.com いつものスライド このスライドを覚えてもらうために毎回登壇しています

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

© DMM.com ECSログ基盤の変遷 CloudWatch Logs AWS化した直後 CloudWatch Logs Elasticsearch ちょっと いい感じに CloudWatch Logs +Lambda NewRelic 各種メトリクスといい感じに 並べて ハッピーだけど・・ 現実的な理想系が 出来たけど・・ CloudWatch Logs +Lambda Kinesis Data Streams NewRelic S3 Good!

Slide 7

Slide 7 text

© DMM.com 最終系に辿り着いた背景 ● DMMブックスは多くの機能をAWS上で構築しているが、全体コストに対して CloudWach Logsの費用が徐々に大きくなっていった。 ● 調べてみるとDataProcessing-Bytesが大きなコストを占めており、更に読み解くと、 PutLogEvents でありログを登録する場合にかかる費用であることも分かった。

Slide 8

Slide 8 text

© DMM.com コストが掛かっていた理由 CloudWatch Logs アプリケーション newrelic-log-ingestion CloudWatch LogsへのPutEventに多くのコストが掛かっていた ロググループ単位で集計するとアクセスログおよびアプリケーションログで多くのコストが掛かっていた。 更にログの保管ではなく登録に多くのコストが掛かっていた。 収集(データの取り込み) 0.76USD/GB 保存(アーカイブ) 0.033USD 料金

Slide 9

Slide 9 text

© DMM.com CloudWatch Logsを利用しない構成へ アプリケーション FireLens Kinesis Data Streams S3

Slide 10

Slide 10 text

© 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": "" } }, 〜〜〜 中略 ~~~~ { "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の作成

Slide 11

Slide 11 text

© DMM.com 結果 当初Kinesis FirehoseのVPCエンドポイントを作成してなかったため、 NATGatewayのコストがかさんだ。 しかし、VPCエンドポイントを作成したところ約4割減のコスト削減に繋がった。 NewRelic CloudWatch Logs +Lambda Kinesis Data Streams NewRelic S3