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
ペパボOpenTelemetry革命
Search
Kazuhiko Yamashita
May 09, 2024
Programming
2.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ペパボOpenTelemetry革命
社内のイベントでお話しました
Kazuhiko Yamashita
May 09, 2024
More Decks by Kazuhiko Yamashita
See All by Kazuhiko Yamashita
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
2.5k
継続的な負荷検証を目指して
pyama86
3
1.8k
成長期における、 ユーザー領域の複雑さと 整備の進め方
pyama86
1
750
Stay Hacker 〜九州で生まれ、Perlに出会い、コミュニティで育つ〜
pyama86
2
6.6k
Managing Database Migrations in Go Backend Systems
pyama86
0
560
新しい職場の CI が 20 分かかっていたらあなたならどうする?
pyama86
2
1.5k
事業を差別化する技術を生み出す技術
pyama86
4
2.3k
Re:Define 可用性を支える モニタリング、パフォーマンス最適化、そしてセキュリティ
pyama86
9
11k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
2.1k
Other Decks in Programming
See All in Programming
AIの中の人になってみる
htkym
0
150
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
130
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
550
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
190
Dockerfile CMD for Node.js
grazie1999
0
160
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
230
T3DD26: From RAGs to Riches
martinhelmich
0
130
Hono + Inertia + React で LP を構築した話
oukayuka
2
190
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
120
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
500
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
2
920
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
200
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.3k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
440
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
390
The agentic SEO stack - context over prompts
schlessera
0
880
From π to Pie charts
rasagy
0
350
Building Flexible Design Systems
yeseniaperezcruz
330
41k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Building the Perfect Custom Keyboard
takai
2
860
A Tale of Four Properties
chriscoyier
163
24k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Transcript
ϖύϘOpenTelemetryֵ໋ ʙ͜ͷલMOROHAΈͯେ߸ٽ͠·ͨ͠ʙ
ࢁԼ!QZBNB (.0ϖύϘٕज़ج൫νʔϜ γχΞɾϓϦϯγύϧ ɹΩϟϯϓɺཱྀߦɺώϧτϯ८ΓɺιϫχΤ८Γ 1SPYZαʔό։ൃɺ0QFO5FMFNFUSZ
45/4 -JOVY/444FSWFS TUOTKQ
None
ࠓ͢͜ͱ OpenTelemetry֓ཁ OpenTelemetryΛಋೖ͖͔͚ͨͬ͠ OpenTelemetryಋೖঢ়گ ࠓޙͷల
🍉🌴🏄 GoConference’19 🏄🌴🍉 6 0QFO5FMFNFUSZ ֓ཁ
OpenTelemetry چདྷɺ4BB4044͝ͱʹ࣮͞Ε͍ͯͨςϨϝτϦσʔλͷඪ४Խ IUUQTDMPVEOBUJWFEBZTKQPZ https://opentelemetry.connpass.com/
ςϨϝτϦσʔλ “ςϨϝτϦσʔλɺΦϒβʔόϏϦςΟΛ࣮ݱ͢ΔͨΊʹγεςϜ ιʔε͔Βऩू͞ΕΔग़ྗΛࢦ͠·͢ɻ͜ΕΒͷग़ྗΛ౷߹తʹੳ͢ Δ͜ͱʹΑΓɺࢄڥͰͷγεςϜؒͷؔґଘ͕ؔΘ͔Γ· ͢ɻओʹ༻͞ΕΔσʔλΫϥε ϩάɺϝτϦΫεɺτϨʔεͷ3ͭͰɺ͜Ε ʮΦϒβʔόϏϦςΟͷ3ͭͷபʯͱݺΕ·͢ɻ” https://www.splunk.com/ja_jp/data-insider/what-is-opentelemetry.html ΑΓҾ༻
ΦϒβʔόϏϦςΟ ΦϒβʔόϏϦςΟɾΤϯδχΞϦϯά 6PΑΓҾ༻ “؆୯ʹݴ͏ͱɺࢲ͕ͨͪߟ͑ΔιϑτΣΞγεςϜͷ ʮΦϒβʔόϏϦςΟʯͱɺγεςϜ͕ͲͷΑ͏ͳঢ়ଶʹͳͬͨͱ͠ ͯɺͦΕ͕ͲΜͳʹ৽ͰحົͳͷͰ͋ͬͯɺͲΕ͚ͩཧղ͠આ໌ Ͱ͖Δ͔Λࣔ͢ईͰ͢ɻ·ͨɺͦͷΑ͏ͳ৽Ͱحົͳঢ়ଶʹରͯ͠ ɺࣄલʹσόοάͷඞཁੑΛఆٛͨ͠Γ༧ଌͨ͠Γ͢Δ͜ͱͳ͘ɺ γεςϜͷঢ়ଶσʔλͷ͋ΒΏΔσΟϝϯγϣϯͦΕΒͷΈ߹Θͤʹ ͍ͭͯΞυϗοΫʹௐࠪ͠ɺΑΓσόοά͕ՄೳͰ͋ΔΑ͏ʹ͢Δඞཁ͕
͋Γ·͢ɻ͠ɺ৽͍͠ίʔυΛσϓϩΠ͢Δඞཁ͕ͳ͘ɺͲΜͳ৽Ͱ حົͳঢ়ଶͰཧղͰ͖ΔͳΒɺΦϒβʔόϏϦςΟ͕͋Δͱݴ͑·͢ɻ
https://opentelemetry.io/blog/2024/pro fi ling/
OpenTelemetry https://opentelemetry.io/docs/ ֤ݴޠͷSDK ࣗಈܭɺखಈܭ ϛυϧΣΞ͔Β ςϨϝτϦσʔλΛ ग़ྗ
OpenTelemetry https://opentelemetry.io/docs/ ඪ४Խ͞Εͨϓϩτίϧʹ ରԠͨ͠ΤʔδΣϯτ
OpenTelemetry https://opentelemetry.io/docs/collector/ GoͰ࣮͞ΕͨόΠφϦ͕ɺReceivers,Processors,ExportersΛ࣮ߦ
OpenTelemetry https://opentelemetry.io/docs/ 4BB4 ϗετ͞Εͨ044 ࠩ͠ସ͑Մೳ
OpenTelemetryΛ ಋೖ͖͔͚ͨͬ͠
None
͓Θ͔ΓͩΖ͏͔ʁ https:// fi nance.yahoo.co.jp/quote/USDJPY=FX?styl=cndl&frm=mnthly&trm=mnthly&ovrIndctr=sma%2Cmma%2Clma
ϖύϘͷࣄ ࢄτϨʔγϯά͕ະಋೖ ࢹαʔϏε͕MackerelͱPrometheusͰڞଘ
MackerelͱPrometheus Mackerel Prometheus ຊ൪αʔόͷVM Managed Service Kubernetes Control Plane ࣾαʔϏεͷVM
Kubernetes Node Monitor Servers OpenTelemetryਪਐલ ֎ܗࢹ ϓϥΠϕʔτΫϥυͷHW
MackerelͱPrometheus Mackerel Prometheus ຊ൪αʔόͷVM Managed Service Kubernetes Control Plane ࣾαʔϏεͷVM
Kubernetes Node Monitor Servers Otel CollecotrΛ͍ΕΔͳΒɺ͜͏ͨ͠΄͏͕ແବ͕ͳ͍ ֎ܗࢹ ϓϥΠϕʔτΫϥυͷHW ຊ൪αʔόͷVM
OpenTelemetryಋೖঢ়گ
ίϯϙʔωϯτ VM k8s Metrics ̋ ̋ Trace ̋ ̋ Log
˚ ˚ OpenTelemetryಋೖঢ়گ ̋ϓϩμΫγϣϯͰಋೖࡁΈ ˚લճ.FFUVQͰͨ͠ͱ͖ΑΓਐḿ
Metrics
Metrics ϗετͷϦιʔεhostmetricsͰऔಘ ɹVMͦΕͧΕotel collectorΛΠϯετʔϧ ɹk8sDaemonSetͰ/Λmount receivers: hostmetrics: collection_interval: 1m scrapers:
cpu: metrics: system.cpu.utilization: enabled: true load: metrics: system.cpu.load_average.1m: enabled: true system.cpu.load_average.5m: enabled: true system.cpu.load_average.15m: ...
Metrics %BTICPBSE(JU)VCͰϝτϦΫε໊Ͱൃ۷ͨ͠ https://ten-snapon.com/archives/2983
Metrics 4%,Λར༻ͯ͠ϝτϦΫεΛܭ͍ͯ͠Δ https://ten-snapon.com/archives/2983 if req.Method == http.MethodPost && strings.Contains(req.RequestURI, “cartin")){
if err == nil && res.StatusCode >= 200 && res.StatusCode < 300 { r.successCounter.Add(context.Background(), metric.WithAttributes(semconv.HostName(requestURL.Host))) } else { r.failCounter.Add(context.Background(), 1, metric.WithAttributes(semconv.HostName(requestURL.Host))) } }
Trace
Trace k8sͷμογϡϘʔυͱͯ͠GrafanaΛಋೖࡁΈ k8sͷϩάݕࡧʹGrafana Loki + S3ΛಋೖࡁΈ (SBGBOB5FNQPΛ࠾༻
Trace otelcol k8s DataCenter Tempo pod VM otelcol app VMͷTraceOtel
CollectorΛ ܦ༝ͯ͠ɺk8sͷTempo
΄ͱ͠ΔϚΠΫϩαʔϏεײ
΄ͱ͠ΔϚΠΫϩαʔϏεײ
Log
طଘͷϩάύΠϓϥΠϯ ϩάͷϥΠϑλΠϜʹ߹ΘͤͨετΞʹ֨ೲ
Apache Kafka LBGLBDMVTUFS /var/log/audit.log LBGLBCSPLFS BVEJUMPH UPQJD LBGLBCSPLFS TZTMPH UPQJD
ϩά͝ͱʹτϐοΫΛ͚͍ͯΔ /var/log/syslog
Kafka Exporter 5PQJD͕ݱঢ়ܾΊଧͪͬΆ͍ https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/kafkaexporter
Kafka Exporter ͜͏͍͏ײ͡Ͱॻ͚͍ͨ
ͳΜͱॻ͚·͢!!1
ࠓޙͷల Self Hosted APM ܭଌ͔ΒվળͷαΠΫϧΛճ͢ OpenTelemetryͷߩݙ
Self Hosted APM APMͷՄ༻ੑߴ͘ͳ͍͍ͯ͘ͷͰɺ ӡ༻Ͱ͖ΔͳΒSelf HostedͰ͍͍ ݱࡏSentryΛධՁத
Elastic APMΊͨ ҎલDockerͰىಈͯͦ͜͠ʹϝτϦΫεΛૹ Δ͚͕ͩͩͬͨɺAgentͷΠϯετʔϧ͕ඞཁʹ ͳͬͨΓɺҠߦɺESɺkibanaͷϝϯςίετ͕ ͍ͱݴ͑ͳ͍
ܭଌ͔ΒվળͷαΠΫϧΛճ͢ ܭଌͰ͖ΔΑ͏ʹͳ͕ͬͨɺܭଌͰ͖͍ͯΔ͔ผ ܭଌͰ͖ͨͱͯ͠ɺվળͰ͖Δ͔ผ πʔϧͷڭҭɺϋϯζΦϯ ϘτϧωοΫͷಛఆɺղফ
ܭଌ͔ΒվળͷαΠΫϧΛճ͢
永遠のN+1 net.ipv4.tcp_max_syn_backlog Kubernetes Scheduler 突然のYahooトピックス 特定のバージョンだけで取られる謎のロック Slow Query
ܭଌ͔ΒվળͷαΠΫϧΛճ͢ վળʹ͍Ζ͍ΖͳεΩϧɺ͕ࣝඞཁ σʔλϕʔε: ΫΤϦύϑΥʔϚϯεɺύϥϝʔλʔνϡʔχϯά OS/Kernel: ωοτϫʔΫɺύϥϝʔλʔɺCPUɺϝϞϦʔ ιϑτΣΞ։ൃ: ܭࢉྔɺϦόʔεΤϯδχΞϦϯά ใऩूೳྗ: GitHub
IssueɺThe Linux Kernel ArchivesɺX
ܭଌ͔ΒվળͷαΠΫϧΛճ͢ ͠ΐ͏ͳ͍ɺΘΕͳ͍ɺҙຯ͕ͳ͍ ͦΜͳͷͰ͍͍ɺͱʹ͔͘ॻ͘͜ͱͰ ॻ͚ΔΑ͏ʹͳΓɺؾ͕͍ͭͨΒເͷதͰ ઃܭ͢ΔΑ͏ʹͳΔ
OpenTelemetryͷߩݙ OpenTelemetry(collector)ͷ࣮ൣғͱ͍ͯ receiver,exporter,processor͝ͱʹϝϯςφ͕͍ͯɺ·ΔͰ৫ͷΑ͏ ࣮ࢀߟʹͳΔ͜ͱ͕ଟ͘ɺֶͼͷػձʹͳΔ
ͳΜͱɺ ೖࣾͨ͠Βશ෦ Ε·͢ʂʂ1
܅PUFMʹͳΒͳ͍͔ʁ ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU