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
Transcript
42 slides
ίϯςφͷϝτϦΫεͱ ϞχλϦϯάύλʔϯ 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͕͋Δ
More Decks by Hayato Imai
See All by Hayato Imai
Kubernetes撤退、 その後のはてなの取り組み / kubernetes meetup tokyo number 52
hayajo
9
7.5k
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
460
Ncatをつかおう / Use Ncat
hayajo
1
3.9k
Other Decks in Technology
See All in Technology
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
140
大江戸Ruby会議でデータベース クライアントの話をするのは 間違っているだろうか
yahonda
1
120
複数システムが同居した 15 年物の AWS アカウントを解体するための考古学
wa6sn
3
150
Quick Automate | 目指せ Quick マスター 12
inariku
PRO
1
110
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.2k
「AIチャットからもできないの?」と言われたら ~業務アプリをMCP対応するときの認証・認可の勘所
oidfj
0
330
Kiro Crew 入門 (手を離しても進む仕事) | 目指せ Kiro マスター 11
inariku
PRO
4
740
Biohub - Cell Tracking During Development 5th place solution
rist
0
150
会社説明資料_最新版
demaecan
0
32k
Kiro Web 入門 (サインインから、頼み方、PR の受け取り、クラウドの決まりまで) | 目指せ Kiro マスター 04
inariku
PRO
2
110
AI対話型分析を作成し、リリースするまでの話 / The Road to Release: Buiding AI Conversational Analytics
yappli_developers
0
110
思考過程から秘密が漏れる:Amazon Bedrock上のKimi K3を5つの方法で攻めたら、25回中22回漏洩した話
yama3133
1
160
Featured
See All Featured
New Earth Scene 8
popppiees
5
2.8k
Marketing to machines
jonoalderson
1
6k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
300
The SEO identity crisis: Don't let AI make you average
varn
0
630
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
380
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Designing for humans not robots
tammielis
254
26k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.3k
Become a Pro
speakerdeck
PRO
31
6.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Between Models and Reality
mayunak
4
580
Unsuck your backbone
ammeep
672
58k