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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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.8k
Other Decks in Technology
See All in Technology
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
2.4k
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
270
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
140
絵ではじめるKubernetesセキュリティ
aoi1
4
700
AIエージェントの権限管理 3: Agentic RAG の Fine grained access control 編
ren8k
0
200
人間はどの意思決定を手放せるのか
kawasima
15
8k
あけおめLINE 傾向とその対策
nasa9084
0
290
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
0
490
Von-Neumann Machines, Dreams & The Futures of IT
ufried
0
120
CLIライブラリ開発を支える技術
htnabe
0
150
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
250
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
0
440
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Leo the Paperboy
mayatellez
10
2.3k
Are puppies a ranking factor?
jonoalderson
2
3.9k
BBQ
matthewcrist
89
10k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Skip the Path - Find Your Career Trail
mkilby
1
240
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
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͕͋Δ