Upgrade to Pro — share decks privately, control downloads, hide ads and more …

スタートアップ創業期を支えるオブザーバビリティ基盤のこれまでとこれから/cnds2025

Avatar for Shota Iwami Shota Iwami
May 22, 2025
780

 スタートアップ創業期を支えるオブザーバビリティ基盤のこれまでとこれから/cnds2025

CloudNative Days Summer 2025
Datadog Sponsor Session
https://event.cloudnativedays.jp/cnds2025

Avatar for Shota Iwami

Shota Iwami

May 22, 2025
Tweet

More Decks by Shota Iwami

Transcript

  1. λΫγʔ Ұൠ৐༻ཱྀ٬ӡૹࣄۀͷӡӦ ೔ຊ൛ϥΠυγΣΞͷӡӦ ഑ंΞϓϦnewmoͷ։ൃӡӦ ϥΠυγΣΞυϥΠόʔ޲͚
 ΧʔϦʔεࣄۀͷӡӦ ϥΠυγΣΞ ഑ंΞϓϦ ΦʔτϦʔε •

    ҆ఆͨ͠ڙڅ • ϑϧλΠϜՔಇͷ
 ೋछ໔ڐυϥΠόʔ • Ұ࣌తͳधཁ૿ʹ
 ର͢Δڙڅ • εΩϚ࣌ؒՔಇͷ
 ී௨໔ڐυϥΠόʔ • ҆ఆͨ͠ڙڅ • ϑϧλΠϜՔಇͷ
 ೋछ໔ڐυϥΠόʔ • ҆ఆͨ͠ڙڅ • ϑϧλΠϜՔಇͷ
 ೋछ໔ڐυϥΠόʔ 4
  2. 5

  3. λΫγʔࣄۀऀͷ newmo άϧʔϓ΁ͷࢀը ձ໊ࣾ ؛ަ ະདྷ౎ ࡖ૬ޓ ࢀը࣌ظ 2024೥3݄ 2024೥7݄

    2025೥4݄ ॅॴ େࡕ෎ࡖࢢ େࡕ෎कޱࢢ େࡕ෎ࡖࢢ ं྆਺ 51୆ 607୆ 178୆ ैۀһ਺ 58໊ 1,132໊ 178໊ • λΫγʔࣄۀऀ3͕ࣾnewmoάϧʔϓ΁ࢀը • άϧʔϓ߹ܭं྆਺1,037୆Ͱɺେࡕ3Ґͷن໛ͷλΫγʔձࣾ΁ • ITٕज़Λ׆༻ͨ͠ܦӦͷޮ཰Խɺਓࡐ࠾༻ͳͲͷ౤ࢿΛਪਐ 6
  4. newmo ͷ։ൃ | എܠ “Ҡಈ” Λத৺ͱͨ͠ ϓϩμΫτల։ 🚚 શͯ1͔Βͷ৽ن։ൃ… 8

    • ෯޿͍ϓϩμΫτల։͕༧૝ • λΫγʔɾϥΠυγΣΞɾϦʔε etc… • ͦΕͧΕʹ։ൃ͢Δ΂͖΋ͷ͕๲େʹ͋Δ • ഑ंΞϓϦ • ϥΠυγΣΞυϥΠόʔબߟ • ఺ݺ • ഑ं؅ཧ • ܾࡁ • ୆ா؅ཧ • νϟοτ • ೝূ and more… 8
  5. newmo ͷ։ൃ | എܠ Component ෼ׂ ϞϊϨϙ؅ཧ 🚚 શͯ1͔Βͷ৽ن։ൃ… 9

    • Service ͝ͱʹ Component Λ෼ׂͯ͠
 ϞδϡϥʔϞϊϦε։ൃ • ґଘܰݮͷͨΊϞϊϨϙͰ։ൃ • Backend / Frontend / Android / iOS / Platform etc… 9
  6. newmo ͱ OpenTelemetry 17 17 O11y Backend બఆ 🐶 OpenTelemetry

    ରԠ͍ͯ͠Δ͜ͱ શһ͕ݟΒΕΔঢ়ଶʹ͍ͨ͠ ৚݅ ༷ʑͳπʔϧΛ·ͱΊͯݟΒΕΔ Google Cloud ʹݶΒͣ
 AWS, Cloudflare ͳͲ΋·ͱΊͯΈ͍ͨ 17
  7. newmo ͱ OpenTelemetry 18 18 O11y Backend બఆ 🐶 OpenTelemetry

    ରԠ͍ͯ͠Δ͜ͱ ৚݅ ༷ʑͳπʔϧΛ·ͱΊͯݟΒΕΔ શһ͕ݟΒΕΔঢ়ଶʹ͍ͨ͠ νʔϜͷॊೈͳҠಈ΍Biz/OpsνʔϜ΋ؚΊͯ ݟΕΔΑ͏ͳঢ়ଶʹ͓͖͍ͯͨ͠ʢnot ΞΧ΢ϯτ՝ۚʣ 18
  8. newmo ͱ OpenTelemetry 19 19 O11y Backend બఆ 🐶 શһ͕ݟΒΕΔঢ়ଶʹ͍ͨ͠

    ৚݅ ༷ʑͳπʔϧΛ·ͱΊͯݟΒΕΔ Datadog ͕ରԠ͍ͯ͠Δ…ʁ ରԠঢ়گ͸…ʁ OpenTelemetry ରԠ͍ͯ͠Δ͜ͱ 19
  9. newmo ͱ OpenTelemetry 20 Datadog ͱ OpenTelemetry ͷ౷߹͕ਐߦத 20 •

    OpenTelemetry Collector ޲͚ͷ Datadog Exporter ͕͢Ͱʹଘࡏ • W3C Trace Context ͳͲରԠ • Agent with Embedded OpenTelemetry Collector ͕ DASH 2024 Ͱൃද🔥🔥 Datadog DASH 2024 20
  10. newmo ͱ OpenTelemetry 21 Datadog ͱ OpenTelemetry ͷ౷߹͕ਐߦத 21 •

    OpenTelemetry Collector ޲͚ͷ Datadog Exporter ͕͢Ͱʹଘࡏ • W3C Trace Context ͳͲରԠ • Agent with Embedded OpenTelemetry Collector ͕ DASH 2024 Ͱൃද🔥🔥 Datadog DASH 2024 21
  11. OpenTelemetry Collector ͷ࣮૷ύλʔϯ 24 24 Sidecar Gateway • Cloud Run

    ͰαΠυΧʔ͕࢖͑ΔΑ͏ʹ ͳͬͨͷͰར༻ • Service ͷ਺͚ͩ collector ͷอक͕ඞཁ • ҰՕॴͰूத؅ཧ • PlatformνʔϜͰͷ؅ཧ΋͠΍͍͢ 24
  12. OpenTelemetry Collector ͷ࣮૷ύλʔϯ 25 Sidecar Gateway • Cloud Run ͰαΠυΧʔ͕࢖͑ΔΑ͏ʹ

    ͳͬͨͷͰར༻ • Service ͷ਺͚ͩ collector ͷอक͕ඞཁ • ҰՕॴͰूத؅ཧ • PlatformνʔϜͰͷ؅ཧ΋͠΍͍͢ ࠾༻ 25
  13. OpenTelemetry Collector ͷ࣮૷ύλʔϯ 26 • Log ͸ Cloud Logging ܦ༝Ͱੜͷঢ়ଶͰӬଓԽ΋͍ͨ͠

    • OTLPͰϩάૹ৴ΤϥʔʹͳΔલͷϩά΋र͍͍ͨ • Cloud Run ͷϦΫΤετϩά΋߹Θͤͯऔಘ͍ͨ͠ 26
  14. config.yaml 27 receivers: otlp: protocols: grpc: endpoint: { ... }

    googlecloudpubsub: subscription: { ... } encoding: googlecloudlogentry_encoding processors: batch: # Datadog APM Intake limit is 3.2MB. { ... } memory_limiter: { ... } connectors: datadog/connector: exporters: datadog/exporter: api: key: ${env:DD_API_KEY} site: api.datadoghq.com extensions: health_check: endpoint: { ... } googlecloudlogentry_encoding: handle_json_payload_as: "json" handle_proto_payload_as: "json" service: extensions: [health_check, googlecloudlogentry_encoding] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [datadog/connector, datadog/exporter] metrics: receivers: [datadog/connector, otlp] processors: [batch, memory_limiter] exporters: [datadog/exporter] logs: receivers: [googlecloudpubsub] processors: [logstransform, batch] exporters: [datadog/exporter] • Trace/Metric ༻ͷ otlp receiver • Log ༻ͷ googlecloudpubsubreceiver • datadog/connector
  15. config.yaml 28 • Trace/Metric ༻ͷ otlp receiver • Log ༻ͷ

    googlecloudpubsubreceiver • datadog/connector receivers: otlp: protocols: grpc: endpoint: { ... } googlecloudpubsub: subscription: { ... } encoding: googlecloudlogentry_encoding processors: batch: # Datadog APM Intake limit is 3.2MB. { ... } memory_limiter: { ... } connectors: datadog/connector: exporters: datadog/exporter: api: key: ${env:DD_API_KEY} site: api.datadoghq.com extensions: health_check: endpoint: { ... } googlecloudlogentry_encoding: handle_json_payload_as: "json" handle_proto_payload_as: "json" service: extensions: [health_check, googlecloudlogentry_encoding] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [datadog/connector, datadog/exporter] metrics: receivers: [datadog/connector, otlp] processors: [batch, memory_limiter] exporters: [datadog/exporter] logs: receivers: [googlecloudpubsub] processors: [logstransform, batch] exporters: [datadog/exporter]
  16. config.yaml 29 • Trace/Metric ༻ͷ otlp receiver • Log ༻ͷ

    googlecloudpubsubreceiver • datadog/connector receivers: otlp: protocols: grpc: endpoint: { ... } googlecloudpubsub: subscription: { ... } encoding: googlecloudlogentry_encoding processors: batch: # Datadog APM Intake limit is 3.2MB. { ... } memory_limiter: { ... } connectors: datadog/connector: exporters: datadog/exporter: api: key: ${env:DD_API_KEY} site: api.datadoghq.com extensions: health_check: endpoint: { ... } googlecloudlogentry_encoding: handle_json_payload_as: "json" handle_proto_payload_as: "json" service: extensions: [health_check, googlecloudlogentry_encoding] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [datadog/connector, datadog/exporter] metrics: receivers: [datadog/connector, otlp] processors: [batch, memory_limiter] exporters: [datadog/exporter] logs: receivers: [googlecloudpubsub] processors: [logstransform, batch] exporters: [datadog/exporter]
  17. config.yaml 30 • Trace/Metric ༻ͷ otlp receiver • Log ༻ͷ

    googlecloudpubsubreceiver • datadog/connector receivers: otlp: protocols: grpc: endpoint: { ... } googlecloudpubsub: subscription: { ... } encoding: googlecloudlogentry_encoding processors: batch: # Datadog APM Intake limit is 3.2MB. { ... } memory_limiter: { ... } connectors: datadog/connector: exporters: datadog/exporter: api: key: ${env:DD_API_KEY} site: api.datadoghq.com extensions: health_check: endpoint: { ... } googlecloudlogentry_encoding: handle_json_payload_as: "json" handle_proto_payload_as: "json" service: extensions: [health_check, googlecloudlogentry_encoding] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [datadog/connector, datadog/exporter] metrics: receivers: [datadog/connector, otlp] processors: [batch, memory_limiter] exporters: [datadog/exporter] logs: receivers: [googlecloudpubsub] processors: [logstransform, batch] exporters: [datadog/exporter]
  18. config.yaml 31 • Trace/Metric ༻ͷ otlp receiver • Log ༻ͷ

    googlecloudpubsubreceiver • datadog/connector datadog/connector ͷΑ͏ͳεϥογϡ۠੾Δͷ͸ [type/name] ͱ͍͏ܗࣜ name ͸ࣗ༝ʹ͚ͭΒΕΔ Configuration | OpenTelemetry Docs https://opentelemetry.io/ja/docs/collector/configuration/ receivers: otlp: protocols: grpc: endpoint: { ... } googlecloudpubsub: subscription: { ... } encoding: googlecloudlogentry_encoding processors: batch: # Datadog APM Intake limit is 3.2MB. { ... } memory_limiter: { ... } connectors: datadog/connector: exporters: datadog/exporter: api: key: ${env:DD_API_KEY} site: api.datadoghq.com extensions: health_check: endpoint: { ... } googlecloudlogentry_encoding: handle_json_payload_as: "json" handle_proto_payload_as: "json" service: extensions: [health_check, googlecloudlogentry_encoding] pipelines: traces: receivers: [otlp] processors: [batch] exporters: [datadog/connector, datadog/exporter] metrics: receivers: [datadog/connector, otlp] processors: [batch, memory_limiter] exporters: [datadog/exporter] logs: receivers: [googlecloudpubsub] processors: [logstransform, batch] exporters: [datadog/exporter]
  19. 36 ------------------------------------------ Internal/metric/otel.go: ----------------------------------------- func (m *Meter) Int64Counter(name string, options

    ...libmetric.MeterOption) (libmetric.Int64Counter, error) { cfg := libmetric.NewMeterOption(options...) opts := []metric.Int64CounterOption{ metric.WithUnit(cfg.Unit().String()), } if v := cfg.Description(); v != "" { opts = append(opts, metric.WithDescription(v)) } counter, err := m.provider.Meter(m.service).Int64Counter(m.metricName(name), opts...) if err != nil { return nil, fmt.Errorf("create int64 counter: %w", err) } return &int64Counter{ c: counter, }, nil } // ... ------------------------------------------ lib/metric.go: ------------------------------------------ type Meter interface { // NOTE: If you want to add more metrics, add them here. Int64Counter(name string, options ...MeterOption) (Int64Counter, error) Int64Gauge(name string, options ...MeterOption) (Int64Gauge, error) Float64Counter(name string, options ...MeterOption) (Float64Counter, error) Float64Gauge(name string, options ...MeterOption) (Float64Gauge, error) } type ( Int64Counter interface { Add(ctx context.Context, incr int64, opts ...MeasurementOption) } Int64Gauge interface { Record(ctx context.Context, value int64, opts ...MeasurementOption) } Float64Counter interface { Add(ctx context.Context, incr float64, opts ...MeasurementOption) } Float64Gauge interface { Record(ctx context.Context, value float64, opts ...MeasurementOption) } ) // ... Developer Platform
  20. 37 ------------------------------------------ Internal/metric/otel.go: ----------------------------------------- func (m *Meter) Int64Counter(name string, options

    ...libmetric.MeterOption) (libmetric.Int64Counter, error) { cfg := libmetric.NewMeterOption(options...) opts := []metric.Int64CounterOption{ metric.WithUnit(cfg.Unit().String()), } if v := cfg.Description(); v != "" { opts = append(opts, metric.WithDescription(v)) } counter, err := m.provider.Meter(m.service).Int64Counter(m.metricName(name), opts...) if err != nil { return nil, fmt.Errorf("create int64 counter: %w", err) } return &int64Counter{ c: counter, }, nil } // ... ------------------------------------------ lib/metric.go: ------------------------------------------ type Meter interface { // NOTE: If you want to add more metrics, add them here. Int64Counter(name string, options ...MeterOption) (Int64Counter, error) Int64Gauge(name string, options ...MeterOption) (Int64Gauge, error) Float64Counter(name string, options ...MeterOption) (Float64Counter, error) Float64Gauge(name string, options ...MeterOption) (Float64Gauge, error) } type ( Int64Counter interface { Add(ctx context.Context, incr int64, opts ...MeasurementOption) } Int64Gauge interface { Record(ctx context.Context, value int64, opts ...MeasurementOption) } Float64Counter interface { Add(ctx context.Context, incr float64, opts ...MeasurementOption) } Float64Gauge interface { Record(ctx context.Context, value float64, opts ...MeasurementOption) } ) // ... Developer Platform • ຊ౰͸΋ͬͱछྨ͕ͨ͘͞Μ͋Δ • େମͷ৔߹͸͜ΕͰࣄ଍ΓΔ
  21. 38 ------------------------------------------ Internal/metric/otel.go: ----------------------------------------- func (m *Meter) Int64Counter(name string, options

    ...libmetric.MeterOption) (libmetric.Int64Counter, error) { cfg := libmetric.NewMeterOption(options...) opts := []metric.Int64CounterOption{ metric.WithUnit(cfg.Unit().String()), } if v := cfg.Description(); v != "" { opts = append(opts, metric.WithDescription(v)) } counter, err := m.provider.Meter(m.service).Int64Counter(m.metricName(name), opts...) if err != nil { return nil, fmt.Errorf("create int64 counter: %w", err) } return &int64Counter{ c: counter, }, nil } // ... ------------------------------------------ lib/metric.go: ------------------------------------------ type Meter interface { // NOTE: If you want to add more metrics, add them here. Int64Counter(name string, options ...MeterOption) (Int64Counter, error) Int64Gauge(name string, options ...MeterOption) (Int64Gauge, error) Float64Counter(name string, options ...MeterOption) (Float64Counter, error) Float64Gauge(name string, options ...MeterOption) (Float64Gauge, error) } type ( Int64Counter interface { Add(ctx context.Context, incr int64, opts ...MeasurementOption) } Int64Gauge interface { Record(ctx context.Context, value int64, opts ...MeasurementOption) } Float64Counter interface { Add(ctx context.Context, incr float64, opts ...MeasurementOption) } Float64Gauge interface { Record(ctx context.Context, value float64, opts ...MeasurementOption) } ) // ... Developer Platform • ຊ౰͸΋ͬͱछྨ͕ͨ͘͞Μ͋Δ • େମͷ৔߹͸͜ΕͰࣄ଍ΓΔ • provider ͱ͔஌Βͳ͍͍ͯ͘
  22. 39 ------------------------------------------ Internal/metric/otel.go: ----------------------------------------- func (m *Meter) Int64Counter(name string, options

    ...libmetric.MeterOption) (libmetric.Int64Counter, error) { cfg := libmetric.NewMeterOption(options...) opts := []metric.Int64CounterOption{ metric.WithUnit(cfg.Unit().String()), } if v := cfg.Description(); v != "" { opts = append(opts, metric.WithDescription(v)) } counter, err := m.provider.Meter(m.service).Int64Counter(m.metricName(name), opts...) if err != nil { return nil, fmt.Errorf("create int64 counter: %w", err) } return &int64Counter{ c: counter, }, nil } // ... ------------------------------------------ lib/metric.go: ------------------------------------------ type Meter interface { // NOTE: If you want to add more metrics, add them here. Int64Counter(name string, options ...MeterOption) (Int64Counter, error) Int64Gauge(name string, options ...MeterOption) (Int64Gauge, error) Float64Counter(name string, options ...MeterOption) (Float64Counter, error) Float64Gauge(name string, options ...MeterOption) (Float64Gauge, error) } type ( Int64Counter interface { Add(ctx context.Context, incr int64, opts ...MeasurementOption) } Int64Gauge interface { Record(ctx context.Context, value int64, opts ...MeasurementOption) } Float64Counter interface { Add(ctx context.Context, incr float64, opts ...MeasurementOption) } Float64Gauge interface { Record(ctx context.Context, value float64, opts ...MeasurementOption) } ) // ... Developer Platform • ຊ౰͸΋ͬͱछྨ͕ͨ͘͞Μ͋Δ • େମͷ৔߹͸͜ΕͰࣄ଍ΓΔ • provider ͱ͔஌Βͳ͍͍ͯ͘ Platform Team Ͱ Wrap ͯ͠ఏڙ͢Δ͜ͱͰඞཁ࠷௿ݶͷ஌ࣝͰ࣮૷Մೳ
  23. • τϥϯΫϕʔε։ൃͰσϓϩΠස౓͕ඇৗʹߴ͍ • CI଎౓͕։ൃ଎౓ͷωοΫʹ… • άϧʔϓʹ JOIN ͨ͠λΫγʔձࣾͷ૿Ճ • ෳ਺ލ͍ͩϩά෼ੳ͕ඞཁʹ…

    • ंࡌ୺຤Λ͸͡Ίͱ͢ΔσόΠεͷ૿Ճ • ো֐࣌ͷௐࠪ΍υϥΠόʔͷߦಈ෼ੳ… ະདྷʹ޲͚ͯ 43 43
  24. • τϥϯΫϕʔε։ൃͰσϓϩΠස౓͕ඇৗʹߴ͍ • CI଎౓͕։ൃ଎౓ͷωοΫʹ… ▶︎ CI Visibility? • άϧʔϓʹ JOIN

    ͨ͠λΫγʔձࣾͷ૿Ճ • ෳ਺ލ͍ͩϩά෼ੳ͕ඞཁʹ… • ंࡌ୺຤Λ͸͡Ίͱ͢ΔσόΠεͷ૿Ճ • ো֐࣌ͷௐࠪ΍υϥΠόʔͷߦಈ෼ੳ… ະདྷʹ޲͚ͯ 44 44
  25. • τϥϯΫϕʔε։ൃͰσϓϩΠස౓͕ඇৗʹߴ͍ • CI଎౓͕։ൃ଎౓ͷωοΫʹ… ▶︎ CI Visibility? • άϧʔϓʹ JOIN

    ͨ͠λΫγʔձࣾͷ૿Ճ • ෳ਺ލ͍ͩϩά෼ੳ͕ඞཁʹ… ▶︎ Log Workspaces? • ंࡌ୺຤Λ͸͡Ίͱ͢ΔσόΠεͷ૿Ճ • ো֐࣌ͷௐࠪ΍υϥΠόʔͷߦಈ෼ੳ… ະདྷʹ޲͚ͯ 45 45
  26. • τϥϯΫϕʔε։ൃͰσϓϩΠස౓͕ඇৗʹߴ͍ • CI଎౓͕։ൃ଎౓ͷωοΫʹ… ▶︎ CI Visibility? • άϧʔϓʹ JOIN

    ͨ͠λΫγʔձࣾͷ૿Ճ • ෳ਺ލ͍ͩϩά෼ੳ͕ඞཁʹ… ▶︎ Log Workspaces? • ंࡌ୺຤Λ͸͡Ίͱ͢ΔσόΠεͷ૿Ճ • ো֐࣌ͷௐࠪ΍υϥΠόʔͷߦಈ෼ੳ… ▶︎ RUM Session Replay? ະདྷʹ޲͚ͯ 46 46
  27. Datadog ͱ OpenTelemetry 52 Datadog ͱ OpenTelemetry ͷ౷߹ 52 •

    RUM ͱ APM ͷ W3C ରԠ • DDOT(Datadog Distribution of
 OpenTelemetry) Collector ͷ౷߹ • OTLP Intake Endpoint ͷ֦ॆ • Datadog APM SDK(Tracer) 
 ͷ OTel API ରԠ
  28. Datadog ͱ OpenTelemetry 53 Datadog ͱ OpenTelemetry ͷ౷߹ 53 •

    RUM ͱ APM ͷ W3C ରԠ • DDOT(Datadog Distribution of
 OpenTelemetry) Collector ͷ౷߹ • OTLP Intake Endpoint ͷ֦ॆ • Datadog APM SDK(Tracer) 
 ͷ OTel API ରԠ
  29. Datadog ͱ OpenTelemetry | DDOT ͷ౷߹ 54 54 • OpenTelemetry

    पΓ͸ೝ஌ෛՙ͕େ͖͍(࠶ܝ) • Ճ͑ͯɺOTel Col ͷΑ͏ʹΧελϚΠζ͞Εͨίϯϙʔωϯτ͸؅ཧෛՙ͕େ͖͍ Platform TeamͰ؅ཧ otel sdk trace log Metric otel col receivers connectors exporters processors dtdg.co/ddot
  30. Datadog ͱ OpenTelemetry | DDOT ͷ౷߹ 55 55 • OpenTelemetry

    पΓ͸ೝ஌ෛՙ͕େ͖͍(࠶ܝ) • Ճ͑ͯɺOTel Col ͷΑ͏ʹΧελϚΠζ͞Εͨίϯϙʔωϯτ͸؅ཧෛՙ͕େ͖͍ • OTel Col ͷ؅ཧ͸ Datadog (Agent) ʹҠৡͰ͖Δ Platform TeamͰ؅ཧ Datadog ͕؅ཧ otel col receiver connector processors exporter otel sdk trace Metric log dtdg.co/ddot
  31. Datadog ΤίγεςϜͱͷ౷߹ • Datadog Agent 
 Agent ΠϯςάϨʔγϣϯɾσʔλϕʔε؂ࢹɾωοτϫʔΫ؂ࢹɾϓϩηε؂ࢹɾϫʔΫϩʔυηΩϡϦςΟɾΠϯϑϥ੬ऑੑ…etc • Fleet

    Automation: Datadog αϙʔτ΁ͷ Agent Flare ͷૹ৴ ᶃ Remote Management: Agent ͷόʔδϣϯɾมߋ؅ཧͱΞοϓάϨʔυ(Preview)
 + Upgrade Agents(Preview) Ͱ Datadog UI ͔Βόʔδϣϯ؅ཧ
 + Configure Agents(Preview) Ͱ Datadog UI ͔Β Datadog Agent ͷߏ੒ϑΝΠϧΛมߋ ᶄ Agent Flare: Agent ͷઃఆϑΝΠϧɾϩάͷΞʔΧΠϒΛอଘɾαϙʔτʹૹ৴
 ɹ→otel-config.yaml ͷฤू΋ՄೳʹͳΔ͔΋…(ر๬) ᶅ Remote Configuration: Datadog UI ্Ͱػೳͷ༗ޮɾແޮԽ͕Ͱ͖Δ
 ɹ→Agent ͷΠϯετʔϧޙʹ DDOT Λ༗ޮԽͰ͖ΔΑ͏ʹͳΔ͔΋…(ر๬) Datadog ͱ OpenTelemetry | DDOT ͷ౷߹ 56 56 DDOT ͷ Datadog Agent ΁ͷ౷߹ dtdg.co/fleet
  32. Datadog ΤίγεςϜͱͷ౷߹ • Datadog Agent 
 Agent ΠϯςάϨʔγϣϯɾσʔλϕʔε؂ࢹɾωοτϫʔΫ؂ࢹɾϓϩηε؂ࢹɾϫʔΫϩʔυηΩϡϦςΟɾΠϯϑϥ੬ऑੑ…etc • Fleet

    Automation: Datadog αϙʔτ΁ͷ Agent Flare ͷૹ৴ ᶃ Remote Management: Agent ͷόʔδϣϯɾมߋ؅ཧͱΞοϓάϨʔυ(Preview)
 + Upgrade Agents(Preview) Ͱ Datadog UI ͔Βόʔδϣϯ؅ཧ
 + Configure Agents(Preview) Ͱ Datadog UI ͔Β Datadog Agent ͷߏ੒ϑΝΠϧΛมߋ ᶄ Agent Flare: Agent ͷઃఆϑΝΠϧɾϩάͷΞʔΧΠϒΛอଘɾαϙʔτʹૹ৴
 ɹˠotel-config.yaml ͷฤू΋ՄೳʹͳΔ͔΋…(ر๬) ᶅ Remote Configuration: Datadog UI ্Ͱػೳͷ༗ޮɾແޮԽ͕Ͱ͖Δ
 ɹˠAgent ͷΠϯετʔϧޙʹ DDOT Λ༗ޮԽͰ͖ΔΑ͏ʹͳΔ͔΋…(ر๬) Datadog ͱ OpenTelemetry | DDOT ͷ౷߹ 57 57 DDOT ͷ Datadog Agent ΁ͷ౷߹ dtdg.co/fleet
  33. manifest.yaml 58 dist: module: github.com/DataDog/comp/otelcol/collector-contrib name: otelcol-contrib description: Datadog OpenTelemetry

    Collector version: 0.121.0 output_path: ./comp/otelcol/collector-contrib/impl otelcol_version: 0.121.0 extensions: # DDOT ʹؚ·ΕΔ extensions ͷҰཡ exporters: # DDOT ʹؚ·ΕΔ exporters ͷҰཡ processors: # DDOT ʹؚ·ΕΔ processors ͷҰཡ receivers: # DDOT ʹؚ·ΕΔ recievers ͷҰཡ - gomod: go.opentelemetry.io/collector/receiver/nopreceiver v0.121.0 - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/filelogreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/fluentforwardreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/hostmetricsreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/jaegerreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/prometheusreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/receivercreator v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/zipkinreceiver v0.121.0 connectors: # DDOT ʹؚ·ΕΔ connectors ͷҰཡ • OpenTelemetry Collector Builder (OCB) ͷ Datadog ؅ཧϚχϑΣετϑΝΠϧ • Datadog ؅ཧର৅ͷ࠷৽ͷ OTel Col
 ίϯϙʔωϯτ͕֬ೝͰ͖Δ • Datadog Ϣʔβʔ͸҆શੑɾ҆ఆੑͷอূ ͱ Datadog ͷެࣜαϙʔτ͕ड͚ΒΕΔ https://raw.githubusercontent.com/DataDog/datadog-agent/refs/tags/7.65.0/comp/otelcol/collector-contrib/impl/manifest.yaml
  34. manifest.yaml 59 dist: module: github.com/DataDog/comp/otelcol/collector-contrib name: otelcol-contrib description: Datadog OpenTelemetry

    Collector version: 0.121.0 output_path: ./comp/otelcol/collector-contrib/impl otelcol_version: 0.121.0 extensions: # DDOT ʹؚ·ΕΔ extensions ͷҰཡ exporters: # DDOT ʹؚ·ΕΔ exporters ͷҰཡ processors: # DDOT ʹؚ·ΕΔ processors ͷҰཡ # metrics transform processor Λ௥Ճͯ͠ϝτϦΫεΛฤू + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ processor/metricstransformprocessor v0.121.0 receivers: # DDOT ʹؚ·ΕΔ recievers ͷҰཡ - gomod: go.opentelemetry.io/collector/receiver/nopreceiver v0.121.0 - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/filelogreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/fluentforwardreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/hostmetricsreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/jaegerreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/prometheusreceiver v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/receivercreator v0.121.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/ receiver/zipkinreceiver v0.121.0 connectors: # DDOT ʹؚ·ΕΔ connectors ͷҰཡ • OpenTelemetry Collector Builder (OCB) ͷ Datadog ؅ཧϚχϑΣετϑΝΠϧ • Datadog ؅ཧର৅ͷ࠷৽ͷ OTel Col
 ίϯϙʔωϯτ͕֬ೝͰ͖Δ • Datadog Ϣʔβʔ͸҆શੑɾ҆ఆੑͷอূ ͱ Datadog ͷެࣜαϙʔτ͕ड͚ΒΕΔ https://raw.githubusercontent.com/DataDog/datadog-agent/refs/tags/7.65.0/comp/otelcol/collector-contrib/impl/manifest.yaml αϙʔτϨϕϧ͸ Datadog ॴ༗ɾίϛϡχςΟαϙʔτͰҟͳΔ ೚ҙͷίϯϙʔωϯτΛΧελϜͰ௥ՃͰ͖Δ
 ͦͷ৔߹͸ɺOCB ·ͨ͸ DDA(࣍εϥΠυ) ͰϏϧυ͢Δ
  35. Dockerfile.agent-otel 60 ARG AGENT_REPO=datadog/agent-dev ARG AGENT_VERSION=nightly-full-main-jmx ARG AGENT_BRANCH=main # Ubuntu

    Slim AMD64 ϕʔεΠϝʔδ FROM ubuntu:24.04 AS builder <<தུ>> # GitHub ͔Β Datadog Agent ͷιʔείʔυΛ࣋ͬͯ͘Δ(Ϗϧυ͢Δͷ͸Ұ෦͚ͩ) RUN git clone --filter=blob:none --branch "${AGENT_BRANCH}" --single-branch https://github.com/DataDog/datadog-agent.git datadog-agent-${AGENT_VERSION} # Go ͱ Python ؀ڥͷηοτΞοϓ <<தུ>> # ϚχϑΣετϑΝΠϧΛίϐʔ͢Δ COPY manifest.yaml /workspace/datadog-agent-${AGENT_VERSION}/comp/otelcol/ collector-contrib/impl/manifest.yaml # dda inv ͰɺϚχϑΣετϑΝΠϧ͔ΒόΠφϦϑΝΠϧΛੜ੒͢Δ(λεΫΛىಈ͢Δ) RUN . venv/bin/activate && dda inv collector.generate # dda inv ͰɺόΠφϦϑΝΠϧ͔Β OTel Agent ΛϏϧυ͢Δ RUN . venv/bin/activate && dda inv otel-agent.build # ࠷৽ͷ Datadog Agent ΠϝʔδΛར༻͢Δ FROM ${AGENT_REPO}:${AGENT_VERSION} ARG AGENT_VERSION # OTel Agent ΛϏϧυεςʔδ͔Βίϐʔ͢Δ(ͭ·ΓɺҰ෦͚ͩͷΧελϜϏϧυ͕Ͱ͖Δ) COPY --from=builder /workspace/datadog-agent-${AGENT_VERSION}/bin/otel- agent/otel-agent /opt/datadog-agent/embedded/bin/otel-agent • DDOT ͷϏϧυΛؚΉ Datadog Agent ͷ
 ίϯςφΠϝʔδ࡞੒ϑΝΠϧ • Datadog Agent Developer tool ίϚϯυͷ
 dda inv otel-agent.build ʹΑͬͯɺ 
 DDOT Λ OTel Agent ͱͯ͠Ϗϧυ͢Δ https://raw.githubusercontent.com/DataDog/datadog-agent/refs/tags/7.65.0/Dockerfiles/agent-ddot/Dockerfile.agent-otel
  36. Dockerfile.agent-otel 61 ARG AGENT_REPO=datadog/agent-dev ARG AGENT_VERSION=nightly-full-main-jmx ARG AGENT_BRANCH=main # Ubuntu

    Slim AMD64 ϕʔεΠϝʔδ FROM ubuntu:24.04 AS builder <<தུ>> # GitHub ͔Β Datadog Agent ͷιʔείʔυΛ࣋ͬͯ͘Δ(Ϗϧυ͢Δͷ͸Ұ෦͚ͩ) RUN git clone --filter=blob:none --branch "${AGENT_BRANCH}" --single-branch https://github.com/DataDog/datadog-agent.git datadog-agent-${AGENT_VERSION} # Go ͱ Python ؀ڥͷηοτΞοϓ <<தུ>> # ϚχϑΣετϑΝΠϧΛίϐʔ͢Δ COPY manifest.yaml /workspace/datadog-agent-${AGENT_VERSION}/comp/otelcol/ collector-contrib/impl/manifest.yaml # dda inv ͰɺϚχϑΣετϑΝΠϧ͔ΒόΠφϦϑΝΠϧΛੜ੒͢Δ(λεΫΛىಈ͢Δ) RUN . venv/bin/activate && dda inv collector.generate # dda inv ͰɺόΠφϦϑΝΠϧ͔Β OTel Agent ΛϏϧυ͢Δ RUN . venv/bin/activate && dda inv otel-agent.build # ࠷৽ͷ Datadog Agent ΠϝʔδΛར༻͢Δ FROM ${AGENT_REPO}:${AGENT_VERSION} ARG AGENT_VERSION # OTel Agent ΛϏϧυεςʔδ͔Βίϐʔ͢Δ(ͭ·ΓɺҰ෦͚ͩͷΧελϜϏϧυ͕Ͱ͖Δ) COPY --from=builder /workspace/datadog-agent-${AGENT_VERSION}/bin/otel- agent/otel-agent /opt/datadog-agent/embedded/bin/otel-agent • DDOT ͷϏϧυΛؚΉ Datadog Agent ͷ
 ίϯςφΠϝʔδ࡞੒ϑΝΠϧ • Datadog Agent Developer tool ίϚϯυͷ
 dda inv otel-agent.build ʹΑͬͯɺ
 DDOT Λ OTel Agent ͱͯ͠Ϗϧυ͢Δ https://raw.githubusercontent.com/DataDog/datadog-agent/refs/tags/7.65.0/Dockerfiles/agent-ddot/Dockerfile.agent-otel ΧελϜͷ manifest.yaml ϑΝΠϧΛݩʹ DDA ίϚϯυͰ
 Datadog Agent ͷαϒηοτͰ͋Δ OTel Agent ΛϏϧυͰ͖Δ ͭ·Γ… OTel Agent = Agent with embedded OpenTelemetry Collector
  37. Datadog ͱ OpenTelemetry | OTLP Intake Endpoint ͷ֦ॆ 62 62

    • OTel Col ʹίϯϐϡʔςΟϯάϦιʔεΛ࢖͍ͨ͘ͳ͍ • Ͱ͖ΔݶΓόοΫΤϯυΛҙࣝͤͣʹ OTel SDK Λར༻͍ͨ͠ →Datadog OTLP Log/Metrics Intake Endpoint(Preview) ΋બ୒ࢶʹ…ʁ
 otel sdk trace metric log Intake endpoint metric log dtdg.co/otlp-agentless
  38. Datadog ͱ OpenTelemetry | OTLP Intake Endpoint ͷ֦ॆ 63 63

    • OTel Col ʹίϯϐϡʔςΟϯάϦιʔεΛ࢖͍ͨ͘ͳ͍ • Ͱ͖ΔݶΓόοΫΤϯυΛҙࣝͤͣʹ OTel SDK Λར༻͍ͨ͠ →Datadog OTLP Log/Metrics Intake Endpoint(Preview) ΋બ୒ࢶʹ…ʁ
 ɹOTLP Trace Intake Endpoint ͸ະެ։ͷͨΊɺ͜Ε͔Βʹ͝ظ଴͍ͩ͘͞🐶 otel sdk trace metric log Intake endpoint trace metric log dtdg.co/otlp-agentless
  39. • τϥϯΫϕʔε։ൃͰσϓϩΠස౓͕ඇৗʹߴ͍ • CI଎౓͕։ൃ଎౓ͷωοΫʹ… ▶︎ CI Visibility!! • άϧʔϓʹ JOIN

    ͨ͠λΫγʔձࣾͷ૿Ճ • ෳ਺ލ͍ͩϩά෼ੳ͕ඞཁʹ… ▶︎ Log Workspaces!! • ंࡌ୺຤Λ͸͡Ίͱ͢ΔσόΠεͷ૿Ճ • ো֐࣌ͷௐࠪ΍υϥΠόʔͷߦಈ෼ੳ… ▶︎ RUM Session Replay!! ະདྷʹ޲͚ͯ - newmo(࠶ܝ) 65
  40. ʲػೳʳ • CI/CD ύΠϓϥΠϯδϣϒΛτϨʔεͯ͠
 Flame Graph Ͱදݱ͠ɺ࣮ߦϩάͱඥ͚ͮΔ ʲͰ͖Δ͜ͱʳ • CI/CD

    ͷΫϦςΟΧϧύεΛಛఆ • ϩάͱԣஅతͳδϣϒͷࣦഊݪҼͷݪҼௐࠪ • σϓϩΠͷස౓ɾ҆ఆੑɾ݈શੑͷଌఆ ɹɹDatadog CI Visibility dtdg.co/ci-visibility
  41. ʲػೳʳ • Log Management ʹऩूͨ͠ෳ਺ϑΥʔϚοτ
 ͷϩάΛɺม׵ɾ݁߹ɾ෼ੳɾՄࢹԽ͢Δ ʲͰ͖Δ͜ͱʳ • ϩάɾࢀরςʔϒϧɾRUMɾϝτϦΫεΛ
 σʔλιʔεͱͯ͠෼ੳ

    • UI ʹΑΔɺ௚ײతͳෳ਺σʔλιʔεͷ݁߹ɾ ύʔεɾϑΟϧλʔɾάϧʔϓԽͳͲͷม׵ • DDSQL ʹΑΔɺσʔλม׵ɾநग़ɾՄࢹԽ • Dashboard Widget ͱಉ༷ͷՄࢹԽ ɹɹDatadog Log Workspaces dtdg.co/workspaces
  42. ʲػೳʳ • શͯͷϞόΠϧΞϓϦૢ࡞Λه࿥ɾ࠶ݱ͠ɺ
 Datadog సૹޙʹσʔλอ࣋Λ੍ޚͰ͖Δ ʲͰ͖Δ͜ͱʳ • iOS/Android ωΠςΟϒΞϓϦૢ࡞ը໘ͷ࠶ݱ •

    RUM Retention Filter ʹΑΔอ࣋σʔλͷ੍ޚ • ΤϥʔɾϩϯάλεΫɾϑϥετϨʔγϣϯ γάφϧͷ༗ແͰอ࣋ͷੋඇΛܾఆͰ͖Δ • ಛఆͷը໘Λ௨ͬͨ৔߹΍ϢʔβʔͷଐੑΛ ࢦఆͯ͠อ࣋Ͱ͖Δ ɹɹDatadog RUM - Mobile Session Replay & without Limits ™︎ dtdg.co/rum_without_limits Ϣʔβʔͷૢ࡞ ը໘ભҠ Ϋϥογϡ Τϥʔ
  43. Datadog: ͋ΒΏΔର৅ͷΦϒβʔόϏϦςΟΛ޲্͢ΔϓϥοτϑΥʔϜ OpenTelemetry ͱͷ౷߹ • ΦϒβʔόϏϦςΟͷඪ४ = OpenTelemetry ͱͷີ઀ͳ౷߹ •

    ։ൃऀͷ OpenTelemetry ؅ཧෛՙΛԼ͛ΔΤίγεςϜ
 ϢʔβʔମݧΛ޲্ͤ͞Δ৽ػೳ • CI/CD ʹ΋ΦϒβʔόϏϦςΟΛʮγϑτϨϑτʯ▶︎ CI Visibility • ෳ਺ͷιʔεɾෳࡶͳ෼ੳͰϩά׆༻Λ޿͛Δ▶︎ Log Workspaces • ϞόΠϧૢ࡞ମݧͷ࠶ݱ ▶︎ Mobile Session Replay & RUM without Limits ™︎ ·ͱΊ