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
Operating and Migrating OpenTelemetry Collector...
Search
Kota Kimura
November 18, 2025
11
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Operating and Migrating OpenTelemetry Collector in a 100-Cluster-Scale Multi-Tenant Environment
Kota Kimura
November 18, 2025
More Decks by Kota Kimura
See All by Kota Kimura
KubeCon NA 2024 Recap
kkk777
0
22
Getting Started kubernetes
kkk777
0
66
story about confronting node failure due to excessive memory consumption in kubelet
kkk777
1
56
k8s ecosystem management with using of Argo CD
kkk777
0
200
Featured
See All Featured
Making Projects Easy
brettharned
120
6.7k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
350
Ten Tips & Tricks for a ð± transition
stuffmc
0
150
30 Presentation Tips
portentint
PRO
1
350
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
How to train your dragon (web standard)
notwaldorf
97
6.7k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
500
Transcript
100ã¯ã©ã¹ã¿ãŒèŠæš¡ã®ãã«ãããã³ãç°å¢ãæ¯ãã OpenTelemetry Collector å®è·µãšç§»è¡ ïœãã°ã»ã¡ããªã¯ã¹ä»æ§ã®æåç·ïœ æ ªåŒäŒç€Ÿãµã€ããŒãšãŒãžã§ã³ã éå±± çä¹ / æšæ
掞倪 CloudNative Days Winter 2025 2025/11/18
èªå·±çŽ¹ä» éå±± çä¹ïŒ@amsy810ïŒ CIU - Cycloud Div Tech Lead KaaS
Product Owner Developer ExpertïŒCloudNative é åïŒ Co-Chair: KubeCon + CNCon Japan 2025, CND Board: Cloud Native Community Japan Organizer: Kubernetes Meetup Tokyo, etc æšæ 掞倪 CIU - Cycloud Div Software Engineer KaaS Sub Product Owner LBaaS Core Developer Envoy Gateway: Maintainer
ã¢ãžã§ã³ã 1. èæ¯ 2. OpenTelemetry Collector / Operator æŠèŠ 3.
ãã¡ããªã¯ã¹ãã¢ããã¹ããªãŒã åå 4. ãã¡ããªã¯ã¹ãOpenTelemetry å¯Ÿå¿æã®èæ ®ãã€ã³ã 5. ããã°ãã¢ããã¹ããªãŒã åå 6. ããã°ãOpenTelemetry å¯Ÿå¿æã®èæ ®ãã€ã³ã 7. Collector ã®éçŽãã¿ãŒã³ãšãã€ãã©ã€ã³ãµãŒãã¹ã«åã㊠8. ãŸãšã
èæ¯
AKE ã®æŽå² - çŽ 9 幎éã®æ¬çªç°å¢ã§ã® Kubernetes éçšçµéš
CyberAgent ã 9.5 å¹Žéæ¯ããŠãã AKE 管çã¯ã©ã¹ã¿ ã«ãããã€ããã Cluster ãªãœãŒã¹ãå ã« ãã©ã€ããŒãã¯ã©ãŠãã®
API ãªã©ãæäœãã ãŠãŒã¶ãŒã¯ã©ã¹ã¿ ãæ§ç¯ã»ç®¡çããä»çµã¿
OpenTelemetry Collector å°å ¥åã® AKE ã®èª²é¡â ãŠãŒã¶ãŒã¯ã©ã¹ã¿ã®ãšãŒãžã§ã³ãã¯ã 管çã¯ã©ã¹ã¿ã®ãã¬ã¡ããªããŒã¿ã®éçŽããã¯ãšã³ãã«çŽæ¥æžãèŸŒã æ§æ â» å®éã®ãããŒã§ã¯
èªèšŒèªå¯ã®ãããèªèšŒã³ã³ããŒãã³ããçµç±ããã®ã§ãããå³è¡šã§ã¯å²æããŠããŸã 管çã¯ã©ã¹ã¿ Victoria Metrics ïŒã¡ããªã¯ã¹éçŽããã¯ãšã³ãïŒ Loki ïŒãã°éçŽããã¯ãšã³ãïŒ ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus
OpenTelemetry Collector å°å ¥åã® AKE ã®èª²é¡â ãŠãŒã¶ãŒã¯ã©ã¹ã¿ 管çã¯ã©ã¹ã¿ Promtail Prometheus Victoria
Metrics ïŒã¡ããªã¯ã¹éçŽããã¯ãšã³ãïŒ Loki ïŒãã°éçŽããã¯ãšã³ãïŒ ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus ⢠ãŠãŒã¶ãŒã¯ã©ã¹ã¿ã®å¢å => éçŽããã¯ãšã³ããé«è² è· ã« â¢ äžéå±€ã§ãã¬ã¡ããªãå¶åŸ¡ããè¡ããªã
OpenTelemetry Collector å°å ¥åã® AKE ã®èª²é¡â¡ ãã¬ã¡ããªããŒã¿ã®è»¢éå èšå®ã¯ãŠãŒã¶ãŒã¯ã©ã¹ã¿åŽã«ååš â¢ èšå®å€æŽæã«ãŠãŒã¶ãŒã¯ã©ã¹ã¿åŽã«åœ±é¿ã®ããæäœãå¿ èŠ â¢ å€éš
SaaS ãžã®è»¢éãªã©åçãªèšå®å€æŽã®ãŠãŒã¶ãŒå ¬éãå°é£ ⊠管ççšéã§å¿ èŠãªããŒã¿ã¯ä¿æããå¿ èŠããã£ãã 管çã¯ã©ã¹ã¿ Victoria Metrics ïŒã¡ããªã¯ã¹éçŽããã¯ãšã³ãïŒ Loki ïŒãã°éçŽããã¯ãšã³ãïŒ ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus
OpenTelemetry Collector ã®å°å ¥ãž ãŠãŒã¶ãŒã¯ã©ã¹ã¿ 管çã¯ã©ã¹ã¿ Promtail Prometheus Victoria Metrics ïŒã¡ããªã¯ã¹éçŽããã¯ãšã³ãïŒ
Loki ïŒãã°éçŽããã¯ãšã³ãïŒ ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus äžé局㫠OpenTelemetry Collector ãå°å ¥ ⢠åçãªèšå®å€æŽ ã容æã« ⢠ãŠãŒã¶ãŒã®ä»»æã®åŠçã»è»¢éå èšå® ãå¯èœã«
OpenTelemetry Collector OpenTelemetry Operator æŠèŠ
OpenTelemetry ãš OpenTelemetry Collector ãšã¯ïŒ OpenTelemetry ã解決ããããš âã¡ããªã¯ã¹ã»ãã°ã»ãã¬ãŒã¹ã®ããŒã¿ã¢ãã«ãéä¿¡ãããã³ã«ã®æšæºå Input Output
System Input Output System ç¹å®ããŒã« ã©ã€ãã©ãª OpenTelemetry Tool A Tool B Tool C Tool A Tool B Tool C
OpenTelemetry ãš OpenTelemetry Collector ãšã¯ïŒ OpenTelemetry Collector ã解決ããããš â ãã¬ã¡ããªããŒã¿ã®åéã»åŠçã»è»¢éã®çµ±å
Receivers : åä¿¡ã³ã³ããŒãã³ã e.g. OTLP Receiver, File Receiver⊠Processors : åŠçã³ã³ããŒãã³ã e.g. Batch Processor, Attribute ⊠Exporters : éä¿¡ã³ã³ããŒãã³ã e.g. OTLP Exporter, debug ExporterâŠ
OpenTelemetry Operator Kubernetes äžã« Collector ããããã€ããããã® CRD/Operator ãã¬ã¡ããªããŒã¿ã®å¶åŸ¡ãæè»ã«ãœãããŠã§ã¢ã§å¶åŸ¡å¯èœ kind: OpenTelemetryCollector
metadata: name: test spec: mode: daemonset config: {...OpenTelemetryCollectorã®Config...} Node Node Node
OpenTelemetry Operator Custom Resource ãå 㫠宣èšçã« Collector ã管ç ãã¬ã¡ããªããŒã¿ã®å¶åŸ¡ã æè»ã«ãœãããŠã§ã¢ã§å¶åŸ¡å¯èœ
kind: OpenTelemetryCollector spec: mode: daemonset config: receivers: otlp: {...} processors: memory_limiter: {...} batch: {...} exporters: debug: {} service: pipelines: traces: receivers: [otlp] processors: [memory_limiter, batch] exporters: [debug]
ãã¡ããªã¯ã¹ã ã¢ããã¹ããªãŒã åå
Prometheus v3.0 ãªãªãŒã¹ãããŠãã çŽ 12 幎ã2.0 ã«ãªã£ãŠããã¯çŽ 7 幎 â¢
Remote Write 2.0 ⢠OpenTelemetry ProtocolïŒOTLPïŒå¯Ÿå¿ ⢠Agent mode ã® GA ⢠Native Histogram å¯Ÿå¿ â¢ PromQLã® Time Rangeã®å€æŽ ãããã³ã«
Remote Write ãšã¯ïŒ ããŒã¿ïŒOpenMetricsïŒããªã¢ãŒãã«ããå¥ã®ããŒã¿ã¹ãã¢ã«æžãèŸŒãæ©èœ â¢ è€æ°ã¯ã©ã¹ã¿ã®ã¡ããªã¯ã¹éçŽãé·æä¿åçšã®ããã¯ãšã³ããžã®ä¿ç®¡æãªã©ã«å©çš ⢠Remote Write çšã®ãããã³ã«ãå®çŸ©ãããŠãã
⢠Protocol Buffer + HTTP ã®æ§æïŒgRPC ã¯éçºåœåã«æé©ãªéžæè¢ã§ã¯ãªãã£ãïŒ https://prometheus.io/blog/2021/11/16/agent/ ããŒã¿æ§é 㯠OpenMetrics Specification éãããããŒã¿ã®æ§é 㯠Prometheus ã®é²åãšãšãã«å€å
Remote Write 1.0 ã®èª²é¡ Remote Write 1.0 ãå®è£ åŸã PrometheusïŒOpenMetricsïŒã«ã¯ããŸããŸãªæ©èœãå®è£ â¢
MetadataïŒGauge ã Histgram ãªã©ã®çš®å¥ïŒTYPEïŒã説æïŒHELPïŒãåäœïŒUNITïŒãªã©ã®ä»å æ å ± ⊠ã¹ãã¬ãŒãžãæé©ã«åäœãããããã«ãå³å¯ãªåæå®ãªã©ãå©çšããå€éšã¬ã·ãŒããŒãååšããïŒe.g. Google CloudïŒ âŠ c.f. OpenMetrics Specification ⢠Created timestampïŒã¡ããªã¯ã¹çææã® Unix timestampïŒGoogle Cloud ãªã©äžéšã®å€éšã¬ã·ãŒããŒã§å¿ èŠïŒ ⢠ExamplerïŒãã¬ãŒã¹ãšé£æºãããããã®æ å ±ïŒtrace-idïŒ â¢ Native histogramïŒãã€ãã£ã察å¿ã®ãã¹ãã°ã©ã ãLegacy Histogram ãäžéšéå¹çã æ¢åã®ãããã³ã«äžã« (éå ¬åŒã«)ãã£ãŒã«ãã远å ããŠå®è£ ããŠãããå¹çãæªã ïŒe.g. Metadata ãäœåºŠãéä»ïŒ
Remote Write 1.0 ã§ã®ããŒã¿è»¢é ããŒã¿ãéãéã®æååã®ãããã¯ãŒã¯è»¢éã³ã¹ã ãã¡ã¿ããŒã¿æ§é ãéå¹ç
Remote Write 2.0 ã§ã®ããŒã¿è»¢é åäžã®ã©ãã«ããŒã¿ãã¡ã¿ããŒã¿ã string interning ããŸããŸãªããŒã¿æ§é ãæ£åŒã«ãµããŒããã æ§é ã®æé©å
åè: OpenMetrics v2.0 OpenMetrics 㯠Prometheus ã§å©çšããŠããæšæºåã¡ããªã¯ã¹ãã©ãŒããã ⢠2014: Prometheus
exposition format 0.0.4 ⢠2020: OpenMetrics v1.0 ⊠IETFã«æåºãçŸåšã¯ OpenMetris 㯠Prometheus ãããžã§ã¯ãã«åçµ±å ⢠202X: OpenMetrics v2.0 v2.0 ã§ã¯ Prometheus v3 ååŸã§å¯Ÿå¿ãããã®ãªã©ãå«ãæšæºå㞠⢠UTF-8å¯Ÿå¿ â¢ Native Histogram ⢠etc ææ°ã®åå㯠OpenMetrics 2.0 ã® Working Group ã® Docs ãåç § https://prometheus.io/docs/specs/om/open_metrics_spec_2_0/
OpenTelemetry ProtocolïŒOTLPïŒå¯Ÿå¿ Prometheus v3 ã§ã¯ OpenTelemetry ProtocolïŒOTLPïŒã®ããŒã¿ãåãå ¥ãå¯èœã«
Remote Write vs OpenTelemetry Protocol(OTLP) OpenTelemetry ProtocolïŒOTLPïŒã¯ãã«ããã¬ã¡ããªããŒã¿å¯Ÿå¿ ⢠Metrics, Logs,
Traces, ... Remote Write v2 ãããã³ã«ã¯ã¡ããªã¯ã¹ã®ã¿ã察象ã«è»œéåã»å ç¢ãªå®è£ ⢠Prometheus ã³ãã¥ããã£ã¯ã¡ããªã¯ã¹ã«æé©åããããã«ã¹ã³ãŒããçµã£ãŠéçº Prometheus ã OTLP Receiver ãšãªãããšã¯å¯èœ OpenTelemetry ã Remote Write 1.0 Receiver ãå®è£ ããã®ã¯èª²é¡ãã ⢠çŸåš Remote Write 2.0 Receiver ã¯å®è£ å¯èœã«
OpenTelemetry Protocol ãã Prometheus ãžã®è»¢é OTLP ãã Prometheus ã«ããŒã¿ãåãåãå Žåãå¿ èŠã«å¿ããŠããŒã¿ã®å€æãå¿ èŠ 1.
TemporalityïŒæéæ§ïŒ ã®å€æ 2. Resource Attributes ã®å€æ OpenTelemetry ProtocolïŒOTLPïŒ â¢ Delta / Cumulative Temporality ã«å¯Ÿå¿ ⢠ã¡ããªã¯ã¹ã®ä»éããŒã¿ã¯ Resource Attributes ãšãã Key-Value å€ Prometheus ⢠Cumulative Temporality ã«ã®ã¿å¯Ÿå¿ ⢠ã¡ããªã¯ã¹ã®ä»éããŒã¿ã¯ Labels ãšãã Key-Value å€ => OTLP ããããŒã¿ãåãåãéã«ã¯å¿ èŠã«å¿ã㊠Cumulative ãžã®å€æãšããŒã¿æŽåœ¢ãå¿ èŠ
åè: Delta Temporality / Cumulative Temporality Delta Temporality ⢠ååå ±åãããæž¬å®å€ãšã®å·®åãããŒã¿ãšãã
⢠ããŒã¿ãã€ã³ãã®æéç¯å²ã¯ (t0, t1] ã»(t1, t2] ã»(t2, t3] ⢠ç¹å®æéã®æ£ç¢ºãªå€åãææ¡ããããã»ãªã¢ã«ã¿ã€ã ã®ãã¬ã³ããªã©ãæ€ç¥ããããã»åæ£éèšå¯èœã§ã¹ã±ãŒã©ã㫠⢠ãµã³ãã«ã®ããããã¯ãããŒã¿ã®æå€±ãïŒããããã«åŒ±ãïŒ â¢ Datadog 㯠Delta Temporality ãæšå¥š â» Cumulative Temporality ⢠枬å®éå§ä»¥éã®å šäœçãªæž¬å®å€ïŒæ«å°Ÿã«çŸåšã®å€ãããããïŒ â¢ ããŒã¿ãã€ã³ãã®æéç¯å²ã¯ (t0, t1] ã»(t0, t2] ã»(t0, t3] ⢠ç¹å®ã®ããŒã¿ã§ç¶æ ããããã»å±¥æŽãªã©é·æçãªåæãåŸæã»ã¢ã°ãªã²ãŒã·ã§ã³ã容æ ⢠ãµã³ãã«ã®ããããã¯ãæéè§£ååºŠã®æå€±ã ïŒããããã«åŒ·ãïŒ â¢ Prometheus 㯠Cumulative Temporality ã®ã¿ããµããŒã TemporalityïŒæéæ§ïŒã®å€æ ⢠Cumulative > Delta: æéæ§ã倿å¯èœãª Otel Collector Processor ãååš â¢ Delta > Cumulative: ãããŸã§ã¯å Exporter ã§å€æããå®è£ ãäž»æµ âŠ æéæ§ã倿å¯èœãª Otel Collector Processor ãå®è£ äžïŒAlphaïŒ â» Temporality = æéæ§
åè: Cumulative > Delta ãžã®å€æ Cumulative > Delta ãžã®å€ææã«ã¯ã¹ããŒããã«ãªç¶æ ã§å€æãè¡ãå¿ èŠããã 1.
t0=100 2. t1=105 ã® Cumulative å€ãçºçïŒDelta å€ +5ïŒ 3. t2=108 ã® Cumulative å€ãçºçïŒDelta å€ +3ïŒ 4. ã¹ããŒãã®æ¶å€±ïŒåèµ·åãªã©ïŒ 5. t3=110 ã® Cumulative å€ãçºçïŒt2 ã®å€ãããããªããã Delta å€èšç®äžå¯ïŒ ã¹ããŒããã«ãªãããåäžã®ã¡ããªã¯ã¹ã¯åäžã³ã³ããŒãã³ãã倿åŠçãè¡ãå¿ èŠããã ïŒ=ã¹ã±ãŒã©ããªãã£ã®èª²é¡ããïŒ â¢ DaemonSet ã§ããŒãããšã«åäžã®ã³ã³ããŒãã³ããåŠçãã ⢠Sidecar ã§ã¢ããªã±ãŒã·ã§ã³ã®ã¡ããªã¯ã¹ã¯åäžã®ã³ã³ããŒãã³ããåŠçãã ã¹ããŒããæ£ããä¿æããã Deltaå€ã®èšç®ã«èª€ã
åè: Delta > Cumulative ãžã®å€æ Delta ãã Cumulative ãžã®å€ææã«ã¯é åºïŒ out-of-orderïŒåé¡ãã€ããŸãšã
1. t0ïŒCumulative å€ 100ïŒ 2. t2=+5ã® Delta å€ãçºçïŒCumulative å€ 105ïŒ 3. t3=+7ã® Delta å€ãçºçïŒCumulative å€ 112ïŒ 4. t1=+100 ã®ããŒã¿ãé ããŠå°çããå Žå⊠4.1. t0ïŒCumulative å€ 100ïŒ 4.2. t1=+100ã® Delta å€ãå·®ã蟌ã¿ïŒCumulative å€ 200ïŒ 4.3. t2=+5ã® Delta å€ãçºçïŒCumulative å€ 205ïŒ 4.4. t3=+7ã® Delta å€ãçºçïŒCumulative å€ 212ïŒ => ãã§ã«æžã蟌ãŸããæç³»åããŒã¿ã®æžãæ»ããå¿ èŠã«ãªã£ãŠããŸã => äžãäžæ¬ æããå ŽåãCumulative ã®å€èªäœã«ä¿¡ææ§ããªã åé¡ã®åé¿æ¹æ³ ⢠环ç©å€ã®å ¬éãäžå®æéé å»¶ãããïŒé å»¶ããããŒã¿ã®å°çãçºçãã¥ãããªãïŒ â¢ ããã©ãŒãã³ã¹ã®å£åã蚱容ããŠæžãæ»ããè¡ã åã ã® Exporter ã§å€æããã±ãŒã¹ãäž»æµ OTel Processor ã§ã¯é å»¶ããŠã¡ã¢ãªäžã§èšç®
Prometheus Agent mode Remote Write åãã« Prometheus ãæé©åãã Prometheus â¢
ã¯ãšãªãã¢ã©ãŒããããŒã«ã«ã¹ãã¬ãŒãžã®ç¡å¹å ⢠ã«ã¹ã¿ãã€ãºããã TSDB WAL ãžã®çœ®ãæã https://prometheus.io/blog/2021/11/16/agent/
Prometheus Agent mode Remote Write åãã« Prometheus ãæé©åãã Prometheus â¢
ã¯ãšãªãã¢ã©ãŒããããŒã«ã«ã¹ãã¬ãŒãžã®ç¡å¹å ⢠ã«ã¹ã¿ãã€ãºããã TSDB WAL ãžã®çœ®ãæã https://prometheus.io/blog/2021/11/16/agent/
ãã¡ããªã¯ã¹ã OpenTelemetry å¯Ÿå¿æã® èæ ®ãã€ã³ã
Prometheus ãš OpenTelemetry ã®é£æºæ¹æ³ ãæ€èšäºé ã 1. OpenMetrics ãšã³ããã€ã³ãããã®ã¹ã¯ã¬ã€ãæ¹æ³ 2. OpenTelemetry
Collector ãžéçŽããéã®ãããã³ã«ã®éžæ 3. é·æä¿åããã¯ãšã³ããžã®ãããã³ã«ã®éžæ Prometheus OpenTelemetry Collector OpenTelemetry Collector é·æä¿åçšããã¯ãšã³ã ïŒVictoriaMetricsïŒ OpenMetrics endpoint ãŠãŒã¶ãŒã¯ã©ã¹ã¿ 管çã¯ã©ã¹ã¿ â â¡ â¢
Prometheus ãš OpenTelemetry ã®é£æºæ¹æ³ ãæ€èšäºé ã 1. OpenMetrics ãšã³ããã€ã³ãããã®ã¹ã¯ã¬ã€ãæ¹æ³ 2. OpenTelemetry
Collector ãžéçŽããéã®ãããã³ã«ã®éžæ 3. é·æä¿åããã¯ãšã³ããžã®ãããã³ã«ã®éžæ Prometheus OpenTelemetry Collector OpenTelemetry Collector é·æä¿åçšããã¯ãšã³ã ïŒVictoriaMetricsïŒ OpenMetrics endpoint ãŠãŒã¶ãŒã¯ã©ã¹ã¿ 管çã¯ã©ã¹ã¿ â â¡ â¢
â OpenMetrics ãšã³ããã€ã³ãããã®ã¹ã¯ã¬ã€ãæ¹æ³ OpenMetrics ã®ãšã³ããã€ã³ãããã¹ã¯ã¬ã€ãããéã«ã¯ïŒéãã®æ¹æ³ããã â Prometheus ã§ã¹ã¯ã¬ã€ãããïŒ Agent mode
ãå«ãïŒ â¢ Prometheus Operator ã® ServiceMonitor ãªã©ã® CRD ãå©çšå¯èœ ⢠æ¢åã® Prometheus ç°å¢ãšã®çµ±åããããã OpenTelemetry prometheusreceiver Receiver ã§ã¹ã¯ã¬ã€ããã ⢠Prometheus ã® Config ãçŽæ¥æžãå¿ èŠããã ⊠äžå¿ Prometheus APIãšé£æºããèšå®ãæžãã°ã¿ãŒã²ãããååŸå¯èœ ⢠ããã€ãå¶çŽäºé ãååšãã
Prometheus ãš OpenTelemetry ã®é£æºæ¹æ³ ãæ€èšäºé ã 1. OpenMetrics ãšã³ããã€ã³ãããã®ã¹ã¯ã¬ã€ãæ¹æ³ 2. OpenTelemetry
Collector ãžéçŽããéã®ãããã³ã«ã®éžæ 3. é·æä¿åããã¯ãšã³ããžã®ãããã³ã«ã®éžæ Prometheus OpenTelemetry Collector OpenTelemetry Collector é·æä¿åçšããã¯ãšã³ã ïŒVictoriaMetricsïŒ OpenMetrics endpoint ãŠãŒã¶ãŒã¯ã©ã¹ã¿ 管çã¯ã©ã¹ã¿ â â¡ â¢
â¡ OpenTelemetry Collector ãžéçŽããéã®ãããã³ã«ã®éžæ ããŒã¿ã®è»¢éæ¹åãšãããã³ã«ã«ãã£ãŠå¯Ÿå¿æ¹æ³ãç°ãªã ⢠â OTel Collector éã¯
OTLP ã§äžçªå®å®ããŠè»¢éå¯èœ ⢠Prometheus ãã OTel Collector ã«éãå Žåã¯èŠæ€èš PRW1 ã§åè ã® Receiver â»1 ã§ãåäœå¯èœã ãã Prometheus v3 + PRW2 ã®æ§æã§åŸè ã® Receiver â»2 ãæšå¥š Prometheus > OpenTelemetry Collector OpenTelemetry Collector > Prometheus OTLP æªå¯Ÿå¿ Prometheus v3 ããå¯ PRW signalfxgatewayprometheusremotewritereceiver Receiver (PRW 1) â»1 prometheusremotewrite Receiver (PRW2) â»2 prometheusremotewrite Exporter
Prometheus ãš OpenTelemetry ã®é£æºæ¹æ³ ãæ€èšäºé ã 1. OpenMetrics ãšã³ããã€ã³ãããã®ã¹ã¯ã¬ã€ãæ¹æ³ 2. OpenTelemetry
Collector ãžéçŽããéã®ãããã³ã«ã®éžæ 3. é·æä¿åããã¯ãšã³ããžã®ãããã³ã«ã®éžæ Prometheus OpenTelemetry Collector OpenTelemetry Collector é·æä¿åçšããã¯ãšã³ã ïŒVictoriaMetricsïŒ OpenMetrics endpoint ãŠãŒã¶ãŒã¯ã©ã¹ã¿ 管çã¯ã©ã¹ã¿ â â¡ â¢
é·æä¿åããã¯ãšã³ããžã®ãããã³ã«ã®éžæ VicrtoriaMetrics 㯠Prometheus åãã®é·æä¿åçšã®ã¹ã±ãŒã©ãã«ãªã¹ãã¬ãŒãž ⢠â Prometheus Remote Write
v1ãããã³ã«ãåæããã®åºæ¬çãªéžæè¢ ⢠Prometheus Remote Write v2ãããã³ã«ã«ã¯æªå¯Ÿå¿ ⢠â OpenTelemetry ProtocolïŒOTLPïŒ ã«ã察å¿ïŒv1.92.0 2023/7ãïŒ âŠ ãµããŒãããŠããªããããããããã¡ããªã¯ã¹ã¯ vm_protoparser_rows_dropped_total ã§ç¢ºèªå¯èœ ⪠Histogram type ã® bucket ã§ le ã©ãã«ããªã ⪠Summary type ã§ quantile ã©ãã«ããªã ⪠__name__ ã©ãã«ãååšããªã ⪠UTF-8 ã "." ã䜿ãããŠãã OTel Collector ãã転éãããã OTLP ããã®ãŸãŸå©çš ãããããããŠããã¡ããªã¯ã¹ãªã©ã«ã€ããŠã¯é©å®å¯Ÿå¿ OpenTelemetry Collector é·æä¿åçšããã¯ãšã³ã ïŒVictoriaMetricsïŒ
Prometheus ãš OpenTelemetry ã®é£æºæ¹æ³ 1. OpenMetrics ãšã³ããã€ã³ãããã®ã¹ã¯ã¬ã€ãæ¹æ³ 2. OpenTelemetry Collector
ãžéçŽããéã®ãããã³ã«ã®éžæ 3. é·æä¿åããã¯ãšã³ããžã®ãããã³ã«ã®éžæ Prometheus OpenTelemetry Collector OpenTelemetry Collector é·æä¿åçšããã¯ãšã³ã ïŒVictoriaMetricsïŒ OpenMetrics endpoint ãŠãŒã¶ãŒã¯ã©ã¹ã¿ 管çã¯ã©ã¹ã¿ â ⡠⢠ã»Operator/CRDã®å©çš ã»æ¢åç°å¢ãšã®é£æºå®¹ææ§ ã»PRW2ãšæ°Receiverã®æ§æ OTLP ã®ãŸãŸè»¢é ïŒå€æã³ã¹ããé¿ããïŒ
ããã°ã ã¢ããã¹ããªãŒã åå
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Loki) ⢠Structured Metadata ⢠Bloom Filter ⢠Log
Patterns ⢠Schema Upgrade ⢠OTLP ãã€ãã£ããµããŒã
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Loki) Loki ã®ãããã : Data Format chunk : ç¹å®ã©ãã«ã®ãã°ããŒã¿ãéçŽãããã°ã®å¡
{service="ake", component="cilium", env="production"} [INFO] Service finished Label Key/Value hash : 3b2cea097⊠3b2cea097⊠[INFO] Service Started chunk index : ç¹å®ã©ãã«ã«è©²åœãã chunk ãç¹å®ããããã®ããŒã¿æ§é {service="ake"} Query {service="ake", component="cilium", env="production"} [INFO] Service finished Hash value Range Value Value TenantID:service abctgh87:3b2cea097 ake ⊠⊠âŠ
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Loki) Loki ã®ãããã : ã³ã³ããŒãã³ãæ§æ Ingester ⢠ããŒã¿ãã€ã³ã¡ã¢ãªã§ chunk
ãšããŠä¿æ ⢠èšå®ããééã§ããã¯ãšã³ãã¹ãã¬ãŒãžã« flush ⢠chunk ãå§çž®ã Querier ã® read data ãšããŠæäŸ Distributor ⢠ãã°æžã蟌ã¿ãæåã«åãåã ⢠ããŒã¿ã¹ããªãŒã ã®æ£åœæ§ã®è©äŸ¡ãªã©ãè¡ã ⢠replication factor ã«åŸã Ingester ã«è»¢é Querier ⢠LogQL ã䜿ã£ãŠãããŒã¿ãååŸãã ⢠Ingester â ããã¯ãšã³ãã¹ãã¬ãŒãž ã®é ã§ã¯ãšãª ⢠replication factor ã«åŸã è€æ°ã® Ingester ã« ã¯ãšãªãè¡ããéè€æé€ããŠããŒã¿ãè¿ã Compactor ⢠Ingester ãçæãã index file ãå§çž®ãæ€çŽ¢ã®å¹çå ⢠ãã°ã® retention ãåé€ãæ åœ
label ã«ã¯ éçãªæ å ± (region, clusterâŠ) ãå ¥ããã¹ãã§ åçãªæ å ± (timestamp, ipaddr, pod
nameâŠ) ã¯ãªãã¹ãå ¥ããã¹ãã§ã¯ãªããšæšå¥š â ã«ãŒãã£ããªãã£ãé«ããªãããŒã¿ã¯äœ¿ãã¹ãã§ã¯ãªã ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Loki) {service="ake", pod_name="cilium-xxxxx", env="production"} [INFO] Service finished ⢠chunk ãããã®ããŒã¿ãå°ãªããªãã chunk æ°ã¯å¢ãã ⢠index ããŒã¿ã倧ãããªã ã§ã¯ããã°æ¬æäžã«ã¯ãªãããã«ãŒãã£ããªãã£ãé«ãããŒã¿ã¯ã©ãããã° ...ïŒ
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Loki) Structured Metadata ⢠chunk format V4 (schema 13
以äž) ã§å°å ¥ãããããŒã¿æ§é ⢠Loki v2.9.4 以éã§ GA ã§ãLoki v3 以éãGA chunk format ⢠index ã«ã¯å«ãŸãã«ãchunk å éšã« key/value ã®ã¡ã¿ ããŒã¿ãä¿æããä»çµã¿ ⢠ã¯ãšãªé床㯠index label ã®æ¹ãåºæ¬çã«æ©ã Bloom Filter (Experimental) ⢠ããŒã¿ããªããšå€æãããã£ã³ã¯ãã¹ãããããŠã¯ãšãªãè¡ã ã¢ã«ãŽãªãºã ãšããŒã¿æ§é ⢠Loki v3.3 ãã Structured Metadata ã察å¿
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Loki) Log Patterns é¡äŒŒãã°ãšã³ããªãã°ã«ãŒãåããŠå ±éæ§é ãæã€ãã¿ãŒã³ãèªå ã§èå¥ããŠããã â» Loki v3.2.0, Grafana
v11.6.0
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Loki) Schema Upgrade Loki v2.7 以åã§ã¯ BoltDB ãšãã schema
ãæ¡çš Loki v2.8 ãã㯠TSDB ãšããæ°ãã schema ãå°å ¥ index ã®ã¯ãšãªããã©ãŒãã³ã¹ãæ¹åã»æšå¥š schema â» TSDB 㯠Prometheus ã® TSDB ã loki çšã«ãã¥ãŒãã³ã°ããŠãããšã®ããš schema_config: configs: - from: 2019-07-01 store: boltdb object_store: filesystem schema: v11 index: prefix: index_ period: 24h - from: 2025-11-18 store: tsdb object_store: filesystem schema: v13 index: prefix: index_ period: 24h å³ã®ããã« helm ã§ãããæ¥æããæ°ãã schema ã å©çšããããã«æå®å¯èœ ãã ããTSDB to BoltDB ã«ãããšå£ããŠããŸãåé¡ ã ãã£ãã®ã§æ³šæïŒ
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Loki) ⢠Loki v3 ãã OTLP æžã蟌ã¿ããã€ãã£ããµããŒã ⊠OTLP
over HTTP ã®ã¿ãªã®ã§ãotlphttp exporter ã䜿ã ⊠Loki ã® Structured Metadata ã®æå¹åãå¿ èŠ Loki Otel Collector Otlphttp Exporter Otlp Receiver File Receiver http://<loki-addr>/otlp OTLP ãã€ãã£ããµããŒã â¢ åºæ¬çã« OTLP attribute 㯠loki ã® Structured Metadata ã«ä¿åããã
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Loki) OTLP ãš Loki Storage model ãç°ãªããããattribute ã index
label ãšã㊠å©çšããããã«ã¯ æç€ºçã«ãããã³ã°ããå¿ èŠãããããšã«æ³šæïŒ â OTLP ã® Resource Attribute ã«ããŒã¿æ ŒçŽ â¡ loki distributorâs otlp_config ã« index label ã«å ¥ããã Attribute ãæå® 以äžã® Resource Attribute ãªã©ã¯ index label ã« ããã©ã«ãã§çœ®æããã ⢠container.name ⢠k8s.cluster.name ⢠k8s.pod.name â» Grafana 㯠k8s.pod.name ã drop æšå¥š loki: limits_config: allow_structured_metadata: true otlp_config: resource_attributes: attributes_config: - action: index_label attributes: - service.group helm value
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Alloy) Grafana Alloy 㯠Grafana ãéçºããŠãã OSS ã®ãã¬ã¡ããªåéãšãŒãžã§ã³ã ãã°ã®æèã§ã¯
Promtail ã®åŸç¶ã«äœçœ®ããããã¡ããªã¯ã¹ã»ãã°ã»ãã¬ã¡ããªãçµ±äžç®¡çã§ãã OpenTelemetry Collector ãããŒã¹ã«äœãããŠããã®ã§ãæè»ã«ãã€ãã©ã€ã³ãçµãã otelcol.processor.batch "default" { output { logs = [otelcol.exporter.otlp.default.input] } } otelcol.exporter.otlp "default" { client { endpoint = "{{ .Values.ake.remotewrite_endpoint }}" tls { insecure_skip_verify = true } headers = { "X-Scope-OrgID" = "{{ .Values.ake.project }}", } } } ConfigMap ã«èšå®ãå ¥ã㊠Pod ã«ããŠã³ããã èšå®ã¯ Alloy ç¹æã®è¡šèšãªã®ã§ã Otel Collector ã®èšå®ãã倿ããå¿ èŠãã
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Datadog) Datadog Backend Code OTEL SDK DATADOG AGENT OTLP
Otel Collector Datadog Exporter Otlp Receiver File Receiver OTLP Log File â ã¢ããªã±ãŒã·ã§ã³ãã Otel SDK ã䜿ã£ãŠãDatadog Agent ã«éä¿¡ ⢠Datadog Agent ã®ããŒãžã§ã³ 6.48.0 ããã³ 7.48.0 以éã§ã gRPC ãŸã㯠HTTP çµç±ã§ OTLP ãã°ãå¯Ÿå¿ â¢ Datadog Distribution of OpenTelemtry Colletor ã® Receiver ã«éä¿¡
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Datadog) Datadog Backend Code OTEL SDK DATADOG AGENT OTLP
Otel Collector Datadog Exporter Otlp Receiver File Receiver OTLP Log File â¡ ã¢ããªã±ãŒã·ã§ã³ãã Otel SDK ã䜿ã£ãŠãOtel Collector ã«éä¿¡ Otel Collector 㯠OpenTelemetry Collector Builder ã§ Build ãæšå¥š Otlp Receiver ã§ããŒã¿ãåä¿¡ãã Datadog Exporter ã§éä¿¡
ãã°é¢é£ã®ã¢ããã¹ããªãŒã åå (Datadog) Datadog Backend Code OTEL SDK DATADOG AGENT OTLP
Otel Collector Datadog Exporter Otlp Receiver File Receiver OTLP Log File ⢠ã¢ããªã±ãŒã·ã§ã³ã®æšæºãã°ã§ãã¡ã€ã«ã«åºåãã Otel Collector ã§èªã¿èŸŒã¿ Otel Collector 㯠OpenTelemetry Collector Builder ã§ Build ãæšå¥š File Receiver ã§ããŒã¿ãèªã¿åãã Datadog Exporter ã§éä¿¡
ããã°ã OpenTelemetry å¯Ÿå¿æã® èæ ®ãã€ã³ã
ãã°ã®ç§»è¡äºäŸ tips ãšãããã©ãã alloy convert --source-format=promtail --output=<OUTPUT_CONFIG_PATH> <INPUT_CONFIG_PATH> åçš® config
ãã Alloy config ãžã®å€æã¯ã alloy cli ã§å¯èœïŒ â» å¯Ÿå¿ config : otelcol, prometheus, promtail, static clients: - url: http://localhost/loki/api/v1/push scrape_configs: - job_name: example static_configs: - targets: - localhost labels: __path__: /var/log/*.log local.file_match "example" { path_targets = [{ __address__ = "localhost", __path__ = "/var/log/*.log", }] } loki.source.file "example" { targets = local.file_match.example.targets forward_to = [loki.write.default.receiver] } loki.write "default" { endpoint { url = "http://localhost/loki/api/v1/push" } external_labels = {} } promtail alloy
ãã°ã®ç§»è¡äºäŸ tips ãšãããã©ãã ç§»è¡äžã« Promtail ãš Alloy ãåã k8s pod
log ãããã«ã©ã€ãããŠããŸã ⢠Promtail ãš Alloy ãåæã«ååšããã±ãŒã¹ ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Alloy Log File ⢠Promtail ã皌åããŠããŠå®å šã«æ¶ããã®ã¡ã« Alloy ããããã€ããã±ãŒã¹ ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Alloy Log File Q. ãã€çºçããïŒ
ãã°ã®ç§»è¡äºäŸ tips ãšãããã©ãã ç§»è¡äžã« Promtail ãš Alloy ãåã k8s pod
log ãããã«ã©ã€ãããŠããŸã 管çã¯ã©ã¹ã¿ Loki ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Alloy Otel Collector Log File Promtail ã Alloy ãçŽæ¥ãã°ãã¡ã€ã«ãèŠã«ããæ§æã«ãªã£ãŠããã ïŒã€ã®ãã¡ã€ã«ã 2éã§åŠçããŠããŸã£ãŠãã ð€
ãã°ã®ç§»è¡äºäŸ tips ãšãããã©ãã ç§»è¡äžã« Promtail ãš Alloy ãåã k8s pod
log ãããã«ã©ã€ãããŠããŸã discovery.kubernetes "kubernetes_pods" { role = "pod" } discovery.relabel "kubernetes_pods" { targets = discovery.kubernetes.kubernetes_pods.targets rule { source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"] separator = "/" target_label = "__path__" replacement = "/var/log/pods/*$1/*.log" } ... } local.file_match "kubernetes_pods" { path_targets = discovery.relabel.kubernetes_pods.output } loki.source.file "kubernetes_pods" { targets = local.file_match.kubernetes_pods.targets forward_to = [loki.relabel.extract_uid_kubernetes_pods.receiver] legacy_positions_file = "/run/promtail/positions.yaml" } å©çšããŠãã Alloy Config ã®æç² 1. pod æ å ±ã®ååŸ 2. relabel åŠç 1 ã® pod æ å ±ããååŸãã°ã®ãã¹ãèšå® pod åã node åãªã©ã label ãšããŠèšå® 3. èšå®ãããã¹ã®ãã¡ã€ã«ã å¯Ÿè±¡ã«æå® 4. loki ã® source ãšããŠç»é²
ãã°ã®ç§»è¡äºäŸ tips ãšãããã©ãã ç§»è¡äžã« Promtail ãš Alloy ãåã k8s pod
log ãããã«ã©ã€ãããŠããŸã Position File ãšããä»çµã¿ã§ éè€ãããã¡ã€ã«ã¯åŠçããªãä»çµ ã¿ããã ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Alloy Log File Promtail Positions File Alloy Positions File loki.source.file "kubernetes_pods" { targets = local.file_match.kubernetes_pods.targets forward_to = [loki.relabel.extract_uid_kubernetes_pods.receiver] legacy_positions_file = "/run/promtail/positions.yaml" } Alloy ã®èšå®ã§ã Promtail ã® Position File ãåŒãç¶ãèšå®ã å ¥ããŠããã¯ããªã®ã« ...? ð€
ãã°ã®ç§»è¡äºäŸ tips ãšãããã©ãã ç§»è¡äžã« Promtail ãš Alloy ãåã k8s pod
log ãããã«ã©ã€ãããŠããŸã positions: /var/log/pods/kube-system_cilium-wbv2b_0d36d39a-c 3ac-4491-adb3-c9ef98b78ab8/apply-sysctl-overwrite s/0.log: "158" positions: ? path: /var/log/pods/kube-system_cilium-hhmv7_228ce13f-2eae-429 5-ac1a-30e9cb35c1c2/config/0.log labels: '{app="cilium-agent", container="config", job="kube-system/cilium-agent", namespace="kube-system", node_name="log-test-control-plane-4z9cx", pod="cilium-hhmv7"}' : "1775" Alloy Position File Promtail Position File (Legacy) Promtail ãš Alloy ã§å©çšããŠãã Position File ã®ãã©ãŒãããã«å€æŽããã£ã æ°ãããã©ãŒãããã«ã¯ label ãä»äžãã圢ã«ãªã£ãŠãã
ãã°ã®ç§»è¡äºäŸ tips ãšãããã©ãã ç§»è¡äžã« Promtail ãš Alloy ãåã k8s pod
log ãããã«ã©ã€ãããŠããŸã discovery.relabel "kubernetes_pods" { targets = discovery.kubernetes.kubernetes_pods.targets rule { source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"] separator = "/" target_label = "__path__" replacement = "/var/log/pods/*$1/*.log" } rule { source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name", "__meta_kubernetes_pod_label_app", "__tmp_controller_name", "__meta_kubernetes_pod_name"] regex = "^;*([^;]+)(;.*)?$" target_label = "app" } } loki.source.file "kubernetes_pods" { targets = local.file_match.kubernetes_pods.targets forward_to = [loki.relabel.extract_uid_kubernetes_pods.receiver] legacy_positions_file = "/run/promtail/positions.yaml" } positions: ? path: /var/log/pods/kube-system_cilium-hhmv7_228ce13f-2eae-429 5-ac1a-30e9cb35c1c2/config/0.log labels: '{app="cilium-agent", container="config", job="kube-system/cilium-agent", namespace="kube-system", node_name="log-test-control-plane-4z9cx", pod="cilium-hhmv7"}' : "1775" ãã®ããã loki.source.file ã®åã«ç¬èªã©ãã«ãã€ããŠããå Žåã¯åŒãç¶ãã«å€±æãã
ãã°ã®ç§»è¡äºäŸ tips ãšãããã©ãã ç§»è¡äžã« Promtail ãš Alloy ãåã k8s pod
log ãããã«ã©ã€ãããŠããŸã loki.enrich "kubernetes_pods" { targets = discovery.relabel.kubernetes_pods.output target_match_label = "__meta_ake_kubernetes_unique_key" logs_match_label = "pod_unique_key" labels_to_copy = [ "__meta_kubernetes_pod_controller_name", "__meta_kubernetes_pod_label_app_kubernetes_io_name", "__meta_kubernetes_pod_label_app", "__meta_kubernetes_pod_name", "__meta_kubernetes_pod_label_app_kubernetes_io_instance", "__meta_kubernetes_pod_label_release", "__meta_kubernetes_pod_label_app_kubernetes_io_component", "__meta_kubernetes_pod_label_component", "__meta_kubernetes_pod_node_name", "__meta_kubernetes_namespace", "__meta_kubernetes_pod_container_name", ] forward_to = [loki.relabel.kubernetes_pods.receiver] } loki.enrich ã䜿ã£ãŠè§£æ±º ! discovery level ã® metadata ããã°ã® label ã«ã³ããŒã§ãã ãã ã察象ãçªåããããã«ã察象ãã°ã®ãã label ãšãã metadata ãçµã³ã€ããå¿ èŠããã /var/log/pods/kube-system_cilium-wbv2b_0d 36d39a-c3ac-4491-adb3-c9ef98b78ab8/apply- sysctl-overwrites/0.log 察象ãã°ã«ã€ããŠãã label 㯠ãã¡ã€ã«ãã¹ã®æ å ±ãããªãã ã©ããã...ïŒ
ãã°ã®ç§»è¡äºäŸ tips ãšãããã©ãã ç§»è¡äžã« Promtail ãš Alloy ãåã k8s pod
log ãããã«ã©ã€ãããŠããŸã rule { source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"] separator = "/" target_label = "__meta_ake_kubernetes_unique_key" replacement = "$1" } __meta_* ãšãã prefix ã® label ã¯ç®¡çã©ãã«ãšããŠæ±ãããããã position file ã«ã¯è¿œå ãããªãããšãçºèŠ __meta_ake_kubernetes_unique_key â 0d36d39a-c3ac-4491-adb3-c9ef98b78ab8/cilium-wbv2b ⢠discovery.relabel ã§ meta label ãã€ãã ⢠ãã¡ã€ã«ãã¹ããçªåçšã® label ãã€ãã pod_unique_key â 0d36d39a-c3ac-4491-adb3-c9ef98b78ab8/cilium-wbv2b loki.relabel "extract_uid_kubernetes_pods" { rule { source_labels = ["filename"] regex = "/var/log/pods/[^_]+_[^_]+_([0-9a-f-]+)/([^/]+)/.*" separator = "/" target_label = "pod_unique_key" replacement = "$1/$2" } }
Collector ã®éçŽãã¿ãŒã³ ãš ãã€ãã©ã€ã³ãµãŒãã¹ã«åããŠ
OpenTelemetry Collector ã®éçŽãã¿ãŒã³ 管çã¯ã©ã¹ã¿ ã¡ããªã¯ã¹éçŽ ããã¯ãšã³ã ãã°éçŽ ããã¯ãšã³ã ïŒ ç®¡çã¯ã©ã¹ã¿
ïŒ ã¡ããªã¯ã¹éçŽ ããã¯ãšã³ã ãã°éçŽ ããã¯ãšã³ã Collector ã®éçŽåäœãã©ããããïŒ â¢ ã¹ã±ãŒã©ããªãã£ã»ççºååŸçã«äžæ¥µéäžã¯é¿ããã ⢠OpenTelemetry Collector ãã¹ããŒããã«ãªããã忣ãããšå¹çãæªãïŒ
ã¯ã©ã¹ã¿ããšã« Collector ãããã〠管çã¯ã©ã¹ã¿ Victoria Metrics ïŒã¡ããªã¯ã¹éçŽããã¯ãšã³ãïŒ Loki ïŒãã°éçŽããã¯ãšã³ãïŒ ãŠãŒã¶ãŒã¯ã©ã¹ã¿
Promtail Prometheus ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus ⢠ççºååŸãæå°åãããæ§æ ⢠ã¯ã©ã¹ã¿ããšã®èšå®å€æŽã蚱容ãããã ⢠ãªãœãŒã¹éçŽçãäœã ⊠å®éã«ã¯ Collector ããšã®ã¬ããªã«æ°=Nãªãããèšå€§ãª Collector ãå¿ èŠ â»ããã³ãããšã«éçŽãããã¿ãŒã³ãã»ãŒåæ§ã® Pros/Cons
ãã¬ã¡ããªããŒã¿ã®çš®å¥ããšã« Collector ãããã〠管çã¯ã©ã¹ã¿ Victoria Metrics ïŒã¡ããªã¯ã¹éçŽããã¯ãšã³ãïŒ Loki ïŒãã°éçŽããã¯ãšã³ãïŒ ãŠãŒã¶ãŒã¯ã©ã¹ã¿
Promtail Prometheus ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus ⢠ãªãœãŒã¹å¹çãé«ã ⢠éçšæã« 1ç®æã® Collector ã管çããã ãã§è¯ã âŠ åæ£ããŠããå Žåãé害æã«å š Collector ãå¶åŸ¡ããä»çµã¿ãäœãå¿ èŠããã ⢠ç¹å®ã®ãŠãŒã¶ãŒã®å€æŽã倧ããªåœ±é¿ãäžããå¯èœæ§ ⢠ãã°ã«ãŠã³ãããçæããã¡ããªã¯ã¹ãªã©ãäžéšååšããå¯èœæ§ãã
AKE ã§ã® OpenTelemetry Collector ã®ãããã€åäœ ç®¡çã¯ã©ã¹ã¿ Victoria Metrics ïŒã¡ããªã¯ã¹éçŽããã¯ãšã³ãïŒ Loki
ïŒãã°éçŽããã¯ãšã³ãïŒ ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus â¢ åºæ¬çã«ã¯ãã¬ã¡ããªããŒã¿çš®å¥ããšã«åæ£ âŠ åå¥èšå®ããããŠãŒã¶ãŒæ°ã®æ¹ãå°ãªã ⢠ã¯ã©ã¹ã¿ã»ããã³ãããšã«åå¥èšå®ãããå Žåã¯ãæ°ã㪠Collector ãçæ âŠ ãŠãŒã¶ãŒã«å¯ŸããŠèªç±åºŠã®é«ãç¶æ ã課é圢æ ãšã®çžæ§ããæ±ºå®
AKE ã§ã® OpenTelemetry Collector ã®ãããã€åäœ ç®¡çã¯ã©ã¹ã¿ Victoria Metrics ïŒã¡ããªã¯ã¹éçŽããã¯ãšã³ãïŒ Loki
ïŒãã°éçŽããã¯ãšã³ãïŒ ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus ãŠãŒã¶ãŒã¯ã©ã¹ã¿ Promtail Prometheus â¢ åºæ¬çã«ã¯ãã¬ã¡ããªããŒã¿çš®å¥ããšã«åæ£ âŠ åå¥èšå®ããããŠãŒã¶ãŒæ°ã®æ¹ãå°ãªã ⢠ã¯ã©ã¹ã¿ã»ããã³ãããšã«åå¥èšå®ãããå Žåã¯ãæ°ã㪠Collector ãçæ TelemetryPipeline Operatorã®éçºèšç»ã ãã«ããªãŒãžã§ã³ã®ç®¡çã¯ã©ã¹ã¿ã«è·šã£ã multicluster-runtime å°å ¥ã®éæãªã©ã¯ãŸãå¥ã®æ©äŒã«
Thank you for your attention. CIU ã§ã¯ æ°ããæè¡ã䜿ã£ãŠããè¯ãã¯ã©ãŠã ã äžç·ã«äœã£ãŠãããæ¹ãåéããŠããŸãïŒ
2025/11/18 CloudNative Days Winter 2025
Agenda ⢠èªå·±çŽ¹ä» 1min ⢠OpenTelemetry{Collector} ãšã¯ïŒ 1min ⢠OpenTelemetry
Operatorãšã¯ïŒ 1min ⢠Metrics 10min âŠ ææ°åå ⪠OTLP察å¿ç¶æ³ ⢠Logs 10min âŠ ææ°åå ⪠OTLP察å¿ç¶æ³ ⢠åŒç€Ÿã®OTel Collectorã®éçŽæ¹æ³ ⊠per Cluster/Tenant/TelemetryType 5min âŠ ç§»èšæã®ã¯ãŸãã©ãã ⪠Metrics 4min ⪠Logs 8min
CFP Overview æ¬ã»ãã·ã§ã³ã§ã¯ã100ãè¶ ãã Kubernetes ã¯ã©ã¹ã¿ãéçšããå€§èŠæš¡ãã«ãããã³ãç°å¢ã«ãã ãŠã OpenTelemetry Collectorãžã®ç§»è¡ãšæŽ»çšãé²ããäžã§åŸãããç¥èŠãå ±æããŸããåŸæ¥ã¯ Prometheus +
VictoriaMetrics ã Promtail + Loki ãçšããŠãã¬ã¡ããªãéçŽããŠããŸããããå ãšãŒãžã§ã³ããçŽæ¥éçŽåºç€ã«ããŒã¿ãéä¿¡ããæ§æã§ã¯ããããã¡ãªã³ã°ããã£ã«ã¿ãªã³ã°ãªã©ã® æè»ãªå¶åŸ¡ãããã«ã¯ãŠãŒã¶ãŒã¯ã©ã¹ã¿ã«æãå ããå¿ èŠããããšãã課é¡ããããŸãããããã§ã ããŒãžããªäžéã¬ã€ã€ãŒã« OpenTelemetry Collector ã«ãã Telemetry Pipeline ãæ§ç¯ãããœãã ãŠã§ã¢ã§ã®å¶åŸ¡ãå¯èœã«ãããšãšãã«ãèªãããã¯ãã®éçŽåºç€ä»¥å€ïŒäŸïŒ DatadogïŒãšã®é£æºå®¹æ æ§ãå®çŸããŸããã æ¬ã»ãã·ã§ã³ã§ã¯ã以äžã®ãããã¯ãäžå¿ã«è§£èª¬ããŸãã ã»OpenTelemetry Operator ã®æŽ»çšæ¹æ³ ã»å OSS ã«ããã OTLP 察å¿ç¶æ³ ã»Collector ã®éçŽåäœèšèšïŒCluster / Tenant / DataïŒ ã»Prometheus RemoteWrite 2.0ã»OpenMetrics 2.0 ãªã©ã®æ°ãããããã³ã«ä»æ§ ã»Prometheus v3ã»Loki v3ã»Grafana Alloy ãªã©ã®ææ°åå ⢠OpenTelemetry{Collector} ãšã¯ïŒ ⢠OpenTelemetry Operatorãšã¯ïŒ ⢠OTLP察å¿ç¶æ³ ⊠Metrics ⪠Prometheus ⪠VictoriaMetrics ⪠Thanos? ⪠Datadog ⪠GCP/AWS ⊠Logs ⪠Loki(Promtail / Alloy) ⪠Datadog ⪠GCP/AWS ⢠Metricsã®ææ°åå ⊠Prometheus v3.0 ⪠agent mode ⪠string interning ⪠PRW 2.0 ⊠PRW 2.0 ⊠OpenMetrics 2.0 ⢠Logsã®ææ°åå ⊠Loki v3 ⪠schema / index / metadata ⪠Log patterns ⊠Alloy ⢠Metricsã®ã¯ãŸãã©ãã ⢠Logsã®ã¯ãŸãã©ãã ⊠k8s audit logããŒããŒãåé¡ âŠ checksumåé¡ïŒCHRã§ã®è©±ïŒ ⊠attribute ⪠https://github.com/cycloud-io/myshoes-deploy/blob/a9b55a39c4648b18d3fe79700c818bf6c339a3d9/manifests/per-cluster- component/stadium-log-aggregator/base/otel-collector-config.yaml ⢠åŒç€Ÿã®OTel Collectorã®éçŽæ¹æ³ ⊠per Cluster/Tenant/TelemetryType
kimura memo Logs ã®ã¯ãŸãã©ãã - k8s audit log ããŒããŒãåé¡ -
checksum åé¡ - chr ã§å šãŠã®ãã¡ã€ã«ã§åãæååã®å§ãŸãã ãšéããªãåé¡ããã£ã - Loki ã® label ã resource attribute ãããªããšçœ®æã§ããªãåé¡