Slide 1

Slide 1 text

DBͷো֐Λ ͳΔૣͰݕ஌͢Δٕज़ 2018-12-01 தࠃ஍ํDBษڧձ in ௗऔ(૔٢) JPUG தࠃࢧ෦௕ ߴڮ Ұٍ

Slide 2

Slide 2 text

ઌ೔ͷ PG Conference Japan 2018 ɻɻɻ ʮ͜Μͳख๏͕͋ͬͨͷ͔ʂʯ ʮ݄༵͔Βਅࣅ͢Δʂʯ ʮ͜͜ࠔͬͯͨΜͩʂʯ

Slide 3

Slide 3 text

ࣗ෼ͷ૝ఆҎ্ʹ൓ڹͷ͋ͬͨ RDSͷো֐ݕ஌ͷख๏Λ͝঺հ

Slide 4

Slide 4 text

͓͠ͳ͕͖ 1. DBো֐ݕ஌Λͳͥ΍Δͷ͔ 2. DBো֐ΛͲ͏΍ͬͯ؂ࢹ͢Δͷ͔ 3. ·ͱΊ

Slide 5

Slide 5 text

1. DBো֐ݕ஌Λͳͥ΍Δͷ͔

Slide 6

Slide 6 text

1. DBো֐ݕ஌ΛԿނ΍Δͷ͔. • ݱࡏΦϛΧϨ͸DBϦϑΝΫλϦϯάΛ ΍͍ͬͯΔɻ • DMSͰσʔλҠߦ => τϦΨʔͰσʔ λΛม׵ͯ͠৽εΩʔϚ΁ొ࿥ ͱ͍͏ ྲྀΕɻ ※ ৄ͘͠͸ PGconf2018ͷεϥΠυΛɻ h-ps:/ /speakerdeck.com/takahashiikki/ postgresqljapan2018

Slide 7

Slide 7 text

1. DBো֐ݕ஌ΛԿނ΍Δͷ͔. • ΞʔΩςΫνϟͷੑ্࣭ɺ τϦΨʔ͕ίέΔͱDBҠߦ͕ࢭ·Δɻ DBҠߦ͕ࢭ·ΔͱAPI͕ίέΔɻ API͕ίέΔͱɾɾαʔϏε͕ࢭ·Δɻ • τϦΨʔͷΤϥʔΛݕ஌ͯ͠ো֐ʹͳΔલʹରԠ͢Δࣄ͕ඞਢ • ݱࡏɺ਺ϲ݄ͷӡ༻ܦݧ্ɺ૝ఆ֎ͷσʔλ͕ೖΔ͜ͱʹΑΔ τϦΨʔ͸ͦΕͳΓʹ͋Δɻ

Slide 8

Slide 8 text

αʔϏεΛࢭΊͳ͍ҝʹ ΤϥʔΛݕ஌͢Δɻ

Slide 9

Slide 9 text

2. DBো֐ΛͲ͏΍ͬͯݕ஌͢Δͷ͔ɻ

Slide 10

Slide 10 text

AWS (RDS)ͷϩάͱ͍͑͹ɻɻɻ • AWS CloudWatch Logsʂ RDSͰ͸ɺDBϩάΛCloudWatch Logsʹు͖ग़͢͜ͱ͕ग़དྷΔɻ => ͜Ε͕͋Ε͹ SNSͱ͔৭ΜͳࣄͰ؂ࢹग़དྷͦ͏ʂ

Slide 11

Slide 11 text

AWS (RDS)ͷϩάͱ͍͑͹ɻɻɻ • AWS CloudWatch Logsʂ RDSͰ͸ɺDBϩάΛCloudWatch Logsʹు͖ग़͢͜ͱ͕ग़དྷΔɻ => ͜Ε͕͋Ε͹ SNSͱ͔৭ΜͳࣄͰ؂ࢹग़དྷͦ͏ʂ ※ RDS for MySQL ͰͷΈରԠ.

Slide 12

Slide 12 text

h"ps:/ /dev.classmethod.jp/cloud/aws/amazon-rds-logs-download-9ps/

Slide 13

Slide 13 text

ཁ໿͢Δͱ... • RDSͷϩά͸ AWS SDKͷؔ਺Λ࢖ͬͯશߦऔಘग़དྷΔ. • ؔ਺ʹ͸औಘ։࢝ҐஔΛࢦఆग़དྷΔ. ͭ·ΓɺطʹಡΜͩҐஔΛඈ͹ͨ͠ঢ়ଶͰॲཧग़དྷΔɻ

Slide 14

Slide 14 text

ඞཁͳཁ݅ • ఆظతʹSDKΛୟ͍ͯϩάΛϙʔϦϯά͢Δɻ • લճͷ෼ੳҐஔΛ͓͍֮͑ͯͯલճͷ෼ੳ෼͸ඈ͹͢ɻ • ΤϥʔΛݟ͚ͭͨ࣌ʹ௨஌͢Δɻ

Slide 15

Slide 15 text

ఆظతʹSDKΛୟ͘ ฐࣾʹͱͯ΋ৄ͍͠ํ͕ډͨͷͰMackerelΛར༻

Slide 16

Slide 16 text

ఆظతʹSDKΛୟ͘ -------------------------------------------------- [plugin.checks.೚ҙͷ໊લ] command = "php /path/to/check_rds_log.php" check_interval = 5 -------------------------------------------------- • MackerelͷઃఆʹΑͬͯɺ5෼ʹҰճࢦఆͨ͠ίϚϯυΛ࣮ߦ͠ ͯ͘ΕΔɻ

Slide 17

Slide 17 text

طʹಡΜͩ෼͸ඈ͹͢ɻ • Ґஔ͸ Marker ͱݺ͹Εɺ ਺஋Ͱ؅ཧ͞Ε͍ͯ·͢ɻ • JPUGͷཧࣄͳͷͰɺ.jsonϑΝΠϧͰ؅ཧ͢Δࣄʹ͠·ͨ͠ɻ

Slide 18

Slide 18 text

ΤϥʔΛݟ͚ͭͨ࣌ʹ௨஌Λඈ͹͢ɻ -------------------------------------------------- [plugin.checks.೚ҙͷ໊લ] command = "php /path/to/check_rds_log.php" check_interval = 5 -------------------------------------------------- • MackerelͷcheckϓϥάΠϯʹ࣮ͯݱ͍ͯ͠·͢ɻ • ίϚϯυ಺ͰҎԼͰऴྃͤ͞ΔࣄͰ checkϓϥάΠϯʹҟৗݕ஌ͤ͞Δࣄ͕ग़དྷ·͢ɻ exit(1) ... WARNING exit(2) ... CRITICAL • MackerelଆͷઃఆͰ WARNINGͷ࣌ͷৼΔ෣͍ͱͯ͠ Slackʹ௨஌͢Δ Λ࢓ࠐΜͰରԠɻ

Slide 19

Slide 19 text

Τϥʔͷ൑ఆϩδοΫ • :ERROR: ͱ͍͏จࣈྻ͕͋Δ͔Ͳ͏͔ɻ (ײ֒ਂ͍) • :ERROR: ͕͋Ε͹1~2ߦԼΛߋʹௐࠪͯ͠ :DETAIL: ͱ͔ :CONTEXT: ͕͋Ε͹Ұॹʹरͬͯ͘Δɻ

Slide 20

Slide 20 text

ΞʔΩςΫνϟ ·ͱΊ • PHPͰॻ͔ΕͨϓϩάϥϜΛMackerelͰ5෼͓͖ʹ࣮ߦ͢Δɻ • ϓϩάϥϜ಺Ͱ͸ɺΤϥʔߦΛ൑ఆͯ͠ ௐࠪʹ໾ཱͭ৘ใΛ௨஌͢Δɻ • طʹௐࠪͨ͠෦෼͸ .jsonϑΝΠϧʹు͖ग़ͯ͠ skip͢Δɻ

Slide 21

Slide 21 text

3. ·ͱΊ

Slide 22

Slide 22 text

͜ͷΞʔΩςΫνϟͰ5ϲ݄૸ͬͨ. • Τϥʔ͕͙͢ʹ௨஌͞ΕΔͷͰຊ౰ɺศརɻ • ΞʔΩςΫνϟ͸਺ճΞοϓσʔτͯͯ͠ɺ :DETAIL: ͳͲͷΤϥʔৄࡉΛऔΔΑ͏ʹͳͬͨͷ΋࠷ۙɻ • SQLྲྀͦ͏ͱͨ࣌͠ͷ syntax error ΋௨஌͞ΕΔͷͰΧδϡΞ ϧʹSQLΛ౤͛ΔͱౖΒΕΔɻ ʮ͢Έ·ͤΜɺ๻͕SQLؒҧ͑·ͨ͠ʯͬͯSlackʹ౤ߘ͢Δɻ

Slide 23

Slide 23 text

ศརͳ෦෼. • :ERROR: Ͱ௨஌͞ΕΔࣄ͕෼͔͍ͬͯΔͷͰɺ τϦΨʔ಺Ͱϩάʹ :ERROR: ͬͯॻ͍ͯσόοάϝοηʔδΛ ॻ͘ࣄͰ௨஌͍ͨ͠಺༰ΛϋοΫग़དྷΔɻ • ࢖༻ྫɿ :ERROR: delete_flag return 1 to 0 • MackerelͷػೳͰ CRITICAL ͔Β NORMAL ʹ໭ͬͨλΠϛϯά Ͱ΋ ௨஌͞ΕΔͷͰɺରԠ׬ྃΛϩάਫ਼ࠪʹΑͬͯ஌Δࣄ͕ग़དྷΔɻ

Slide 24

Slide 24 text

՝୊ͷ෦෼. • SQLྲྀͦ͏ͱͨ࣌͠ͷ syntax error ΋௨஌͞ΕΔͷͰ ΧδϡΞϧʹSQLΛ౤͛ΔͱౖΒΕΔɻ ※ʮ͢Έ·ͤΜɺ๻͕SQLؒҧ͑·ͨ͠ʯͬͯSlackʹ౤ߘ • (ઃఆͷ໰୊) ϝοηʔδͰ೔ຊޠΛॻ͘ͱจࣈԽ͚͢ΔͷͰɺ ࢖͑ͳ͍ɻ • ͦͷҝɺσόοάϝοηʔδΛӳޠͰॻ͔͟ΔΛಘͳͯ͘ ଐਓԽ͕ͪ͠ɻ

Slide 25

Slide 25 text

૯ׅ • ૯ׅͱͯ͠͸ΊͪΌͪ͘Όָʹͳͬͨɻ • ઈ͑ͣಈ͘ͷͰ ʮΞϥʔτ͕དྷͯͳ͍ʯ=> ʮτϦΨʔΤϥʔ ͕ແ͍ʯ͕୲อग़དྷΔͷͰ҆৺ײ͕͋Δɻ • ࢥͬͯΔΑΓ΋૝ఆ֎ͷσʔλ͕ೖΔɻ

Slide 26

Slide 26 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ