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.5k
ログ収集基盤を導入したらエラーログが99%以上削減された話
ryota_koshiba
July 06, 2019
Tweet
Share
More Decks by ryota_koshiba
See All by ryota_koshiba
まだまだ導入するか分からないけどサービスメッシュ 聞いてきた
ryota548
3
910
Group Detection Based on User-to-User Distance in Everyday life for Office Lunch Group Recommendation
ryota548
1
90
Other Decks in Programming
See All in Programming
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.2k
距離関数を極める! / SESSIONS 2024
gam0022
0
320
イベント駆動で成長して委員会
happymana
1
350
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
320
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
260
Laravel や Symfony で手っ取り早く OpenAPI のドキュメントを作成する
azuki
2
130
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
380
as(型アサーション)を書く前にできること
marokanatani
10
2.9k
PaaSとSaaSの境目で信頼性と開発速度を両立する 〜TROCCO®︎のこれまでとこれから〜
gtnao
5
3.7k
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
130
見せてあげますよ、「本物のLaravel批判」ってやつを。
77web
7
7.9k
Tauriでネイティブアプリを作りたい
tsucchinoko
0
390
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Being A Developer After 40
akosma
87
590k
Teambox: Starting and Learning
jrom
133
8.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Designing Experiences People Love
moore
138
23k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Embracing the Ebb and Flow
colly
84
4.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
GraphQLとの向き合い方2022年版
quramy
43
13k
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) その他
いい感じの流れ
ただし 握り潰されているエラーも多数存在する
今日の話はあくまでもここ 今後はここを掘り出す
まとめ - 目的は作ることではなく、使ってもらうこと - 負債の数値化、可視化で周りを巻き込む - 自分に降りかかる作業を減らすため、可能な限り自動化 今後は顕在化してないバグを掘り起こしていきたい