Practical Monitoring For Server Side Devs

Practical Monitoring For Server Side Devs

「サーバーサイドエンジニアこそ喜んで監視をやろうよ、良い事あるよ」という話をしました

C90bac78c0fb61105cfd8239767f903d?s=128

hideki kinjyo

March 20, 2019
Tweet

Transcript

  1. ؂ࢹͱฏ࿨ Connehito Marché vol.5 ʙPHPࢢʙ Hideki Kinjyo twitter: @o0h_ /

    github: o0h
  2. ࣗݾ঺հ • ίωώτגࣜձࣾ • αʔόʔαΠυΤϯδχΞ • ओʹCakePHPͳͲ

  3. ಥવͰ͕͢ʂ

  4. ͜͜ʹ1ͭͷάϥϑ͕͋Γ·͢ʂ ԿͰ͠ΐ͏ʁ

  5. ࢲͷମॏͰͨ͠☺ ϛϧϛϧݮ͍ͬͯͬͨΜͰ͢Ͷ͐ʙ

  6. (ΊͬͪΌ૫ͤͨΜ͢Α)

  7. ᩵೑Λམͱ͢ͷͬͯ
 େมͰ͢ΑͶʂ

  8. ෆ҆ͱͷઓ͍͔ͩΒɻ ͳΜͰେมͳͷʁ

  9. ڪාɺෆ҆ఆ ෆ҆ͱ͸

  10. ෼͔ΔྖҬΛ֦େ͢Δ = ʮෆ҆ʯ͸ʮ҆৺ʯ΁ ཪΛฦͤ͹

  11. ۚݴ: ʮਪଌ͢ΔͳɺܭଌͤΑɻʯ

  12. ۚݴ: ʮਪଌ͢ΔͳɺܭଌͤΑɻʯ ݮྔ΋ಉ͡ʂ

  13. ʮମॏΛߜΔʯͱ͸ɾɾ • ߴ͍ཧ૝ • “અ੍”͕ળɺΈ͍ͨͳࢥ૝ • ෆ͕҆͋ΓετϨε͕͋Δઓ͍ɾɾɾ

  14. ʮମॏΛߜΔʯͱ͸ɾɾ • ߴ͍ཧ૝ • “અ੍”͕ળɺΈ͍ͨͳࢥ૝ • ෆ͕҆͋ΓετϨε͕͋Δઓ͍ɾɾɾ ਏ͘ͳ͍Ͱ͔͢ɾɾʁ

  15. ࢲ͕΍ͬͨ͜ͱ ʮઁऔcalʯ ʔʮফඅcalʯ ܭଌ

  16. ͳΜͰɺࢲ͕ݮྔΛ!? • ཧ૝ɾΰʔϧ Λ ໌֬ʹ͢Δɻ • ʮઁऔΧϩϦʔ - ӡಈྔʯΛ-1,500kcalʹอͭ •

    ޮՌతͳܭଌ͕ʮͻͨ͢Βਏ͍ʯʹର͢Δ෢ثʹͳΔ • ޮՌతͳKPI: KGI௚݁ͷϝτϦΫεͷઃఆ • ࡉ͔͍ϑΟʔυόοΫ: ΧϩϦʔऩࢧ͸ຖ೔Θ͔Δɻ
  17. ͳΜͰɺࢲ͕ݮྔΛ!? • ཧ૝ɾΰʔϧ Λ ໌֬ʹ͢Δɻ • ʮઁऔΧϩϦʔ - ӡಈྔʯΛ-1,500kcalʹอͭ •

    ޮՌతͳܭଌ͕ʮͻͨ͢Βਏ͍ʯʹର͢Δ෢ثʹͳΔ • ޮՌతͳKPI: KGI௚݁ͷϝτϦΫεͷઃఆ • ࡉ͔͍ϑΟʔυόοΫ: ΧϩϦʔऩࢧ͸ຖ೔Θ͔Δɻ ʮܭଌՄೳʯͳঢ়ଶ͕ɺେ͖ͳ҆৺ײΛ΋ͨΒ͢
  18. • ϓϩάϥϛϯάͱಉ͡Ͱ͢Ͷʁ • αʔϏε؂ࢹͱಉ͡Ͱ͢Ͷʁ ͋ΕɺίϨͬͯɾɾʂ

  19. ʮΘ͔Δʯ=ʮ҆৺ײʯ • ʮઁऔΧϩϦʔʯͱʮফඅΧϩϦʔʯΛ஌Ε ͹ɺϥʔϝϯ͸ා͘ͳ͍ • ʮαʔϏε͕ಈ͍͍ͯΔʯͱ͍͏֬৴͕΋ͯ Ε͹ɺσϓϩΠ͸ා͘ͳ͍

  20. ϥʔϝϯ৯΂ͨ͘ͳ͍Ͱ͔͢ʁ

  21. ͡Ό͋ʮ؂ࢹʯΛ
 ΍͍͖ͬͯ·͠ΐ͏Ͷɾɾʂ

  22. (͜͜·Ͱલஔ͖)

  23. ຊ೔͓࿩͢Δ͜ͱ • ΈΜͳͰ؂ࢹΛ΍Ζ͏ • αʔόʔαΠυDevͱ؂ࢹ

  24. PART1: ʮೖ໳ ؂ࢹʯΛಡΈ·ͨ͠ɻ

  25. ʮೖ໳ ؂ࢹʯ • 1݄ʹग़ͨຊ • Ξϯνύλʔϯ = “͋Δ ͋Δ”ͱɺཱͪ޲͔͍ํ •

    ྔతʹ΋ίϯύΫτͰɺ จষ΋ಡΈ΍͍͢˕
  26. ձࣾͷϒϩάͰ΋ॻ͖·ͨ͠ʂ
 http://tech.connehito.com/entry/practical- monitoring

  27. ͱʹ͔͘ɺίί͚ͩ཈͍͑ͨʂ ᶃ ؂ࢹ͸໾ׂͰ͸ͳ͘εΩϧ ᶄ αʔϏε͕ಈ͍͍ͯΔ͔Λ؂ࢹ͢Δ ᶅ ؂ࢹ͸ҭͯΔ΋ͷ

  28. ᶃ ؂ࢹ͸໾ׂͰ͸ͳ͘εΩϧ

  29. ؂ࢹ͸୭ͷ΋ͷ͔ʁ • ʮ؂ࢹ͢Δਓʯ͸ɺ
 ʮ؂ࢹ܎ʯͰ΋ʮΠϯϑϥΤϯδχΞʯͰ΋ͳ͍ • ʮαʔϏεͷશମɾ࢔ࡉΛ஌Δʯ͸ແཧʂ • օ͕ͦΕͧΕʮ஌͍ͬͯΔ͜ͱʯΛ
 ίϥϘϨʔγϣϯͰ͖ͨΒྑ͍ΑͶ •

    ։ൃɾӡ༻ʹܞΘΔશһ͕ࣗ෼͝ͱԽ͢Δɻ
 ʮࣗ෼͕࡞ͬͨ΋ͷʹର͢Δ੹೚ʯ
  30. ݴ͍͍ͨ͜ͱ͸Θ͔Δ͚Ͳ͞ʙ ʮࣗ෼͝ͱԽʯͬͯͶʙɻ ͦΕͬͯɺֆۭࣄ͡Όͳ͍ͷʙʁ ΋͏े෼๩͍͠ΜͰ͕͢ʔʂ

  31. ר͖ࠐ΋͏ɻ

  32. ʮશһ؂ࢹʯͷເ • ៉ྷࣄͱͯ͠͸ʮࣗ෼ͷ࡞͍ͬͯΔ΋ͷͳͷ ͔ͩΒɺ͔ͬ͠Γݟಧ͚Α͏ʂʯ • ͱ͸͍͑ɺʮ࢓ࣄ͕๩͘͠ͳ͍ਓʯͳΜ͍ͯ ͳ͍͠ɺʮ΍Βͳͯ͘ྑ͍࢓ࣄ͸ԡ͠෇͚ͨ ͍ʯɻ • Ͳ͏આಘͯ͠ר͖ࠐΉ͔ʁ

  33. ʮ΍Δ΂͖ཧ༝ʯΛ࡞Δͷͱɺ
 ʮ΍ΕΔΑ͏ʹ͢Δʯͷ͕ॏཁɻ

  34. ؂ࢹʹऔΓ૊Ήࢫຯ • ։ൃऀ͕1൪ͳͷ͸ɾɾɾ • ো֐ൃੜɺࠩ͠ࠐΈɺόάใࠂɺσόοά • ؂ࢹ͸ʮϑΟʔυόοΫʯͱͯ͠ଊ͑Δ • ͲΜͳ࣌ʹαʔϏε͕ʮϠόΈʯΛᷰΒ͏ʁͷഽײ Λཆ͑Δ

    • େ͖ͳো֐ΛੜΉલʹ௵ͤΔ΋ͷ΋ଟ͍ɻ
  35. ؂ࢹʹऔΓ૊Ήࢫຯ • ։ൃऀ͕1൪ͳͷ͸ɾɾɾ • ো֐ൃੜɺࠩ͠ࠐΈɺόάใࠂɺσόοά • ؂ࢹ͸ʮϑΟʔυόοΫʯͱͯ͠ଊ͑Δ • ͲΜͳ࣌ʹαʔϏε͕ʮϠόΈʯΛᷰΒ͏ʁͷഽײ Λཆ͑Δ

    • େ͖ͳো֐ΛੜΉલʹ௵ͤΔ΋ͷ΋ଟ͍ɻ (Ͳ͏ͤো֐͕ى͖ͨΒ͓લ΋ݺͼى͜͞ΕΔΜͩͧɾɾʂ)
  36. ؂ࢹ͸ʮεΩϧʯ • εΩϧ = τϨʔχϯάʹΑͬͯಘΒΕΔٕ๏

  37. εΩϧͱ͸ʁεΩϧΞοϓͷํ๏ͱ׆༻๏ɺεΩϧΞο ϓͷඞཁੑͱ͸ | LIMO | ͘Β͠ͱ͓ۚͷܦࡁϝσΟΞ https://limo.media/articles/-/6252

  38. ؂ࢹ͸ʮεΩϧʯ • ࠽ೳ΍ηϯε΍ܦݧ͸͋Ε͹͍͍͕ɺ
 ͦΕ͕ͳͯ͘΋ѻ͑ΔΑ͏ʹɻ൓ଐਓԽɻ • ۩ମతʹ͸ɺʮ໰୊ͷ੾Γ෼͚ํʯʮͦΕʹ ඞཁͳΞʔΩςΫνϟ૾ͷཧղʯʮπʔϧͷ ࢖͍ํ΍ΞΫηεݖݶʯΛ༻ҙ͢Δ

  39. ؂ࢹ͸ʮεΩϧʯ • εΩϧ = τϨʔχϯάʹΑͬͯಘΒΕΔٕ๏ • ࠽ೳ΍ηϯε΍ܦݧ͸͋Ε͹͍͍͕ɺ
 ͦΕ͕ͳͯ͘΋ѻ͑ΔΑ͏ʹɻ൓ଐਓԽɻ • ໰୊ͷ੾Γ෼͚ํɺͦΕʹඞཁͳΞʔΩςΫ

    νϟ૾ͷཧղɺπʔϧͷ࢖͍ํ΍ΞΫηεݖ ݶ ʮͰ͖ΔʯΑ͏ʹڭҭɾࢧԉΛ੔͑Δ
  40. ᶄ αʔϏε͕ಈ͍͍ͯΔ͔Λ ؂ࢹ͢Δ

  41. ؂ࢹͱ͸
 ʮಈ͍͍ͯΔ͔ʁʯͱ͍͏໰ • ؂ࢹ͸ͱʹ͔͘ʮ؆୯ʯͰʮҙຯͷ͋Δʯ΋ ͷ͕ྑ͍ • ڀۃతͳ໨త͸
 ʮαʔϏε͕ಈ͍͍ͯΔ͜ͱʯΛ࢘Δ͜ͱ

  42. ؂ࢹσβΠϯͱΞϯνύλʔϯ • Good: Ϣʔβʔ؍఺ Ͱͷ؂ࢹ • ϦΫΤετΛૹ͔ͬͯΒε τϨεͳ͘ฦͬͯ͘Δ͔ʁ • σʔλͷߋ৽ࣦഊ͕ҟৗʹ

    ੜ͍ͯ͡ͳ͍͔ʁ
  43. ؂ࢹσβΠϯͱΞϯνύλʔϯ • Bad: OSϨΠϠͷܗ ࣜతͳ؂ࢹ • DBͷCPU࢖༻཰͕ߴ͍
 <= Ͱ΋ϦΫΤετॲཧ͸ ଺͍ͬͯͳ͍

  44. ؂ࢹσβΠϯͱΞϯνύλʔϯ • Good: Ϣʔβʔ؍఺ Ͱͷ؂ࢹ • ϦΫΤετΛૹ͔ͬͯΒε τϨεͳ͘ฦͬͯ͘Δ͔ʁ • σʔλͷߋ৽ࣦഊ͕ҟৗʹ

    ੜ͍ͯ͡ͳ͍͔ʁ • Bad: OSϨΠϠͷܗ ࣜతͳ؂ࢹ • DBͷCPU࢖༻཰͕ߴ͍
 <= Ͱ΋ϦΫΤετॲཧ͸ ଺͍ͬͯͳ͍ ϢʔβʔӨڹ͸ෳ߹ཁҼͰى͖Δɻ
 ໨తΛ֬ೝ͠ɺΦΦΧϛগ೥ʹ஫ҙ͢Δ
  45. ᶅ ؂ࢹ͸ҭͯΔ΋ͷ

  46. ؂ࢹͷܧଓతվળ • Ξϥʔτ͸ʮਓΛୟ͖ى͜͢ʯ΋ͷɻ • ఆظతͳ୨Է͠Λߦ͓͏ɻ
 ʮ໐͚ͬͨͲଈ࣌ରॲ͠ͳ͔ͬͨʯ΋ͷ͸ɺ ϦετϥީิʹͳΔ

  47. ؂ࢹͷܧଓతվળ • αʔϏε͸ৗʹҭͪɺγεςϜ΋ෳࡶʹͳͬ ͍ͯ͘ɻ
 Ͱ͋Ε͹ɺͣͬͱಉ͡΍ΓํͰ௨༻͢Δͱ͍ ͏ͷ͸ݬ૝Ͱ͋Δ • πʔϧͷೖΕସ͑΋ؚΊͯɺʮޮՌతͳ΋ͷʯ Λ໛ࡧ͠ଓ͚Δ౒ྗΛଵΒͳ͍

  48. ؂ࢹͷܧଓతվળ • Ξϥʔτ͸ʮਓΛୟ͖ى͜͢ʯ΋ͷɻ • ఆظతͳ୨Է͠Λߦ͓͏ɻ
 ʮ໐͚ͬͨͲଈ࣌ରॲ͠ͳ͔ͬͨʯ΋ͷ͸ɺϦετϥީิʹͳ Δ • αʔϏε͸ৗʹҭͪɺγεςϜ΋ෳࡶʹͳ͍ͬͯ͘ɻ
 Ͱ͋Ε͹ɺͣͬͱಉ͡΍ΓํͰ௨༻͢Δͱ͍͏ͷ͸ݬ૝Ͱ͋Δ

    • πʔϧͷೖΕସ͑΋ؚΊͯɺʮޮՌతͳ΋ͷʯΛ໛ࡧ͠ଓ͚Δ ౒ྗΛଵΒͳ͍ ࡞ͬͯऴΘΓʹ͠ͳ͍ʂ
 ࣮ࡍͷ݁Ռ΍ɺϝϯόʔͷϑΟʔυόοΫͰຏ͍͍ͯ͘
  49. PART1:
 ʮೖ໳ ؂ࢹʯΛಡΈ·ͨ͠ɻ ʙऴʙ

  50. PART2: ؂ࢹʹ͓͚Δ
 αʔόʔαΠυ΁ͷظ଴

  51. ؂ࢹ͸ʮશһʯͰ΍Δ΋ͷ

  52. ઐ໳ੑΛ࣋ͪدͬͯɺ
 1ͭͷෳࡶੑΛཧղ͢Δͷ͕؂ࢹ • ΠϯϑϥɺαʔόʔɺΫϥΠΞϯτɺɺɺͰ
 ʮҙ͍ࣝͯ͠Δ෦෼ʯ͕ҧ͏ • ͓ޓ͍͕ʮ஌͍ͬͯΔ͜ͱʯʹ͍ͭͯ
 ੣࣮ʹ৘ใڞ༗Ͱ͖Δͷ͕ཧ૝

  53. WebαʔϏεͬͯෳࡶɾɾ

  54. ʮ͓ʙ͍ʂϖʔδද͕ࣔॏ͍Αʙʂʯ

  55. ʮ͓ʙ͍ʂϖʔδද͕ࣔॏ͍Αʙʂʯ ʮϢʔβʔࢹ఺ʯͰ؂ࢹΛ࢝Ίɺ
 ʮෳ߹ཁҼʯΛղ͖΄͙͢ඞཁ͕͋Δ

  56. ʮ஌͍ͬͯΔ͜ͱʯ͕ҟͳΔ • ΠϯϑϥʮDB͕ෆௐʁʯʮappΠϯελϯε མͪͯΔʁʯ • αʔόʔʮ͖ͬ͞ग़ͨ͠API͕ѱ͍ৼΔ෣͍͠ ͯΔʁʯ • ϑϩϯτʮϦΫΤετͷϒϩοΫ͕ൃੜͯ͠ Δʁʯ

  57. ো֐ͷରԠʹ͸ɺ
 ਝ଎ͳ໰୊Օॴͷಛఆ͕ඞਢɻ େࣄͳ͜ͱ

  58. αʔόʔαΠυ͸ɺ
 खલͱཪଆͷʮதؒʯͱͯ͠ͷ஌͕ࣝ͋Δ

  59. զʑ͔ͩΒ෼͔Δ͜ͱ • ΫϥΠΞϯτͷड৴಺༰͕มʁ • ͖ͬ͞ग़ͨ͠ϩδοΫ͸ɺ͜ΜͳʹΩϟογϡ ͷϛεώοτ͠ͳ͍͸ͣͩͧʁ • ϝϞϦΛ΍ͨΒ৯ͬͯΔʁࠓ·Ͱʹͳ͔ͬͨ ౤ߘ͕࡞੒͞Ε͔ͨ΋ʁ

  60. զʑ͔ͩΒ෼͔Δ͜ͱ • ΫϥΠΞϯτͷड৴಺༰͕มʁ • ͖ͬ͞ग़ͨ͠ϩδοΫ͸ɺ͜ΜͳʹΩϟογϡ ͷϛεώοτ͠ͳ͍͸ͣͩͧʁ • ϝϞϦΛ΍ͨΒ৯ͬͯΔʁࠓ·Ͱʹͳ͔ͬͨ ౤ߘ͕࡞੒͞Ε͔ͨ΋ʁ ʮϏδωεϩδοΫ×λονϙΠϯτʯͱ͍͏ࢹ໺

  61. αʔόʔαΠυ͕
 ʮ؂ࢹʯͷ࠷લઢʹཱͭͱɺ
 ΊͪΌͪ͘Όݱঢ়੔ཧ͕ૣ͘ͳΔɾɾʂ
 (ܦݧऀஊ) ͭ·Γʂ

  62. PART2:
 αʔόʔαΠυ΁ͷظ଴ ʙऴʙ

  63. ·ͱΊʂ

  64. ຊ೔͓࿩ͨ͜͠ͱ ᶃ ʮೖ໳ ؂ࢹʯ͸ྑॻɺະಡͷํͥͻʂ ᶄ ؂ࢹ͸ා͘ͳ͍ɺ
 Ή͠Ζʮ҆৺Ͱ͖Δʯհॿ໾ ᶅ ͱΓΘ͚ɺαʔόʔαΠυͷਓ͸
 ؂ࢹʹऔΓ૊Ήͱ໘ന͍ͱࢥ͍·͢Αɾɾɾʂ

  65. #ajitofm ep.42 https://ajito.fm/42/ TDDຊͱೖ໳؂ࢹ຋༁ऀΛܴ͑ͯͷձஊɻ
 ໘ന͘ͳ͍Θ͚͕ͳ͍ɾɾʂ͓͢͢Ίɻ ͪͳΈʹ

  66. ͓෇͖߹͍͍͖ͨͩ
 ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ