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
570
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
450
可能な限り確実にmkdirを成功させるには / Make mkdir
oogfranz
PRO
0
450
サイボウズ #Garoon 開発チームの 「 完成度低いの歓迎LT大会 」 PHPerKaigi出張版 / Low quality LT in PHPerKaigi 2023
oogfranz
PRO
0
510
20年ものの巨大プロダクトをKubernetesに移行している話 後日談/Garoon on Kubernetes after talk
oogfranz
PRO
0
510
20年ものの巨大プロダクトをKubernetesに移行している話/Garoon on Kubernetes
oogfranz
PRO
0
390
効果的な静的解析の CI導入パターンを求めて / Great static analysis with CI
oogfranz
PRO
3
3.5k
Dev-meets-Ops
oogfranz
PRO
1
920
GitHub力の低い僕でも、 OSSコントリビュートできたワケ / GitHub Power
oogfranz
PRO
1
520
静的解析の育て方 / How to make your static analysis strong
oogfranz
PRO
3
2.7k
Other Decks in Technology
See All in Technology
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
990
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
150
Lambdaと地方とコミュニティ
miu_crescent
2
370
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
500
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
200
The Rise of LLMOps
asei
7
1.5k
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Rails Girls Zürich Keynote
gr2m
94
13k
Gamification - CAS2011
davidbonilla
80
5k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Optimizing for Happiness
mojombo
376
70k
It's Worth the Effort
3n
183
27k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
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ʹొ