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
/Mackerel 20190312
Search
mackerelio
March 12, 2019
100
0
Share
/Mackerel 20190312
mackerelio
March 12, 2019
More Decks by mackerelio
See All by mackerelio
クラウドネイティブに支える従量課金集計―Mackerel「daifukucho」の設計と運用
mackerelio
1
130
オブザーバビリティ文化を組織に浸透させるには / install observability culture
mackerelio
0
960
OpenTelemetryセマンティック規約の恩恵とMackerel APMにおける活用例 / SRE NEXT 2025
mackerelio
3
3.7k
アプリケーションの中身が見える!Mackerel APMの全貌と展望 / Mackerel APMリリースパーティ
mackerelio
0
1k
Mackerel CREのご紹介
mackerelio
0
140
Mackerelが取り組むオブザーバビリティ - Mackerel Tech Day
mackerelio
0
1.3k
Mackerelの2023年ふりかえりと 今後のロードマップ
mackerelio
0
1.3k
Mackerel開発者が使ってほしいAWSインテグレーションの機能4選
mackerelio
0
200
Mackerelの現在と未来 2023 / Mackerel Drinkup #10
mackerelio
0
230
Featured
See All Featured
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
340
Visualization
eitanlees
150
17k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Fireside Chat
paigeccino
42
3.9k
The Spectacular Lies of Maps
axbom
PRO
1
670
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.2k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
320
Context Engineering - Making Every Token Count
addyosmani
9
790
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
Transcript
1 2019/03/12 mackerel.io
2 ࣗݾհ • Ճݹ ݾʢJEOLBLPʣ • גࣜձࣾͯͳ ϓϩσϡʔαʔ • .BDLFSFMνʔϜͷࣄۀऀΛ୲͍ͯ͠·͢ʂ
ܦྺ 4*FSͰωοτϫʔΫΤϯδχΞ ϕϯνϟʔͰӦۀཧ৬Λ୲ɺ*10Λܦݧ 0SBDMFͰΫϥυʢ*BB4ʣΛ୲ ͯͳ ϏδωεϚωʔδϟʔ ͯͳ ϓϩσϡʔαʔ
3 ձࣾհ ໊ࣾɿגࣜձࣾͯͳ ॴࡏɿ ຊࣾ ˟ژژࢢதژ۠ޚ௨ؒ೭ொ౦ೖߴٶொޚϏϧ' ɿ ຊళ ˟౦ژߓ۠ೆ੨ࢁ੨ࢁαϯϥΠτϏϧ' ઃཱɿ݄
ࢿຊۚɿ ઍԁ ച্ߴɿ ඦສԁʢ݄ݱࡏʣ ैۀһɿਓʢ݄ݱࡏʣ ʹ౦ূϚβʔζࢢʹ্
4 ͯͳͷϛογϣϯ ʮΔʯʮͭͳ͕Δʯʮදݱ͢Δʯ Ͱ৽͍͠ମݧΛఏڙ͠ɺਓͷੜ׆Λ๛͔ʹ͢Δ
5 .BDLFSFMͱʁ
6 ࠷ߴͷυοάϑʔσΟϯάڥ͔Βੜ·Ε·ͨ͠ ॳ/BHJPTΛͬͯαʔόཧΛ࣮ࢪ ଟ͗͢Δࢹରࢹ߲͕ɺ ૿͑ଓ͚ΔΠϯϑϥӡ༻ͷෛՙʹ ྲྀಈతͳΠϯϑϥʹରԠ͢ΔΛϞοτʔʹࣗࣾࢹπʔϧΛ࡞։࢝ ʢॳ.BDLFSFMͷੜʣ ཧαʔόʢԾԽ͠ʣʴ "84ͷΫϥυར༻࢝·Γ৽ڥʹ దͨ͠.BDLFSFM͕ੜ
Ϋϥυͷຊ֨ීٴΛड͚ɺΑΓ͍উखͷྑ͍πʔϧͱͯ͠4BB4ܕࢹαʔϏεͱͯ͠ ൛.BDLFSFMϦϦʔεʹணख Ҏલ ʙ ʙ ʙ ࣌ͷ.BDLFSFM ొϢʔβʔ ສਓ ݄ؒϢχʔΫϒϥβ ԯਓΛތΔͯͳͷαʔϏ εʢͯͳϒοΫϚʔΫɺͯͳϒϩάͳͲʣ.BDLFSFMʹΑͬͯࢧ͑ΒΕ͍ͯ·͢ɻ
7 ΤϯδχΞΛऔΓר͘ڥ ɾ·͢·͢ಈతͰศརʹͳΔΠϯϑϥετϥΫνϟʔ ɾޮతʹෳࡶੑͱ͖߹͏͜ͱ͕ٻΊΒΕΔ
8
9 DevOpsͷத֩ͱͯ͠ Mackerel୯ͳΔࢹαʔϏεͰ͋Γ·ͤΜ ༷ʑͳΈͱ؆୯ʹΈ߹Θͤɺ։ൃӡ༻ϥΠϑαΠΫϧͷ த֩ͱͯ͠ޮԽΛଅਐ͠·͢ Dev Ops
10 DevOps
11 ͯͳͰͷ%FW0QT
12 DevOpsͷఆٛ • EFWPQTͱͷߟ͑ํͰ͋ΓɺࣄͷਐΊํͰ͋Δʢ˞ʣ • ͯͳͰπʔϧΛࢦͨ͠ΓɺΧϧνϟʔΛࢦͨ͠Γଟٛత ͳ༻ޠͱ͍͏ೝࣝΛ͍ͯ͠·͢ • %FW0QTͷจ຺ͰޠΒΕΔπʔϧ͝Ζ͔Βಋೖ ʢQVQQFUͳͲʣ
˞ॻ੶ʮ&GGFDUJWF%FW0QTʯΑΓҾ༻
13 ݩʑͷ৫ମ੍ͱׂ αʔϏεɾγεςϜ։ൃຊ෦ ୈ̍ʙୈ̑άϧʔϓ γεςϜ ϓϥοτϑΥʔϜ෦ %FW 0QT ΞϓϦέʔγϣϯΤϯδχΞ ˠΞϓϦέʔγϣϯɾαʔϏε։ൃ
ΦϖϨʔγϣϯΤϯδχΞ ˠΠϯϑϥج൫ͷߏஙʴӡ༻
14 DevOps • զʑ͕ײ͍ͯͨ͡՝ ΦϖϨʔγϣϯΤϯδχΞ͕ԣ۲ͰରԠ͢Δࣄ͕ۀͷϘτϧωοΫʹ Πϯϑϥӡ༻ۀͷͷ͔ͨΑΓ ։ൃνʔϜ͕ʮΠϯϑϥΦʔφʔγοϓʯΛ࣋ͭͱ͍͏ߟ͑ํʹม͑ͨ
15 ׂͷมߋʢ৽ʣ αʔϏεɾγεςϜ։ൃຊ෦ ୈ̍ʙୈ̑άϧʔϓ γεςϜ ϓϥοτϑΥʔϜ෦ %FW 0QT ΞϓϦέʔγϣϯΤϯδχΞ ΦϖϨʔγϣϯΤϯδχΞ
ΠϯϑϥΦʔφʔγοϓΛͭ ωοτϫʔΫڞ௨ج൫ʹઐ೦ɾྗ
16 ΦʔφʔγοϓΛͭ ΠϯϑϥΦʔφʔγοϓͱʁ ΞϓϦέʔγϣϯΤϯδχΞ͕ΠϯϑϥྖҬ·ͰΛ ࣋ͪɺোରԠ͕Ͱ͖ͨΓɺඞཁͳ։ൃڥͷߏஙɺຊ ൪ͷೖΛࣗͨͪͷஅͰ͓͜ͳ͑ΔΑ͏ͳঢ়ଶɻ
17 ΦʔφʔγοϓΛਪਐ͢ΔͨΊʹͬͨ͜ͱ • $50͔Βͷϝοηʔδϯά • ٕज़ษڧձɺϋοΧιϯʢΠϯϑϥྖҬεΩϧͷ֫ಘʣ • ΣϒΦϖϨʔγϣϯΤϯδχΞ͔Β43&৬छมߋͯ͠ ։ൃνʔϜઐଐஔʢΦʔφʔγοϓͷਪਐʣ •
Πϯϑϥͷ͍߹ΘͤνϟϯωϧΛ࡞ͬͨʢBTLJOGSBʣ
18 ͯͳͷதͰͷMackerel • ʮΘ͔Βͳ͍ʯ͜ͱΛʮΘ͔ΔʯΑ͏ʹ͢Δπʔϧ • .BDLFSFMͷΞϥʔτΛݟͳ͕Βɺى͖ͨোͱରࡦͷਐḿ ֬ೝͳͲΛΞϓϦέʔγϣϯΤϯδχΞͱ43&͕Ұॹʹ νΣοΫ • ʮ/8ʯʮαʔόʯͰ͚Δ͜ͱͳ͘ʮϩʔϧʯͱ͍͏֓
೦ͰϚοϐϯά • ڞ௨ݴޠΛ࣋ͭ • Ұॹʹվળ͢ΔจԽΛৢ • ΞϓϦέʔγϣϯɾΠϯϑϥ྆ࢹ ͔ΒΑΓޮՌతͳվળࡦΛબ ͢Δ ΞϓϦέʔγϣϯ ΤϯδχΞ 43&
19 ϩʔϧ͕࠷ߴͷརศੑΛ ༧ΊαʔϏεʗϩʔϧʗϗετΛࢦఆ͢Δ͜ͱͰɺࣗಈతʹάϥ ϑࢹઃఆͳͲ͕ઃఆ͞ΕΔͨΊɺಛʹେنڥͰͷӡ༻ෛ ՙܰݮʹޮՌతͰ͢
20 ͯͳͰ׆༻͍ͯ͠Δπʔϧ܈
21 جຊػೳ
22 ΞʔΩςΫνϟ Mackerel͔Β ֎෦αʔϏε ͷࢹ ΤʔδΣϯτ͔Β ϝτϦοΫΛߘ HTTPS REST API
23 ؆୯ɻ͙͢ ͡ΊΒΕ·͢ • ΨΠυʹ͕ͨͬͯ͠ίϚϯυΛ࣮ߦ͢Δ͚ͩ • ͋ΕेͰ͢ • ΤʔδΣϯτ͕ࢮ׆ࢹΛࣗಈతʹ։࢝ •
ΤʔδΣϯτ͕ϦιʔεͷϝτϦΫεΛࣗಈऔಘ mackerel-agent written in Go
24 ཏతͳϝτϦΫεɾࢹϧʔϧ ɾ63-֎ܗࢹϗετࢮ׆ࢹϦιʔεࢹϩάࢹ ɾ"84"[VSFΦʔτεέʔϧରԠ ɾࣗ࡞ϓϥάΠϯͱͷ࿈ܞ • ѹతଟͷࢹʹରԠ • ଞࢹπʔϧ͔ΒͷҠߦࣄྫଟʂ
25 ࢹϧʔϧͷઃఆඞཁ • ϞχλϦϯάʹ͓͚Δ՝ • ࢹϧʔϧͷϝϯςφϯε ॏཁ͕ͩख͕͔͔ؒΔ • ੩తͳᮢͷࢹ͚ͩͰݕ ग़͕͍͠ঢ়گ͋Δ
• ࢹϧʔϧΛదʹઃఆ͢Δ ͨΊʹɺ͋Δఔͷࣝʢϛ υϧΣΞͳͲʣ͕ඞཁ
26 ಛతͳػೳ
27 AWSΠϯςάϨʔγϣϯ ɾAWS CloudWatch API͔Β༷ʑͳϝτϦοΫΠϕϯτΛ औಘ͠ՄࢹԽ ɾ1ͷϗετͱͯ͠ཧ ɾEC2, ELB, RDS,
ElastiCache, RedshiftͳͲ ॱ֦࣍େத
28 ઈࢍϦϦʔεܧଓதʂ 6QEBUF 6QEBUF 6QEBUF 6QEBUF
6QEBUF 6QEBUF • "NB[PO&$4 • "NB[PO4&4 ܧଓతʹϦϦʔε༧ఆʂ
29 0 0+'/$!#*) %&( -+,./ "+ +'/
2
30 #" /' ! $ -&)*+ (#" ,% .0
-
31 n 2 n 2 2 n 0/2 2 2
n 0 2 )'!, ( %&+ # "- (*&&$
32 / l X U I l e1 / l
r c M k a / l
34 ίϯςφͷਖ਼ࣜαϙʔτ • .BDLFSFMͷ֓೦ͱͯ͠ίϯςφΛදݱ • ΑΓίϯςφΛ׆༻͍͢͠ڥΛఏڙ Service Role Host Host
Container Container Container Role Role Container Container Host Host Host Containers Hosts
35 λεΫ1PEͷࢹ • .BDLFSFMͷίϯςφΤʔδΣϯτɺλεΫ &$4 1PE ,VCFSOFUFT Λࢹ͠·͢ •
ࢹ͍ͨ͠λεΫ1PEʹαΠυΧʔͱͯ͠NBDLFSFMDPOUBJOFS BHFOUΛಉډ • ࢹର͕ݸʑͷίϯςφͰͳ͍͜ͱ͕ϙΠϯτ • ΦʔέετϨʔγϣϯϓϥοτϑΥʔϜ͕࡞͢Δཧ༻ͷίϯςφ ͳͲɺࢹ͕ෆཁͳίϯςφରʹؚ·Εͳ͍ • λεΫ1PEʹଐ͢ΔίϯςφΛαʔόϓϩηεͷΑ͏ʹࢹͰ͖Δ • ࡶԻΛආ͚ͨγϯϓϧͰݟ͍͢ઃܭ
36 αΠυΧʔͱ࣮ͯ͠ߦ • λεΫ1PEͷαΠυΧʔͱ࣮ͯ͠ߦ͠·͢ ϊʔυ ϊʔυ ίϯςφΦʔέετϨʔγϣϯϓϥοτϑΥʔϜ λεΫ1PE ίϯςφ" NBDLFSFM
DPOUBJOFS BHFOU λεΫ1PE ίϯςφ% NBDLFSFM DPOUBJOFS BHFOU λεΫ1PE ίϯςφ# λεΫ1PE ίϯςφ$ Ϋϥελ αΠυΧʔͱ࣮ͯ͠ߦ ͞ΕͨλεΫ1PEͷ ίϯςφΛࢹ ཧ༻ͷίϯςφͳͲ ෆཁͳίϯςφࢹ ͠ͳ͍
37 .BDLFSFMը໘ྫ • ैདྷͷ.BDLFSFMΛ౿ऻͨ͠γϯϓϧͰݟ͍͢6*
38 ͜Ε·Ͱಉ༷ϩʔϧάϥϑͰ • λεΫ1PEʹϗετͱͯ͠αʔϏεɺϩʔϧΛઃఆՄೳ • ϩʔϧάϥϑͰλεΫ͝ͱͷϝτϦοΫͷ߹ܭ͕ݟΒΕΔ
39 αϙʔτ͢ΔϓϥοτϑΥʔϜ • "NB[PO&$$POUBJOFS4FSWJDF &$4 • 8JOEPXTίϯςφର֎ͱͳΓ·͢ • "84'BSHBUF 'BSHBUF
• ,VCFSOFUFT
40 ΤʔδΣϯτఏڙํ๏ • %PDLFSΠϝʔδͰఏڙ͠·͢
41 ඪ४Ͱࣗಈୀ • λεΫ1PEͷऴྃ࣌ʹࣗಈୀ͠·͢ • ࡉ͔ͳλεΫͷ࡞ɾऴྃϩʔϧάϥϑͰදݱՄೳ • ະຬͰऴྃ͢ΔλεΫ1PEͷ߹ɺϝτϦοΫߘ͕͞Εͳ͍߹͕͋Γ·͢ɻ ίϯςφΤʔδΣϯτ͕ ऴྃࣗ͠ಈୀ͍ͯ͠Δ
42 .BDLFSFM։ൃϩʔυϚοϓ • "84ΠϯςάϨʔγϣϯ֦ॆ • ػցֶशΛ׆༻ͨ͠ػೳ։ൃ • ίϯςφԽରԠ • GCPΠϯςάϨʔγϣϯͷ։ൃ
• SAMLೝূରԠ • ࣌ܥྻσʔλϕʔεͷ֦ு ͋͘·Ͱ༧ఆͰ͋ΓίϛοτϝϯτͰ͋Γ·ͤΜ
43 Ձ֨ɺτϥΠΞϧ
44 αʔϏεϓϥϯ ϘϦϡʔϜσΟεΧϯτ͋Γ
45 .BDLFSFMͷಋೖ·Ͱͷϑϩʔ τϥΠΞϧ ຊ൪ಋೖ ӡ༻։࢝ ͝ܖ Ϋʔϙϯ ίʔυൃߦ ٻॻ͍ɾϘϦϡʔϜσΟεΧϯτͷΈ ˞िؒ
ಋೖ͔Βӡ༻·Ͱɺ$3& ͕Ұ؏ͯ͠ ຊޠ Ͱαϙʔτ͠·͢ʂ
48 ͓٬༷
49 ࣄྫͨ͘͞Μ࡞͍͖ͬͯ·͢ʂ IUUQTNBDLFSFMJPKBCMPH
50 NBDLFSFMJP