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
650
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
560
可能な限り確実にmkdirを成功させるには / Make mkdir
oogfranz
PRO
0
640
サイボウズ #Garoon 開発チームの 「 完成度低いの歓迎LT大会 」 PHPerKaigi出張版 / Low quality LT in PHPerKaigi 2023
oogfranz
PRO
0
650
20年ものの巨大プロダクトをKubernetesに移行している話 後日談/Garoon on Kubernetes after talk
oogfranz
PRO
0
590
20年ものの巨大プロダクトをKubernetesに移行している話/Garoon on Kubernetes
oogfranz
PRO
0
490
効果的な静的解析の CI導入パターンを求めて / Great static analysis with CI
oogfranz
PRO
3
3.9k
Dev-meets-Ops
oogfranz
PRO
1
1k
GitHub力の低い僕でも、 OSSコントリビュートできたワケ / GitHub Power
oogfranz
PRO
1
640
静的解析の育て方 / How to make your static analysis strong
oogfranz
PRO
3
3.1k
Other Decks in Technology
See All in Technology
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
280
Claude Codeを使った情報整理術
knishioka
16
11k
202512_AIoT.pdf
iotcomjpadmin
0
180
Redshift認可、アップデートでどう変わった?
handy
1
120
Scrum Guide Expansion Pack が示す現代プロダクト開発への補完的視点
sonjin
0
220
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
2
310
Introduction to Bill One Development Engineer
sansan33
PRO
0
340
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
「エッジ×分散生成AI」の技術と変わる産業、そしてITの未来
piacerex
0
100
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
140
Digitization部 紹介資料
sansan33
PRO
1
6.4k
アラフォーおじさん、はじめてre:Inventに行く / A 40-Something Guy’s First re:Invent Adventure
kaminashi
0
210
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
34
Visualization
eitanlees
150
16k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
Between Models and Reality
mayunak
1
150
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
The browser strikes back
jonoalderson
0
280
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
120
The Pragmatic Product Professional
lauravandoore
37
7.1k
Making Projects Easy
brettharned
120
6.5k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.3k
Test your architecture with Archunit
thirion
1
2.1k
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ʹొ