Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
コンテナのメトリクスと モニタリングパターン / 190320-sakura-event
Search
Hayato Imai
March 20, 2019
Technology
1.8k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コンテナのメトリクスと モニタリングパターン / 190320-sakura-event
Hayato Imai
March 20, 2019
More Decks by Hayato Imai
See All by Hayato Imai
Kubernetes撤退、 その後のはてなの取り組み / kubernetes meetup tokyo number 52
hayajo
9
7.4k
Mackerelにおける Cloud Nativeへの取り組みと チームへ与えた変化 / CloudNative Days Tokyo 2020
hayajo
2
1.6k
MackerelにおけるKubernetes利用の取組みとこれから / Kubernetes Meetup Tokyo #22
hayajo
20
10k
Mackerelチームのコンテナ開発における戦略とこれから / 190722-cndt2019
hayajo
1
1.9k
AWSコンテナサービス入門 / nds60-jaws-ug
hayajo
0
3.1k
Mackerelコンテナエージェントによる コンテナ監視について / Mackerel Meetup #13 Tokyo
hayajo
1
10k
Docker for Mac/Windows ではじめる Kubernetes / NDS55 Docker with Kubernetes
hayajo
16
16k
Terrafromで構築するマルチクラウドプラットフォームインフラストラクチャ / NDS53 Terraform
hayajo
0
450
Ncatをつかおう / Use Ncat
hayajo
1
3.9k
Other Decks in Technology
See All in Technology
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
0
120
Kiro Crewをはじめよう
kizawa2020
1
150
SREでアラート疲れを 解決しよう!
kairim0
1
230
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
600
AIは「聞けば答える」から「任せると自分で進める」へ - JACTIMペナン地域部会・ペナン三水会講演
knishioka
0
100
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
420
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.3k
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
190
その Valkey 使いこなしていますか?
onk
PRO
1
130
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
610
FOSS4Gを活用した自治体業務DXの試み
470715
0
150
会社説明資料
persolserverworks
0
9.7k
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
900
Site-Speed That Sticks
csswizardry
13
1.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Navigating Weather and Climate Data
rabernat
0
550
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
930
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
The untapped power of vector embeddings
frankvandijk
2
1.9k
How STYLIGHT went responsive
nonsquared
100
6.3k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Designing for humans not robots
tammielis
254
26k
Transcript
ίϯςφͷϝτϦΫεͱ ϞχλϦϯάύλʔϯ 2019/03/20 ͯͳ×͘͞Β͕ߟ͑ΔςΫϊϩδʔͷະདྷ ʙίϯςφɾࢄܕσʔληϯλʔʙ #͘͞ΒͷΠϕϯτ
ࣗݾհ • ࠓҪ൏ਓ(id:hayajo_77) • MackerelνʔϜ SRE • ίϯςφཁૉٕज़ɺपลٕज़ ίϯςφٕज़ೖԾԽͱͷҧ͍ΛΓɺཁૉٕज़Λ৮ֶͬͯ΅͏ IUUQTFNQMPZNFOUFOKBQBODPNFOHJOFFSIVCFOUSZ
ࢹͱϝτϦΫε
ࢹͷత • γεςϜ͕݈શʹಈ͍͍ͯΔ͔ΛνΣοΫ͢Δ • ظͨ͠ͱ͓Γʹಈ͍͍ͯΔ͔ • ՁΛੜΈग़͍ͯ͠Δ͔ • Ϧιʔεʹաෆͳ͍͔ •
োͷ༧ஹͳ͍͔ • →ϝτϦΫεͷऔಘ/ऩूɺࢹɺΞϥʔτͰ࣮ݱ͢Δ
2ͭͷλΠϓͷϝτϦΫε • 2ͭͷλΠϓͷϝτϦΫεʹ͚ͯߟ͑Δ • ΞϓϦέʔγϣϯϝτϦΫε • ϦιʔεϝτϦΫε
ΞϓϦέʔγϣϯϝτϦΫε • γεςϜ͕ਖ਼ৗʹಈ͍ͯΔ߹͍Λࣔ͢ • ϦΫΤετɺޭ/ࣦഊɺϨεϙϯελΠϜɺεϧʔϓοτͳͲ • γεςϜͷਖ਼ৗੑՁͷࢦඪͱͳΔ • ͜ͷϝτϦΫεোݪҼڀ໌ʹཱͪʹ͍͘
ϦιʔεϝτϦΫε • γεςϜ͕ґଘ͢ΔϦιʔεͷ༻ঢ়گΛࣔ͢ • Ϧιʔε༻ྔ/ɺɺΤϥʔͳͲ • োݪҼڀ໌ΩϟύγςΟϓϥϯχϯάͷࢦඪͱͳΔ • ͜ͷϝτϦΫε͚ͩͰγεςϜ͕ਖ਼ৗʹಈ͍͍ͯΔ͔͔Βͳ͍
ͲͪΒॏཁ • ΞϓϦέʔγϣϯϝτϦΫεˠϦιʔεϝτϦΫεͷॱʹௐࠪ͢Δ • ଞͷΞϓϦέʔγϣϯʹґଘ͍ͯ͠Δ߹ಉ͡Α͏ʹௐࠪ͢Δ • ΣϒαʔόɺΞϓϦέʔγϣϯαʔόɺσʔλϕʔεαʔό
ίϯςφͷϝτϦΫε
ίϯςφͷΞϓϦέʔγϣϯϝτϦΫε • ΞϓϦέʔγϣϯʹΑͬͯऔಘͰ͖ΔϝτϦΫε͞·͟· • ϦΫΤετɺޭ/ࣦഊɺϨεϙϯελΠϜɺεϧʔϓοτͳͲ
ίϯςφͷΞϓϦέʔγϣϯϝτϦΫε औಘํ๏ • ϑΝΠϧ • ϩά • ΤϯυϙΠϯτ
ϑΝΠϧ • σʔλϘϦϡʔϜ • ίϯςφؒͰϑΝΠϧσΟϨΫτϦΛڞ༗ • Bind mounts • ίϯςφϗετͱϑΝΠϧσΟϨΫτϦΛڞ༗
$ docker run -v $(pwd):/data alpine /bin/sh -c 'echo "hello
world" >/data/hello' $ cat hello hello world e.g. Bind mounts
ϩά • ΞϓϦέʔγϣϯͷSTDOUT • docker logs ίϚϯυ • kubectl logs
ίϚϯυ • ίϯςφͷϩάϑΝΠϧ • σʔλϘϦϡʔϜ, Bind mountsΛར༻
$ CONTAINER=$(docker run -d alpine /bin/sh -c 'while true; do
date; sleep 1; done') $ docker logs --since 3s $CONTAINER Tue Mar 19 10:07:57 UTC 2019 Tue Mar 19 10:07:58 UTC 2019 Tue Mar 19 10:07:59 UTC 2019 e.g. docker logs
ΤϯυϙΠϯτ • ωοτϫʔΫܦ༝ͰΞΫηεՄೳͳΤϯυϙΠϯτ • ΞϓϦέʔγϣϯͰ࣮͢Δඞཁ͕͋Δ • /metrics, /stats, /health
$ curl http://${CONTAINER_IPADDR}/nginx_status Active connections: 43 server accepts handled requests
7368 7368 10993 Reading: 0 Writing: 5 Waiting: 38 e.g. Nginxͷstub_status
ίϯςφͷϦιʔεϝτϦΫε • CPU • Memory • I/O • ωοτϫʔΫ
ίϯςφͷϦιʔεϝτϦΫεऔಘํ๏ • ԾϑΝΠϧ • API • CLI
ԾϑΝΠϧ • cgroupͷstatϑΝΠϧ • cpu/cpuacct, memory, blkioαϒγεςϜͳͲ • /proc/PID/net/dev
$ cat /sys/fs/cgroup/memory/docker/${CONTAINER}/memory.stat cache 8192 rss 192512 rss_huge 0 mapped_file
0 dirty 0 [...] e.g. memory.stat
API • ίϯςφϥϯλΠϜίϯςφΫϥελͷAPIͳͲ • Docker stats API (Docker) • Kubernetes/kubelet
API (Kubernetes) • Task Metadata Endpoint (ECS) • cAdvisor API
$ curl -s --unix-socket \ /var/run/docker.sock http://localhost/${CONTAINER}/stats?stream=false | \ jq
. [...] "cpu_stats": { "cpu_usage": { "total_usage": 963481062, "percpu_usage": [ 431767249, 531713813 ], [...] e.g. Docker stats API
CLI • ίϯςφϥϯλΠϜίϯςφΫϥελ͕ఏڙ͢ΔίϚϯυ • docker stats ίϚϯυ • kubectl top
ίϚϯυ
$ docker stats --no-stream CONTAINER ID NAME CPU % MEM
USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS d7f9c5c0acfc app 0.00% 1.945MiB / 1.952GiB 0.10% 1.5kB / 0B 5.11MB / 0B 2 8c484a94aca7 monitor 0.19% 652KiB / 1.952GiB 0.03% 1.41kB / 0B 1.24MB / 0B 2 e.g. docker stats
ωοτϫʔΫϝτϦΫεͷҙ • /proc/PID/net/dev • ΠϯλʔϑΣʔε୯ҐͷϝτϦΫε
$ cat /proc/${CONTAINER_PID}/net/dev Inter-| Receive | Transmit face |bytes packets
errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ecs-eth0: 467809174 273650 0 0 0 0 0 0 27453834 328421 0 0 0 0 0 0 eth0: 30877420 169783 0 0 0 0 0 0 55160434 183407 0 0 0 0 0 0 e.g. /proc/PID/net/dev
e.g. DockerͷωοτϫʔΫϞʔυ
e.g. DockerͷωοτϫʔΫϞʔυ • bridge, none • Private Network Mode •
ίϯςφ͝ͱʹಠཱͨ͠ΠϯλʔϑΣʔε • host, container • Shared Network Mode • ϗετϓϩηεଞͷίϯςφͱڞ௨ͷΠϯλʔϑΣʔε
ίϯςφΫϥελʹ͓͚Δ ϝτϦΫεͷऩू
ίϯςφΫϥελͰϝτϦΫεΛͲ͏ूΊΔ͔ʁ
ίϯςφΫϥελͰϝτϦΫεΛͲ͏ूΊΔ͔ʁ • ίϯςφεέδϡʔϥʹΑΓదͳϗετʹσϓϩΠ͞ΕΔ • ϗετεέʔϧ͢Δ • ίϯςφͰϞχλϦϯάΤʔδΣϯτΛಉډͤ͞ΔͷNG
ίϯςφΫϥελʹ͓͚ΔϞχλϦϯάͷύλʔϯ • per-Host Monitoring Agent • Sidecar Monitoring Agent
per-Host Monitoring Agent
per-Host Monitoring Agent • ϗετ୯ҐͰίϯςφΛࢹ͢Δύλʔϯ • ֤ϗετʹϞχλϦϯάΤʔδΣϯτίϯςφΛσϓϩΠ͢Δ • ϗετͰಈ͘ίϯςφҰཡ͔ΒಈతʹࢹઃఆΛੜ͢ΔͨΊɺ ෳࡶͳ࣮͕ඞཁ
Sidecar Monitoring Agent
Sidecar Monitoring Agent • ίϯςφ୯ҐͰࢹ͢Δύλʔϯ • ࢹରͷίϯςφʹԣ͚(Sidecar)͢ΔΑ͏ʹϞχλϦϯάΤʔ δΣϯτίϯςφΛσϓϩΠ • ࢹରͷίϯςφͷΈʹϑΥʔΧεͰ͖ɺίϯςφؒͰωοτϫʔ
ΫϑΝΠϧͳͲͷϦιʔεΛڞ༗Ͱ͖ΔͨΊ࣮γϯϓϧ • 1ϗετʹෳͷΤʔδΣϯτ͕σϓϩΠ͞ΕΔͷͰϦιʔε໘Ͱ ͋Γ
MackerelίϯςφΤʔδΣϯτ ʢύϒϦοΫϕʔλʣ
MackerelίϯςφΤʔδΣϯτ(ύϒϦοΫϕʔλ)
MackerelίϯςφΤʔδΣϯτ(ύϒϦοΫϕʔλ) • ECS Task/Kubernetes Podઐ༻ͷϞχλϦϯάΤʔδΣϯτ • Sidecar Monitoring AgentΛ࠾༻ •
কདྷతʹFargateͷΑ͏ͳΠϯϑϥετϥΫνϟͷཧ͕ෆཁͳίϯςφϓϥοτ ϑΥʔϜ͕ओྲྀʹͳΔͱߟ͍͑ͯΔ • ܰྔΤʔδΣϯτͱͯ͠࠶ઃܭͯ͠ϦιʔεফඅΛܰݮ • ΫϥελΤʔδΣϯτͷAPI͔ΒϦιʔεϝτϦΫεΛऔಘ • SidecarʹΑΔϦιʔεڞ༗ʹΑΓࢹରͷΞϓϦέʔγϣϯ༷ʹ͍ۙࢹ͕Մೳ
·ͱΊ
·ͱΊ • ΞϓϦέʔγϣϯϝτϦΫεͱϦιʔεϝτϦΫεʹΘ͚ͯߟ͑Δ • ίϯςφͷϝτϦΫεͱͦͷऔಘํ๏ΛΔ • ίϯςφΫϥελʹ͓͚ΔϞχλϦϯάύλʔϯͱͯ͠per-Host Monitoring AgentͱSidecar Monitoring
Agent͕͋Δ