Observability: Mackerel による観測と Mackerel の観測 / NoOps Meetup Tokyo #8
by
astj
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Observability: Mackerel ʹΑΔ؍ଌ ͱ Mackerel ͷ؍ଌ 2019/09/17 NoOps Meetup Tokyo #8 Asato WAKISAKA (Hatena)
Slide 2
Slide 2 text
Asato WAKISAKA GitHub: @astj / Twitter @ast_j ͯͳ ΞϓϦέʔγϣϯΤϯδχΞ Mackerel ։ൃνʔϜ (2016/08~) Mackerel ςοΫϦʔυ (2018/05~)
Slide 3
Slide 3 text
कඋൣғ: ϑϩϯτΤϯυ͔ΒSREing·Ͱʢࣗশʣ Scala, Golang, TypeScript, …
Slide 4
Slide 4 text
Mackerel
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
• Mackerel ͬͯΔਓ • ͋Γ͕ͱ͏͍͟͝·͢ʂ • Mackerel ৮ͬͨ͜ͱ͕͋Δਓ • ͋Γ͕ͱ͏͍͟͝·͢ʂʂ • Mackerel ͬͯΔਓ • ͋Γ͕ͱ͏͍͟͝·͢ʂʂʂʂ Ξϯέʔτ
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
ࢹ
Slide 9
Slide 9 text
Monitoring
Slide 10
Slide 10 text
Observability
Slide 11
Slide 11 text
?
Slide 12
Slide 12 text
Observability ͱ Monitoring
Slide 13
Slide 13 text
• Observability: ʮՄ؍ଌੑʯ • γεςϜͷ෦ঢ়ଶ͕औಘͰ͖Δঢ়ଶ • 3ͭͷओཁͳߏཁૉ • Metrics, Logging, Tracing • Mackerel ͜ͷ͏ͪ Metrics த৺
Slide 14
Slide 14 text
• ʮՄ؍ଌੑʯ≠ʮ؍ଌʯ • ʮՄ؍ଌੑʯγεςϜ͕࣋ͭੑ࣭ • ʮ؍ଌʯγεςϜ֎෦ͷߦಈ
Slide 15
Slide 15 text
Metrics Observability Log Observability Trace Observability Metrics Observation Log Observation Trace Observation
Slide 16
Slide 16 text
Metrics Observability Log Observability Trace Observability Metrics Observation Log Observation Trace Observation • Server Metrics • Middleware Metrics • Application Metrics • Business KPI • Etc… • Alerting • Dashboard Visualization • Analysis • Etc…
Slide 17
Slide 17 text
Metrics Observability Log Observability Trace Observability Metrics Observation Log Observation Trace Observation ʮϝτϦοΫࢹʯ͜ͷลʁ • Server Metrics • Middleware Metrics • Application Metrics • Business KPI • Etc… • Alerting • Dashboard Visualization • Analysis • Etc…
Slide 18
Slide 18 text
• ͱ͍͑ɺͦͷઌͰਓ͕ؒ؍ଌ͍ͯ͠Δͣ • ݹయతʹΞϥʔτରԠͳͲ • ʮάϥϑΛݟΔʯ؍ଌ
Slide 19
Slide 19 text
Metrics Observability Log Observability Trace Observability Metrics Observation Log Observation Trace Observation wਓؒ • ͋Ε • ͜Ε ˞͜Εۃ
Slide 20
Slide 20 text
• લஈʹʮՄ؍ଌੑʯͦͷͷ • ޙஈͷʮ؍ଌʯΛ;ͨͭʹ͚ͯଊ͑Δ • ʮ؍ଌͷ࣮ʯ • ʮʢਓؒͷʣ؍ଌʯ
Slide 21
Slide 21 text
Observability Observability Observability Observation Observation Observation Observe impl. Observe impl. Observe Impl.
Slide 22
Slide 22 text
Observability Observability Observability Observation Observation Observation Observe impl. Observe impl. Observe Impl. ٕज़ͱͯ͠ͷ Observability ͕ ͜ͷลΓΛࢦ͢͜ͱ͋Ε
Slide 23
Slide 23 text
Observability Observability Observability Observation Observation Observation Observe impl. Observe impl. Observe Impl. ιϦϡʔγϣϯͷͰ Observability ͕ݴٴ͞ΕΔ࣌ ͜͜·Ͱؚ·ΕΔ͜ͱଟ͍
Slide 24
Slide 24 text
……Ͱɺ͍͍Ͱ͔͢Ͷʁ
Slide 25
Slide 25 text
• ٞͷ༨͍Ζ͍Ζ͋Γͦ͏ • ͔͠͠ࠓ͜ͷͷਂ͍͠·ͤΜ • ߹্ࠨΛՄ؍ଌੑͱͯ͠͠·͢
Slide 26
Slide 26 text
Observability Observability Observability Observation Observation Observation Observe impl. Observe impl. Observe Impl. • ϝτϦοΫࢹ: • ϝτϦοΫΛऩू͢Δ • ऩूͨ͠ϝτϦοΫΛूੵ͢Δ • άϥϑμογϡϘʔυͰՄࢹԽ͢Δ • ΞϥʔτΛൃใ͢Δ
Slide 27
Slide 27 text
Observability Observability Observability Observation Observation Observation Observe impl. Observe impl. Observe Impl. ϝτϦοΫऩू ϝτϦοΫूੵ • άϥϑ • Ξϥʔτ • μογϡϘʔυ ˞Πϝʔδ • ਓؒ • ࣗಈԽରԠ
Slide 28
Slide 28 text
Observability Observability Observability Observation Observation Observation Observe impl. Observe impl. Observe Impl. • ؍ଌ͢ΔͨΊʹ؍ଌՄೳʹ͢Δඞཁ͕͋Δ • Մ؍ଌੑࢹͷલఏͱͳΔ • ʢͷͰɺࢹͷจ຺ͰՄ؍ଌੑʹݴٴ͞ΕΔʣ
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
Mackerel ͷ֓೦
Slide 31
Slide 31 text
ϗετ
Slide 32
Slide 32 text
• ࢹɾཧͷىʹͳΔ֓೦ • యܕతʹαʔόʔ • ʮαʔόʔͷΑ͏ͳͷʯϗετ • ίϯςφͷू߹ (e.g. ECS Task / k8s pod) • ΫϥυϦιʔε (e.g. Lambda Function) ϗετ
Slide 33
Slide 33 text
Service:Blog Role:App Role:DB Host A Host B Host C Host D Service:Bookmark Role:App Host E Host F … αʔϏεɾϩʔϧ
Slide 34
Slide 34 text
• ϗετΛʮׂʯͰྨ • μογϡϘʔυ্Ͱάϧʔϐϯά͞ΕΔ • αʔϏεϩʔϧ୯ҐͰࢹϧʔϧΛཧ αʔϏεɾϩʔϧ
Slide 35
Slide 35 text
No content
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
No content
Slide 38
Slide 38 text
෦ঢ়ଶͷऩू
Slide 39
Slide 39 text
• ࣌ܥྻͰࢀরՄೳ ϝτϦοΫ
Slide 40
Slide 40 text
• ୯७ͳ൱ͱϝοηʔδΛه • ฏৗ࣌ͷཤྺهʹΒͳ͍ νΣοΫࢹ
Slide 41
Slide 41 text
• ϩάʹର͢Δ(ϝτϦοΫ|νΣοΫ)ࢹͰදݱ • ϩάΛࠪͯ͠ύλʔϯϚον͢Δ • LTSV ܗࣜͷΞΫηεϩάΛूܭ͢Δ ϩάΛࢹ͢Δ
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
ऩूͷλʔήοτ • ΤʔδΣϯτܥ • αʔόʔ • ίϯςφ • αʔϏεϝτϦοΫ • URL ֎ܗࢹ • ΠϯςάϨʔγϣϯ
Slide 44
Slide 44 text
• αʔόʔ্Ͱಈ͘ΤʔδΣϯτ • ΤʔδΣϯτ͔Β Mackerel ʹ POST ͢Δ • γεςϜϝτϦοΫࣗಈͰऩू • CPU, memory, interface… • ϓϥάΠϯͰऔಘใΛ֦ுͰ͖Δ αʔόʔ͔Βͷऩू
Slide 45
Slide 45 text
Server Mackerel mackerel-agent Fluentd Golang app OS stats monitor-agent Plugins HTTP gostats POST ྫ
Slide 46
Slide 46 text
• ECS 1 Task k8s 1 pod Λ1ϗετ • αΠυΧʔίϯςφͱͯ͠ΤʔδΣϯτΛಋೖ • γεςϜϝτϦοΫΛࣗಈͰऩू • ϓϥάΠϯͰ֦ுՄೳ ίϯςφ͔Βͷऩू
Slide 47
Slide 47 text
Task Task Task Mackerel Agent Container Fluentd container Golang app container monitor-agent Plugins HTTP gostats POST Orchestration Metadata ྫ
Slide 48
Slide 48 text
• ಛఆͷϗετʹඥ͔ͳ͍ϝτϦοΫ • Ϗδωε KPI ɺαʔϏεશମͷϨΠςϯγ • API Ͱࣗ༝ʹߘ • e.g. fluentd αʔϏεϝτϦοΫ Service:Bookmark Role:App Host
Slide 49
Slide 49 text
• Mackerel ଆ͔Β URL ʹଓ • ଓՄ൱ϨεϙϯελΠϜͳͲΛऩू URL ֎ܗࢹ
Slide 50
Slide 50 text
• ΫϥυࣄۀऀͷϞχλϦϯά API ͔Βऔಘ • ΤʔδΣϯτͳ͠ͰऩूͰ͖Δ • ऩूϝτϦοΫΫϥυࣄۀऀґଘ AWS / Azure ΠϯςάϨʔγϣϯ Mackerel User Cloud Services Crawl
Slide 51
Slide 51 text
ऩू͢Δ༰
Slide 52
Slide 52 text
• γεςϜϝτϦοΫࣗಈͰऩू • ϛυϧΣΞެࣜϓϥάΠϯͰऩू • ΞϓϦέʔγϣϯͷϝτϦοΫʁʁ
Slide 53
Slide 53 text
• γεςϜϝτϦοΫࣗಈͰऩू • ϛυϧΣΞެࣜϓϥάΠϯͰऩू • ΞϓϦέʔγϣϯͷϝτϦοΫʁʁ
Slide 54
Slide 54 text
• ݴޠϑϨʔϜϫʔΫ͚ͷϓϥάΠϯ͋Δ • JVM Go GC ౷ܭ؍ଌͰ͖Δ • Γͳ͍ϝτϦοΫͷ؍ଌखஈ͕ඞཁ
Slide 55
Slide 55 text
Observability Observability Observability Observation Observation Observation Observe impl. Observe impl. Observe Impl. • ؍ଌ͢ΔͨΊʹ؍ଌՄೳʹ͢Δඞཁ͕͋Δ • Մ؍ଌੑࢹͷલఏͱͳΔ • ʢͷͰɺࢹͷจ຺ͰՄ؍ଌੑʹݴٴ͢Δʣ ࠶ܝ • ؍ଌ͢ΔͨΊʹ؍ଌՄೳʹ͢Δඞཁ͕͋Δ
Slide 56
Slide 56 text
؍ଌ͍ͨ͠ϝτϦοΫԿΒ͔ͷखஈͰ؍ଌՄೳͰ͔͢ʁ ؍ଌՄೳʹ͢Δ ΤʔδΣϯτʢͷϓϥάΠϯʣͰ؍ଌɾऩू͢Δ NO YES
Slide 57
Slide 57 text
؍ଌ͍ͨ͠ϝτϦοΫԿΒ͔ͷखஈͰ؍ଌՄೳͰ͔͢ʁ ؍ଌՄೳʹ͢Δ ΤʔδΣϯτʢͷϓϥάΠϯʣͰ؍ଌɾऩू͢Δ NO YES
Slide 58
Slide 58 text
• ͲͷΑ͏ʹ؍ଌ͞ΕΔ͔Ͱ࣮͕ܾ·Δ ؍ଌՄೳʹ͢Δ
Slide 59
Slide 59 text
؍ଌ͍ͨ͠ϝτϦοΫԿΒ͔ͷखஈͰ؍ଌՄೳͰ͔͢ʁ ؍ଌՄೳʹ͢Δ ΤʔδΣϯτʢͷϓϥάΠϯʣͰ؍ଌɾऩू͢Δ NO YES
Slide 60
Slide 60 text
• ϓϥάΠϯΛࣗ࡞ͯ͠ҙͷखஈͰ؍ଌ • HTTP Ͱ JSON ܗࣜΛಡΈࠐΜͰ؍ଌ ؍ଌखஈ
Slide 61
Slide 61 text
• ϓϥάΠϯ = ࣮ߦϑΝΠϧ • ॴఆͷग़ྗͰϝτϦοΫ໊ͱΛग़ྗ͢Δ͚ͩ • ࣮ߦڥͰ“ݟ͑Δ”ͳΒԿͰऔΕΔ ࣗ࡞ϓϥάΠϯͰͷϝτϦοΫऩू $ mackerel-plugin-uptime uptime.seconds 7749392 1568662368
Slide 62
Slide 62 text
• ࣮ࣗମ Bash Ͱ Go ͰԿͰ • ग़ྗϑΥʔϚοτ͕ૉͳͷͰ࣮Λબͳ͍ • ؍ଌରʹ͋Θ࣮ͤͯ͢Δඞཁ͕͋Δ • ؍ଌରଆͷࣗ༝ߴ͘ͳΔ ࣗ࡞ϓϥάΠϯͰͷϝτϦοΫऩू
Slide 63
Slide 63 text
HTTP ܦ༝Ͱͷऩू • mackerel-plugin-json • ؍ଌ͍ͨ͠Λ JSON Ͱ HTTP ৴͢Δ • ϓϥάΠϯ͔ΒͦͷΤϯυϙΠϯτΛಡΈࠐΉ
Slide 64
Slide 64 text
ఆ • Q: Prometheus Exporter Έ͍ͨͳʁ • => ํੑ yesʢͬͱγϯϓϧʣ • Q: Prometheus Exporter ͑ͳ͍ͷʁ • => ……!
Slide 65
Slide 65 text
HTTP ܦ༝Ͱͷऩू $ mackerel-plugin-json \ > -url=http://localhost/stats active3 1568666460 waiting 2 1568666460 $ curl -fsSL http://localhost/stats {“active”:3,”waiting”:2}
Slide 66
Slide 66 text
HTTP ܦ༝Ͱͷऩू
Slide 67
Slide 67 text
• ͲͪΒ͕ྑ͍͔߹ʹΑΔ • طʹHTTPΛΔͳΒHTTP͕ศར • طଘͷ؍ଌखஈ͕͋Ε࠶ར༻͍ͨ͠
Slide 68
Slide 68 text
ऩूͨ͠ϝτϦοΫͷར༻
Slide 69
Slide 69 text
• Mackerel Ͱͷओͳ͍ಓ • ࢹʢΞϥʔτʣ • ՄࢹԽʢάϥϑɾμογϡϘʔυʣ
Slide 70
Slide 70 text
ࢹʢΞϥʔτʣ
Slide 71
Slide 71 text
;ͨͭͷΞϥʔτ • ଈ࣌ରԠΛଅ͢Ξϥʔτ • ӡ༻ऀͱͯ͠θϩʹ͍ͨ͠ʂ • Information ͱͯ͠ͷΞϥʔτ
Slide 72
Slide 72 text
ଈ࣌ରԠͷΞϥʔτ (on-call) • γεςϜͷՔಇ͕ଛͳΘΕ͍ͯΔ • ରԠΛඞཁͱ͢Δ • “Δ·Ͱ์ஔ”͕ڐ༰ͳΒଈ࣌ରԠͰͳ͍
Slide 73
Slide 73 text
Information ͱͯ͠ͷΞϥʔτ • ٸ͕ͳ͍͕ԿΒ͔ͷΞΫγϣϯΛٻΊΔ • ྫ: Խϗετ͕1μϯ • γεςϜ͕ଓߦՄೳͳൣғͷʮҟৗʯ • ಉ͡ࢦඪ͕͞ΒʹѱԽ͢Εଈ࣌ରԠ
Slide 74
Slide 74 text
• ࣮ࡍʹγεςϜ͕Քಇ͍ͯ͠Δ͔ Ͳ͏͔Λࢹ͢Δ • e.g. ֎ܗࢹ, ΤϥʔϨʔτ • ˱ CPU 100%Ͱಈ͍ͯΕྑ͍ ଈ࣌ରԠͷΞϥʔτ
Slide 75
Slide 75 text
• ͱ͍͑߹ʹΑΓ͚Γ • ͷՔಇͷࢹͰͳͯ͘ɺ ͔ͦ͜ΒՔಇঢ়گ͕ԋ៷ՄೳͳΒ༗༻
Slide 76
Slide 76 text
Information ͱͯ͠ͷΞϥʔτ • γεςϜՔಇҎ֎ͷࢦඪऔΓಘΔ • ଈ࣌ରԠͱಉ͡௨ܦ࿏ʹࡌͤͳ͍
Slide 77
Slide 77 text
Ξϥʔτશൠ • ͳΜͰ͔ΜͰΞϥʔτʹ͠ͳ͍ • ຊʹඞཁͳΞϥʔτ͕ຒΕΔ • Information ͩΒͩΒ૿͕͑ͪ
Slide 78
Slide 78 text
ՄࢹԽ
Slide 79
Slide 79 text
• ෦ͷঢ়ଶΛ࣌ܥྻ͖ͭͰه͢Δ • खಈͰऩू͠ͳͯ͘؍ଌͰ͖Δ • ݱࡏͷঢ়ଶΛѲ͢Δखஈ • ఆৗ࣌ɾো࣌Θͣ • աڈͷঢ়ଶΛৼΓฦΔखஈ άϥϑɾμογϡϘʔυ
Slide 80
Slide 80 text
؍ଌΛҭͯΔ
Slide 81
Slide 81 text
ඞཁͳ؍ଌྔ͕࠷ॳ͔Βἧ͏ͱݶΒͳ͍
Slide 82
Slide 82 text
• ։ൃɾݕূதʹؾͮ͘ • ࢹ༻ҙ͠Α͏ͱͯ͠ෆʹؾͮ͘ • োى͖ͯΈͯෆʹؾͮ͘ ͨͱ͑…
Slide 83
Slide 83 text
ඞཁͳ؍ଌ࠷ॳ͔Βἧ͏ͱݶΒͳ͍
Slide 84
Slide 84 text
• ։ൃɾݕূதʹؾͮ͘ • ෛՙࢼݧͰؾͮ͘ͱඒ͍͠ʂ • োى͖ͯΈͯෆʹؾͮ͘ ͨͱ͑…
Slide 85
Slide 85 text
αΠΫϧΛճ͍ͯ͘͠
Slide 86
Slide 86 text
• ࠷ॳ͔ΒඋͰ͖Εྑ͍ • ಛʹඞਢͷ߲͍͑ͯ͘ • γεςϜͷՔಇͷࢹʂʂ • ܧଓతʹมߋɾվળ͍ͯ͘͠
Slide 87
Slide 87 text
No content
Slide 88
Slide 88 text
Mackerel Ͱ Mackerel Λ؍ଌ͢Δ
Slide 89
Slide 89 text
Mackerel ͷٕज़ελοΫ • AWS ্ʹߏங • EC2 ӡ༻ͱ ECS Fargate ͕ࠞࡏ • ϝΠϯͷ JVM ͳͲ͕ EC2 • গͣͭ͠ίϯςφϫʔΫϩʔυʹҠߦத
Slide 90
Slide 90 text
ઢ
Slide 91
Slide 91 text
ίϯςφศར
Slide 92
Slide 92 text
• Πϯελϯεͷੈ͕ཁΒͳ͍ • Πϯϑϥ·ͰؔΘΔߏมߋ͕खܰ • “chef ߋ৽ͯ͠Πϯελϯε࡞Γͯ͠ೖΕ ͑ͯ…” • ʮخ͘͠ͳ͍͜ͱʯ͡ΌΜ……
Slide 93
Slide 93 text
ઢ͜͜·Ͱ
Slide 94
Slide 94 text
Mackerel ͷٕज़ελοΫ ࣌ܥྻσʔλϕʔε: ϚωʔδυαʔϏεϕʔε
Slide 95
Slide 95 text
ઢ
Slide 96
Slide 96 text
αʔόϨεΞʔΩςΫνϟศར
Slide 97
Slide 97 text
• ૄ݁߹ɾϦτϥΠՄೳͳઃܭ • ϝοηʔδΩϡʔΛڬΉ • Lambda ͷॲཧ༰Λႈʹઃܭ • ύϥϝʔλมߋͰεέʔϧ͢Δ • ʢ FaaS ಛ༗ͷӡ༻՝θϩͰͳ͍ʣ
Slide 98
Slide 98 text
ઢ͜͜·Ͱ
Slide 99
Slide 99 text
Mackerel ͷٕज़ελοΫ ʢڵຯ͕͋ΕաڈͷొஃࢿྉΛ͝ཡԼ͍͞ʂʣ
Slide 100
Slide 100 text
JVM ΞϓϦέʔγϣϯͷ؍ଌ • ϝτϦΫεɾࢹ: mackerel • jstat ͱ jolokia ʹΑΔJVM෦ߏͷ؍ଌ • αʔόʔ͝ͱͷϨΠςϯγࢹ • ίωΫγϣϯϓʔϧࢹ • etc…
Slide 101
Slide 101 text
JVM ΞϓϦέʔγϣϯͷ؍ଌ • APM: NewRelic APM • ΑΓਫ਼៛ͳ෦ੳ͕ඞཁͳͱ͖ʹ • ϩάղੳ: fluentd => Kibana • ΞΫηεϩάɺΞϓϦέʔγϣϯϩά
Slide 102
Slide 102 text
։ൃڥͷ؍ଌ • ։ൃڥʢ݉εςʔδϯάڥʣ • ຊ൪ͱಉ༷ͷߏʢنখ͍͞ʣ • ಉ༷ͷ؍ଌπʔϧߏ • => ϦϦʔεલ͔Β։ൃڥͰ؍ଌ
Slide 103
Slide 103 text
ఆ • Q: ։ൃڥͷࢹͷίετʁ • => զʑMackerelΛແྉͰ͑Δʢଇʣ
Slide 104
Slide 104 text
• த֩ʹ Mackerel • ීஈͷʮࢹʯʮཧʯͷى͜͜ • ଞͷπʔϧͱΈ߹Θͤͯ؍ଌΛิڧ
Slide 105
Slide 105 text
No content
Slide 106
Slide 106 text
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠