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
PHPアプリケーションだってモニタリングしたい / Monitoring PHP applic...
Search
Yuichi Sugiyama
PRO
October 02, 2021
Technology
1
620
PHPアプリケーションだってモニタリングしたい / Monitoring PHP application
PHPConference 2021での発表資料です。
Yuichi Sugiyama
PRO
October 02, 2021
Tweet
Share
More Decks by Yuichi Sugiyama
See All by Yuichi Sugiyama
サイボウズ と Garoon と The PHP Foundation と 私 / Cybozu and Garoon and The PHP Foundation and me
oogfranz
PRO
1
510
可能な限り確実にmkdirを成功させるには / Make mkdir
oogfranz
PRO
0
520
サイボウズ #Garoon 開発チームの 「 完成度低いの歓迎LT大会 」 PHPerKaigi出張版 / Low quality LT in PHPerKaigi 2023
oogfranz
PRO
0
540
20年ものの巨大プロダクトをKubernetesに移行している話 後日談/Garoon on Kubernetes after talk
oogfranz
PRO
0
560
20年ものの巨大プロダクトをKubernetesに移行している話/Garoon on Kubernetes
oogfranz
PRO
0
440
効果的な静的解析の CI導入パターンを求めて / Great static analysis with CI
oogfranz
PRO
3
3.6k
Dev-meets-Ops
oogfranz
PRO
1
980
GitHub力の低い僕でも、 OSSコントリビュートできたワケ / GitHub Power
oogfranz
PRO
1
580
静的解析の育て方 / How to make your static analysis strong
oogfranz
PRO
3
2.9k
Other Decks in Technology
See All in Technology
MagicPodが描くAIエージェント戦略とソフトウェアテストの未来
magicpod
0
340
Design for Failure - リージョンとAZについて
yuki_ink
0
130
【Gen-AX】20250514開催_Findyオンラインイベント_技術選定を突き詰める
genax
0
130
ITベンダーから見る内製化支援の本質/in-house-dev
slsops
1
180
UIパフォーマンス最適化: AIを活用して100倍の速度向上を実現した事例
kinocoboy2
1
680
技術選定の仕方 - FLEXYウェビナー / How to select technology
shinden
1
130
AWS LambdaをTypeScriptで動かして分かった、Node.jsのTypeScriptサポートの利点と課題
smt7174
1
250
Software Architecture in an AI-Driven World
atty303
64
27k
Why every SwiftUI developer should care about the Environment - iOSKonf25
peterfriese
0
170
Vibe Coding Tools
ijin
1
310
Platform Engineering for Private Cloud
cote
PRO
1
150
Cline&CursorによるAIコーディング徹底活用―Live Vibe Coding付き
pharma_x_tech
2
480
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Designing Experiences People Love
moore
142
24k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
620
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Gamification - CAS2011
davidbonilla
81
5.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.7k
BBQ
matthewcrist
88
9.6k
Fontdeck: Realign not Redesign
paulrobertlloyd
84
5.5k
Agile that works and the tools we love
rasmusluckow
329
21k
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
180
53k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Transcript
PHPΞϓϦέʔγϣϯͩͬͯ ϞχλϦϯά͍ͨ͠ɻ PHPConference 2021 αΠϘζגࣜձࣾɹਿࢁ ༞Ұ @oogFranz #phpcon2021 #track3
Discord Channel: #track3-2-a-php-monitor
Whoami • ਿࢁ ༞Ұ @oogFranz • αΠϘζ7ΤϯδχΞ • େاۀ͚άϧʔϓΣΞGaroon(Ψϧʔϯ) ࡞ͬͯΔ
• ෳۀδϟζϛϡʔδγϟϯ@MASHݭָஂ
αΠϘζ Garoon • େاۀ͚ͷάϧʔϓΣΞ • ੜ࢈ੑɾνʔϜϫʔΫ্ͷࢧԉ • ύοέʔδ൛ͱΫϥυ൛͕͋Δ
We're sorry for...
We're sorry for... • োʹͯ͝໎Λ͓͔͚ͨ͠Έͳ͞·ɺ͝ΊΜͳ͍͞ • ࢹɾରࡦɾௐࠪɾମ੍Λʑվળ • վળ·ͩ·ͩಓ •
αΠϘζͱGaroonΛ͘ΑΖ͓͘͠ئ͍͠·͢ • ͜ͷൃදͷάϥϑίʔυɺ෦ใΛؚ·ͳ͍Α͏ʹ͢ΔͨΊɺ ·ͨઆ໌ͷͨΊʹɺ࣮ࡍͷͷͱҰ෦ҟͳΔ͕͋Γ·͢ɻ
cybozu.comͷαϒυϝΠϯ mash.cybozu.com bluegrass.cybozu.com banana.cybozu.com monopockle.cybozu.com
cybozu.comͷαϒυϝΠϯ mash.cybozu.com bluegrass.cybozu.com banana.cybozu.com monopockle.cybozu.com Ϣʔβʔ͝ͱʹαϒυϝΠϯΛ͚ΒΕΔ
cybozu.comͷߏ • ΞϓϦέʔγϣϯΛෳͷαʔόʔ(VM)Ͱಈ͔͍ͯ͠Δ ʢΞϓϦέʔγϣϯɾσʔλϕʔεɾϑΝΠϧɾetc.ʣ • Ϛϧνςφϯτͷߏ • ෳͷαʔόʔͷηοτͰෳͷυϝΠϯΛಈ͔͍ͯ͠Δ
cybozu.comͷαϒυϝΠϯ 9 mash.cybozu.com bluegrass.cybozu.com banana.cybozu.com monopockle.cybozu.com /HJOY͕֤αΠϘζʹϦόʔεϓϩΩγ͍ͯ͠Δ
cybozu.comͷαϒυϝΠϯ mash.cybozu.com bluegrass.cybozu.com banana.cybozu.com monopockle.cybozu.com োൃੜʂ
cybozu.comͷαϒυϝΠϯ mash.cybozu.com bluegrass.cybozu.com banana.cybozu.com monopockle.cybozu.com োൃੜʂ ো͕ൃੜ͢ΔͱͲ͏ͳΔʁ
Ϣʔβʔ͔Β ి͕͘Δ
Ϣʔβʔ͔ΒిΛ͍ͨͩ͘·Ͱ ΤϯυϢʔβʔ ཧऀ ΧελϚʔαϙʔτ ։ൃνʔϜ αΠϘζ Ϣʔβʔاۀ োൃੜʂ
Ϣʔβʔ͔ΒిΛ͍ͨͩ͘·Ͱ ΤϯυϢʔβʔ ཧऀ ΧελϚʔαϙʔτ ։ൃνʔϜ αΠϘζ Ϣʔβʔاۀ ΤϯυϢʔβʔཧऀʹ͓͍߹ΘͤΛ͢Δ
Ϣʔβʔ͔ΒిΛ͍ͨͩ͘·Ͱ ΤϯυϢʔβʔ ཧऀ ΧελϚʔαϙʔτ ։ൃνʔϜ αΠϘζ Ϣʔβʔاۀ ཧऀαϙʔτʹ͓͍߹ΘͤΛ͢Δ
Ϣʔβʔ͔ΒిΛ͍ͨͩ͘·Ͱ ΤϯυϢʔβʔ ཧऀ ΧελϚʔαϙʔτ ։ൃνʔϜ αΠϘζ Ϣʔβʔاۀ αϙʔτ։ൃνʔϜʹΤεΧ͢Δ
ిͰোʹؾ͕ͭ͘·Ͱʹ • ΤϯυϢʔβʔ࣌ؒΛ͓͍ͯ͏Ұࢼͦ͏ͱߟ͑Δ͔͠Εͳ͍ • ཧऀͨ͘͞ΜͷΤϯυϢʔβʔ͔Βͷ͍߹ΘͤΛ·ͱΊͯ͘Ε͍ͯΔ͔͠Εͳ͍ • ཧऀࣗࣾଆͷͰͳ͍͔֬ೝ͔ͯ͠Β αϙʔτʹ͍߹ΘͤΑ͏ͱߟ͑Δ͔͠Εͳ͍ •
αϙʔτ࠶ݱͰ͖Δෆ۩߹͔Λௐࠪ͢Δ͕͔͔࣌ؒΔ • αϙʔτطଘͷෆ۩߹Ͱͳ͍͔Λௐࠪ͢Δ͕͔͔࣌ؒΔ • etc.
ిͰোʹؾ͕ͭ͘·Ͱʹ • ΤϯυϢʔβʔ࣌ؒΛ͓͍ͯ͏Ұࢼͦ͏ͱߟ͑Δ͔͠Εͳ͍ • ཧऀͨ͘͞ΜͷΤϯυϢʔβʔ͔Βͷ͍߹ΘͤΛ·ͱΊͯ͘Ε͍ͯΔ͔͠Εͳ͍ • ཧऀࣗࣾଆͷͰͳ͍͔֬ೝ͔ͯ͠Β αϙʔτʹ͍߹ΘͤΑ͏ͱߟ͑Δ͔͠Εͳ͍ •
αϙʔτ࠶ݱͰ͖Δෆ۩߹͔Λௐࠪ͢Δ͕͔͔࣌ؒΔ • αϙʔτطଘͷෆ۩߹Ͱͳ͍͔Λௐࠪ͢Δ͕͔͔࣌ؒΔ • etc. ։ൃνʔϜ͕োʹؾ͕ͭ͘·ͰʹλΠϜϥά͕ൃੜ͢Δ
োʹؾ͕ͭ͘ͷ͕ΕΕ • ରԠΕΔ • ෮چ·Ͱͷ࣌ؒԆͼΔ • ಉ͡োʹͨΔϢʔβʔ͕૿͑Δ • ͍߹Θͤͦͷ૿͑Δ •
ॳΊʹোʹ໘ͨ͠ϢʔβʔͣͬͱαʔϏε͕ར༻Ͱ͖ͳ͍
োʹؾ͕ͭ͘ͷ͕ΕΕ • ରԠΕΔ • ෮چ·Ͱͷ࣌ؒԆͼΔ • ಉ͡োʹͨΔϢʔβʔ͕૿͑Δ • ͍߹Θͤͦͷ૿͑Δ •
ॳΊʹোʹ໘ͨ͠ϢʔβʔͣͬͱαʔϏε͕ར༻Ͱ͖ͳ͍ ࣄޙରԠͰϢʔβʔʹ໎Λ͔͚ͯ͠·͏
োʹؾ͕ͭ͘ͷ͕ΕΕ • ରԠΕΔ • ෮چ·Ͱͷ࣌ؒԆͼΔ • ಉ͡োʹͨΔϢʔβʔ͕૿͑Δ • ͍߹Θͤͦͷ૿͑Δ •
ॳΊʹোʹ໘ͨ͠ϢʔβʔͣͬͱαʔϏε͕ར༻Ͱ͖ͳ͍ αʔϏεΛࢹͯ͠ɺোʹઌʹૣ͘ؾ͕ͭ͜͏
ͦͦোͱʁ
ϢʔβʔઢͰͷোͷྨ • ར༻Ͱ͖ͳ͍ൣғ • ͳʹ͔ͭ͑ͳ͍ • ಛఆͷػೳͷΈ • ಛఆͷૢ࡞ͷΈ •
ಛఆͷ࣌ؒଳͷΈ • ར༻Ͱ͖ͳ͍ঢ়گ • ϨεϙϯελΠϜ͕͍ • Τϥʔ͕ฦͬͯ͘Δ • εϧʔϓοτ͕Ͱͳ͍ • ఆͨ͠ಈ࡞͕ฦͬͯ͜ͳ͍
։ൃઢͰͷোͷྨ • ൃੜൣғ • શαʔϏε • ಛఆαʔόʔ • ಛఆυϝΠϯ •
ಛఆϢʔβʔ • ൃੜݪҼ • ϋʔυΣΞোʢߴෛՙɾαʔόμϯʣ • ιϑτΣΞোʢෆ۩߹ɾ༷ɾఆ֎ͷར༻ʣ • σʔλىҼͷো • ࡞ۀϛε
োͱҰޱʹݴͬͯ • Ͳͷঢ়ଶ͕োʹͳΔ͔αʔϏεʹΑͬͯҟͳΔ • ϞχλʔɾϩάɾϝτϦΫεͷݱΕํҟͳΔ
োͱҰޱʹݴͬͯ • Ͳͷঢ়ଶ͕োʹͳΔ͔αʔϏεʹΑͬͯҟͳΔ • ϞχλʔɾϩάɾϝτϦΫεͷݱΕํҟͳΔ ݕ͍ͨ͠োʹ߹ΘͤͯࢹΛ࢝ΊΑ͏
SLO (Service Level Objective) • cybozu.comʹՔಇ99.99%ͱ͍͏SLO͕͋Δɻ • ͔͠͠ͳ͕ΒɺGaroonϨϕϧͰSLOͳ͔ͬͨ • ʮGaroon͕͍ʯͱ͍͏͓͍߹Θ͕ͤ͋ͬͯɺ
োͳͷ͔ͷஅ͕͙͢ʹͰ͖ͳ͍ɻ • SREαϙʔτɺӦۀͱ͍ͬͨଞͷνʔϜͱɺ Ͳͷ͘Β͍ٸ͍ͰରԠ͖͔͢ɺͷೝ͕ࣝἧ͑ΒΕͳ͍ https://www.cybozu.com/jp/infrastructure/slo.html
ʮຖே࢝ۀޙʹϝʔϧΛ։͜͏ͱ͢ΔͱɺҰ෦ͷࣾһ͚ͩ ΊͪΌͪ͘Ό͘ͳΔͷ͚ͩͲʯ ྫ͑͜Μͳ͓͍߹Θͤ
ʮຖே࢝ۀޙʹϝʔϧΛ։͜͏ͱ͢ΔͱɺҰ෦ͷࣾһ͚ͩ ΊͪΌͪ͘Ό͘ͳΔͷ͚ͩͲʯ ྫ͑͜Μͳ͓͍߹Θͤ ಛఆͷ࣌ؒଳͷΈ
ʮຖே࢝ۀޙʹϝʔϧΛ։͜͏ͱ͢ΔͱɺҰ෦ͷࣾһ͚ͩ ΊͪΌͪ͘Ό͘ͳΔͷ͚ͩͲʯ ྫ͑͜Μͳ͓͍߹Θͤ ಛఆͷ࣌ؒଳͷΈ ಛఆͷૢ࡞ͷΈ
ʮຖே࢝ۀޙʹϝʔϧΛ։͜͏ͱ͢ΔͱɺҰ෦ͷࣾһ͚ͩ ΊͪΌͪ͘Ό͘ͳΔͷ͚ͩͲʯ ಛఆͷ࣌ؒଳͷΈ ಛఆͷૢ࡞ͷΈ ಛఆͷϢʔβʔͷΈ ྫ͑͜Μͳ͓͍߹Θͤ
ಛఆͷૢ࡞ͷΈ ಛఆͷ࣌ؒଳͷΈ ʮຖே࢝ۀޙʹϝʔϧΛ։͜͏ͱ͢ΔͱɺҰ෦ͷࣾһ͚ͩ ΊͪΌͪ͘Ό͘ͳΔͷ͚ͩͲʯ ಛఆͷϢʔβʔͷΈ ϨεϙϯελΠϜ͕͍ ྫ͑͜Μͳ͓͍߹Θͤ
ಛఆͷૢ࡞ͷΈ ಛఆͷ࣌ؒଳͷΈ ʮຖே࢝ۀޙʹϝʔϧΛ։͜͏ͱ͢ΔͱɺҰ෦ͷࣾһ͚ͩ ΊͪΌͪ͘Ό͘ͳΔͷ͚ͩͲʯ ಛఆͷϢʔβʔͷΈ ϨεϙϯελΠϜ͕͍ ྫ͑͜Μͳ͓͍߹Θͤ ΞΫηεϩάͰผͰ͖ͦ͏
cybozu.comͷΞΫηεϩά • ϩάͷղੳʹࢄΫΤϦΤϯδϯͷPresto Λ • UIͰΫΤϦΛ࣮ߦ͢ΔͨΊ Redash Λར༻͍ͯ͠Δ αΠϘζͷϩάج൫
2018൛ΑΓ https://blog.cybozu.io/entry/2018/03/19/080000
োൃੜ࣌ͷαʔόʔ͝ͱͷ ϨεϙϯελΠϜͷਪҠΛΈΔ
server 11 server 24 server 41 server 59 server
13 server 21 server 32 server 17 server 12 server 98 োൃੜ࣌ͷαʔόʔ͝ͱͷ ϨεϙϯελΠϜͷਪҠΛΈΔ
server 11 server 24 server 41 server 59 server
13 server 21 server 32 server 17 server 12 server 98 োൃੜ࣌ͷαʔόʔ͝ͱͷ ϨεϙϯελΠϜͷਪҠΛΈΔ োͩʂ
• σʔλΛঢॱʹฒͨͱ͖ʹɺશମͷN ˋͷҐஔʹ͋Δ • ֎ΕΛແࢹͯ͠େ෦ͷϢʔβʔʹͲ͏͔ͩͬͨΛݟΔͷʹ ͍͍ͯΔ • Presto ʹύʔηϯλΠϧͷ֓ࢉΛૉૣ͘ٻΊΔ͕ؔ͋Δ ύʔηϯλΠϧ
approx_percentile(response_time, 0.95)
ύʔηϯλΠϧΛͲ͜ʹઃఆ͢Δ͔ʁ • োΛݕ͢Δ͚ͩͳΒߴ͍ͷ΄͏͕ɺݕ͍͢͠ • γεςϜ͕݈શʹಈ࡞͍ͯ͠Δ͜ͱΛΓ͍ͨͷͰ͋Ε ͍ͷํ͕ద͍ͯ͠Δ͜ͱ͋Δ • ࠓͷGaroonͰ99%λΠϧͰ30ඵɺ95ˋλΠϧͰ4ඵɺ 85%λΠϧͰ2ඵɺͱ͍͏Α͏ʹઃఆ͍ͯ͠Δ
୯७ͳᮢͰোΛΈ͚ͭΒΕΔ͔ʁ • ୯७ʹᮢΛ͑ͨͱ͜Ζ͔ΒোΛݕ͠Α͏ͱ͢Δ ͱɺِཅੑ͕ଟ͘ͳΔ • ूܭൣғ͕ͤ·͍ͱগͷΞΫηεʹҾͬுΒΕͯ͠·͏ • ͘ͳΓ͍͢ΞΫηεଘࡏ͢Δ
ूܭൣғ • 95%λΠϧͰूܭൣғʹ20ΞΫηε͔͠ͳ͚Εɺ 1൪͍ΞΫηεͷ͕༻͍ΒΕΔ • ूܭൣғ͕ڱ͍ͱɺগͳ͍ΞΫηεʹҾͬுΒΕΔ • ΞΫηε͕গͳ͍߹ͦͦແࢹ͢Δͷ͋Γ
Ͳͷ࣌ؒΠϯυ෯Ͱूܭ͢Δ͔ʁ • ͍Πϯυ෯Ͱूܭ͢Δɿ • ͘͢োΛݕͰ͖Δ • ॠஅͷোݕͰ͖Δ • গͳ͍ΞΫηεʹҾͬுΒΕ ͍͢
• ͍Πϯυ෯Ͱूܭ͢Δɿ • োݕ࣌ؒʹϥά͕ͰΔ • ॠஅͷোΛݕͰ͖ͳ͘ͳΔ • গͳ͍ΞΫηεʹӨڹ͞Εͳ͘ ͳΔ
ूܭൣғ • αʔϏεશମ • αʔόʔ͝ͱ • υϝΠϯ͝ͱ • Ϣʔβʔ͝ͱ
ूܭൣғ • αʔϏεશମ • αʔόʔ͝ͱ • υϝΠϯ͝ͱ • Ϣʔβʔ͝ͱ
খ͍͞ൣғͰͷো͕ ݕ͠ʹ͍͘ খ͍͞ൣғͰͷো͕ ݕՄೳ ϊΠζ͕ଟ͘ͳΔ ϊΠζ͕গͳ͘ͳΔ
͘ͳΓ͍͢ΞΫηε • ͯ͘ͷͳ͍ΞΫηε͋Δ • ϑΝΠϧΞοϓϩʔυɾμϯϩʔυ • APIͰͷҰׅऔಘ • CSVॻ͖ग़͠ •
etc...
͘ͳΓ͍͢ΞΫηε • ͯ͘ͷͳ͍ΞΫηε͋Δ • ϑΝΠϧΞοϓϩʔυɾμϯϩʔυ • APIͰͷҰׅऔಘ • CSVॻ͖ग़͠ •
etc... ੑ࣭͝ͱʹผʑʹࢹ͢Δඞཁ͕͋Δ
োΛͣ͞ݕͰ͖Δ͔ʁ • ϨεϙϯελΠϜ͋͘·Ͱɻ • ݕ͍ͨ͠ͷϢʔβʔʹෆརӹͳঢ়گ͕ൃੜ͍ͯ͠ ͳ͍͔Ͳ͏͔ • ϢʔβʔͷͨΊʹͳΔஅج४͕ඞཁ
Apple Watch • ߴ৺ഥɾ৺ഥɾෆنଇͳ৺ഥΛ௨ͯ͘͠ΕΔ • ৺ࡉಈʹΑΔෆنଇͳ৺ഥΛૣظʹݟ͚ͭΒΕΔ͜ ͱ͕ظͰ͖Δ https://support.apple.com/ja-jp/HT208931
Apple Watch • ߴ৺ഥɾ৺ഥɾෆنଇͳ৺ഥΛ௨ͯ͘͠ΕΔ • ৺ࡉಈʹΑΔෆنଇͳ৺ഥΛૣظʹݟ͚ͭΒΕΔ͜ ͱ͕ظͰ͖Δ https://support.apple.com/ja-jp/HT208931
Apple Watch • ߴ৺ഥɾ৺ഥɾෆنଇͳ৺ഥΛ௨ͯ͘͠ΕΔ • ৺ࡉಈʹΑΔෆنଇͳ৺ഥΛૣظʹݟ͚ͭΒΕΔ͜ ͱ͕ظͰ͖Δ https://support.apple.com/ja-jp/HT208931 োݕʹ͓͍ͯɺશͳݕͳ͍ͱ೦಄ʹஔ͘ඞཁ͋Δ
োީิΛه ఆظతʹ3FEBTIͰΫΤϦΛ࣮ߦ ᮢΛӽ͑ͨΞΫηεΛ োީิͱͯ͠ه
RedashͷRefresh Schedule • Redash ͷΫΤϦΛఆظతʹ
Garoon PerformanceΞϓϦ
Garoon PerformanceΞϓϦ ͲͷαʔόʔͰͲͷ͘Β͍Քಇঢ়گ͕ѱԽ͍ͯ͠Δ͔͕Θ͔Δ
·ͱΊ • αʔόʔϨϕϧͰͳ͘ΞϓϦέʔγϣϯϨϕϧͰ ࢹΛ͡ΊΑ͏ • SLOϢʔβʔͷͨΊʹཱͯΔ • ࢹ͢Δൣғ͗ͣ͢ɾڱ͗ͣ͢ߦ͓͏ • োσʔλΛͱʹٞΛ͠Α͏
ΤϥʔΛݕ • ϦϦʔεޙʹ৽ͨͳΤϥʔ͕ൃੜ͢Δέʔε͕ଟൃ • Garoon PHPΤϥʔ͕͋Δͱɺ༧ظͤ͵Τϥʔͱ͢Δ • σʔλෆ߹ͳͲͰɺ༧ظͤ͵ΤϥʔΛશʹͳ͘͢ͷ ࠔ 9
ΤϥʔͷൃੜΛϩάʹه • Τϥʔൃੜ࣌ Header ʹ Τϥʔ൪߸Λه • Nginx ͰΞΫηεϩάʹు͘Α͏ʹ͢Δ •
RedashͰͷղੳ͕ՄೳʹͳΔ 9
৽ͨͳΤϥʔΛݕ 9 ఆظతʹΫΤϦΛ࣮ߦ ͍··Ͱݕͨ͜͠ͱͷͳ͍ Τϥʔ͕͋ͬͨΒLJOUPOFʹొ