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
DB調査をしやすくするためのログ設計
Search
Satoshi Kaneyasu
May 24, 2024
Programming
4
520
DB調査をしやすくするためのログ設計
[第34回 中国地方DB勉強会 in 広島](
https://dbstudychugoku.connpass.com/event/316403/)での発表資料です
。
Satoshi Kaneyasu
May 24, 2024
Tweet
Share
More Decks by Satoshi Kaneyasu
See All by Satoshi Kaneyasu
AWS CodeGuruでPythonのコードを自動レビューしてもらおう
satoshi256kbyte
1
51
Gitでコンフリクトが起きたらコミットしよう
satoshi256kbyte
1
24
ワクワク状態を維持するレトロスペクティブ
satoshi256kbyte
1
87
プログラムのスタート地点はどこなのか?
satoshi256kbyte
1
60
Amazon Aurora Serverless v2が意外と高かった話と、AWS Database Migration Serviceの話
satoshi256kbyte
1
220
AWS App Runnerで気軽にAPIを作ってみるーそして、これはどんな人向けなのか?ー
satoshi256kbyte
2
300
Backlog GitとAWS CodePipelineの連携作戦 - 途中報告
satoshi256kbyte
1
94
Amazon Bedrock超入門を読んで用語整理してみた
satoshi256kbyte
3
150
初めての社外登壇と、初めての事例取材
satoshi256kbyte
1
54
Other Decks in Programming
See All in Programming
キッティングツールによる自動化でセットアップ時間を1時間から3分に短縮
mot_techtalk
2
140
How to send distibuted traces to Datadog using build own OpenTelemetry-Lambda distribution
aereal
3
110
IaCにおけるテスト考察 / Tests in IaC
linyows
2
240
ソートできるUUID v7をJavaで使うときの話
yoshiori
7
5.1k
Ruby の型に関する活動をやっている話 / Activities related to Ruby types
euglena1215
3
140
イベント駆動アーキテクチャ導入の手引きと共通の落とし穴 / Guide to Implementing Event-Driven Architecture and Common Pitfalls
nrslib
12
3.9k
開発生産性の観点から考える自動テスト(2024/06版) / Automated Test Knowledge from Savanna 202406 Findy dev-prod-con edition
twada
PRO
11
2.3k
奥が深いメールのシステム / The depth of Email system
linyows
3
190
タクシーアプリ『GO』の reCAPTCHA Enterprise 導入
mot_techtalk
1
110
リプレイスを安心安全に 〜段階的リプレイスと等価比較〜/Safe and Secure Replacement ~ Phased Replacement and Equivalent Comparison ~
shun0624
1
180
dockerの豆知識を沢山話す
mal0961
3
250
えにしテック、あるいは人間関係のエクササイズ / #enishitech-15th-anniv
kakutani
6
370
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
23
1.5k
It's Worth the Effort
3n
180
27k
Unsuck your backbone
ammeep
664
57k
Principles of Awesome APIs and How to Build Them.
keavy
122
16k
[RailsConf 2023] Rails as a piece of cake
palkan
31
4.2k
Being A Developer After 40
akosma
68
580k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
222
21k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.2k
Teambox: Starting and Learning
jrom
129
8.5k
Rails Girls Zürich Keynote
gr2m
91
13k
Building Applications with DynamoDB
mza
89
5.8k
Into the Great Unknown - MozCon
thekraken
16
1.2k
Transcript
DB調査をしやすくするための ログ設計 〜バックエンド編〜 2024.05.25 SATOSHI KANEYASU
⾃⼰紹介 ⽒名︓兼安 聡 所属︓株式会社サーバーワークス 在住︓広島(フルリモート) 担当︓DevOps、プロジェクトマネージャー 資格︓ 最近よく触るDB: Amazon DynamoDB、Amazon
Timestream、Amazon Neptune など
•最近、ベテラン–若⼿というチームをよく組みます • 中間層いません •ログ設計について、議論が必要だと思っていませんで したが、必要性を感じたので今回この話題を挙げてみ ました はじめに
•⼩中規模のWEBシステムのバックエンド •⼩⼈数、DBA1名、アプリエンジニア若⼲名 本発表のターゲット
調査の始まり • データ不整合 • レスポンス遅延 なら ユーザーからの連絡 • 負荷上昇 なら
監視機構からの通知
次のステップ 連絡の後は バックエンドのログ へ • グラフ • Performance Insights (分析機能)
を⾒てからバックエ ンドのログへ
⼩中規模だとDBの情報は活⽤しづらい ⼩中規模だと、 DBサーバーの情報は、 スキル・環境の制約に より活⽤しきれない ことが多い 馴染みが深く 制約も⽐較的ゆるい こちらの情報を充実 化した⽅が効果が⾼
い
バックエンドのログで意識すること • ログレベルを使い分ける • 更新・削除件数やトランザクションはINFOで出⼒する • SQLはDEBUGで出⼒する(またはファイルを分ける) • SQLは完成系で出⼒する •
バインド変数「︖」があるまま出⼒しない • SQLの実⾏時間を出⼒する • ログフォーマットにログインIDを含める • ログフォーマットにセッションIDやリクエストIDを含める
ログレベルを使い分ける • データの更新・削除件数を⾒て成功・失敗を判断 • パッと⾒でわからなければ⼀旦ログレベルをDEBUGにして 再現待ちにする • 正直なところ時間稼ぎの側⾯はある • トランザクションは(迷うところだが)DEBUG
SQLは完成系で出⼒する • 調査のためにバインド変数を置換するのは⾟すぎる • 抽出したSQLでデータ抽出したりEXPLAINに繋げたい • 「⼀⼿間かかる」と思われると作業を引き受けてくれる⼈が いなくなる <余談> •
ORMを使ってれば基本SQLは⼀⾏になるはずなので、SQLに 改⾏があるとベタ書きしてる︖とヒアリングするかも
ログフォーマットにIDを含める • ID=ログインID・セッションID・リクエストIDなど • IDでGrepすることで、特定ユーザーの操作や1アクション分 の操作を特定することができる • DBのグラフで時間帯特定 →バックエンドのログを⾒る →Grepして⼀連の操作を追う
→ApacheやLBのログと付き合わせて更に特定
Performance Insightsはサポートへの 問い合わせに有⽤ • Amazon RDS Performance InsightsはAmazon RDSに備 わっている分析機能
• だいぶ有効な機能だと思う • AWSサポートに問い合わせる場合、 Performance Insights の情報を⾒せてほしいと⾔われることがある • Performance Insightsは無料だと7⽇分しか保存できない これだとサポートの⽅とのやり取り中に消失してしまうの で、有料を使うのがオススメ
まとめ • ⼩中規模システムのDBだとバックエンドのログが⼤事 • ログに⼀⼿間かかると調査をしてもらえない →技術継承の⾯でもよろしくない • 本資料の内容を意識してなかった⼈は試してみてください
ありがとうございました