Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ログ収集基盤を導入したらエラーログが99%以上削減された話
Search
ryota_koshiba
July 06, 2019
Programming
1
2.7k
ログ収集基盤を導入したらエラーログが99%以上削減された話
ryota_koshiba
July 06, 2019
Tweet
Share
More Decks by ryota_koshiba
See All by ryota_koshiba
まだまだ導入するか分からないけどサービスメッシュ 聞いてきた
ryota548
3
950
Group Detection Based on User-to-User Distance in Everyday life for Office Lunch Group Recommendation
ryota548
1
93
Other Decks in Programming
See All in Programming
CSC305 Lecture 06
javiergs
PRO
0
240
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
yordgenome03
1
130
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
3
900
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
4
2.2k
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
950
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
140
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
850
CSC509 Lecture 05
javiergs
PRO
0
300
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
200
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
3
200
バッチ処理を「状態の記録」から「事実の記録」へ
panda728
PRO
0
160
チームの境界をブチ抜いていけ
tokai235
0
180
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Making Projects Easy
brettharned
120
6.4k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
The Invisible Side of Design
smashingmag
302
51k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Writing Fast Ruby
sferik
629
62k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Navigating Team Friction
lara
190
15k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
The Language of Interfaces
destraynor
162
25k
Transcript
ログ収集基盤を導入したら エラーログが99%以上削減された話 DMM.com 小芝 涼太
あなたは誰? TwitterとかQiitaとか: @_r548 DMM.com 動画配信事業部のエンジニア
DMM動画について
DMMの売り上げを支え続けてきた 20年前から続くサービス
提供しているサービスや 対応するデバイスも年々増える
もちろん技術負債もたまる
主な仕事:技術負債の返済 開発効率の向上 障害発生率を減らしコスト削減
今までやってきたこと DBの利用状況調査 (general_logから分析, Spark, EMR) 本番環境のクラウド化、コンテナ化 (GKE, Istio, Spinnaker等の技術検証中) UIパーツのコンポーネント化
(Vue.js, Storybook) ログ収集基盤の構築、運用 (EFK, KFH, Lambda)
今までやってきたこと DBの利用状況調査 (general_logから分析, Spark, EMR) 本番環境のクラウド化、コンテナ化 (GKE, Istio, Spinnaker等の技術検証中) UIパーツのコンポーネント化
(Vue.js, Storybook) ログ収集基盤の構築、運用 (EFK, KFH, Lambda) ←
これまでDMM 様々な事業部が乗っかるモノリシック (動画、電子書籍、物販などなど) ↓ 各事業部に合わせた サーバの設定ができない
アクセスログやアプリケーションログ を取得することができていなかった
1年前 事業部ごとにサーバを分離 ↓ 各事業部に合わせたサーバの設定が可能
やっとログ収集ができる!
ログ収集やろう
None
fluentdでサーバのログをAWS上の Kinesis Firehoseへ転送
S3:アクセスログ&エラーログ Elasticsearch:エラーログのみ
アクセスログは Athenaを用いて抽出できるように
エラーログはKibanaから検索できるように
None
とりあえず作った
ただ、誰も使ってくれていない
しかも 数十万件のエラーログが発生していた
どうい状況?? 数種類のログが大半を占めていそう サービスに大きな影響を与えるものではない
それにしてもノイズが多すぎる 本来みたいログが見れない 新たなエラーログを検知できない
ログ基盤の意味をなしていない
エラーログを撲滅させよう!
エラーログ撲滅の流れ
エラーログから該当するコードを調査 ↓ アクセスログからエラーログの再現性を確認 ↓ 該当箇所を修正してエラーログが出ないことを確かめる
↑この辺 エラーメッセージ毎のログをカウント
チームメンバー数人で エラーログランキングの上位から 1つ1つ潰していく地道な作業
数週間で80%ほど削減できた
それでも残り数万件が存在
ここが一番やばい
種類が多すぎるし、なかなか減らない
いつ終わんのこれ??
もっと周りを巻き込もう
事業部全体のSlackチャンネルに 毎朝エラーログの状況を投下する
None
前日のエラーログ件数を取得し、 毎朝Slackへ通知
事業部全体のSlackチャンネルに 毎朝エラーログの状況を投下する ↑エンジニア以外も含む
↑この数字がエンジニアの焦り具合を表している
いい感じ
今までなぜこんな状況になっていたか ↓ やばそうなことは分かっているが どのくらいやばいかは分からない
負債を数値化 ↓ どのくらいやばいかがやっと分かった
< 俺このエラーログ対応するわ! < じゃあ自分はこれ! < みんなでやっていこー! < やるぞー!
みんなでエラーログを撲滅させよう! ↑他事業部(インフラやビッグデータ)のエンジニアも参加
自分がやるべきこと
エラーを潰すこと ↓ ログ基盤をよりよくする
改めて、エラーログ撲滅の流れ
エラーログから該当するコードを調査 ↓ アクセスログからエラーログの再現性を確認 ↓ 該当箇所を修正してエラーログが出ないことを確かめる
エラーログから該当するコードを調査 ↓ アクセスログからエラーログの再現性を確認 ↓ 該当箇所を修正してエラーログが出ないことを確かめる
アクセスログからエラーログの再現性を確認 問題点:Athenaを利用 => AWSにログインする必要 => S3のログを基にあらかじめテーブルの作成 アクセスログの調査を全員ができない状況
None
Crawlerがログフォーマットを自動識別し Data Catalogにテーブルとして追加
RedashからAthenaを操作
自動化することで 自分の手から離れた
現在どうなっているか
当初より99.9%以上削減された
めっちゃ減った✌
エラーログが撲滅されることで どんないいことがあったか
リリースの品質向上 ユーザに影響を与える前にバグや障害を検知
他にも
負債や主要項目の通知が当たり前に SonarQubeの静的解析結果 APIのレスポンスが遅いランキング GAの主要な値(ユーザ数, CVR) その他
いい感じの流れ
ただし 握り潰されているエラーも多数存在する
今日の話はあくまでもここ 今後はここを掘り出す
まとめ - 目的は作ることではなく、使ってもらうこと - 負債の数値化、可視化で周りを巻き込む - 自分に降りかかる作業を減らすため、可能な限り自動化 今後は顕在化してないバグを掘り起こしていきたい