Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
micrometerでカスタムメトリクスを送信する Yuta Kurosaki ( @kuro_m ) AdTech Studio / CyberAgent, Inc.
Slide 2
Slide 2 text
Yuta Kurosaki • Backend engineer at CyberAgent, Inc. • Scala / AWS +years • AdTech • developing DSP (Demand Side Platform) • over K reqs / sec (bid request) • AWSのAZ(アベイラビリティーゾーン)とは? AZ障害が起きたときどうすればよいのか • 昨⽇公開しました • https://developers.cyberagent.co.jp/blog/archives/ / @kuro_m @kurochan
Slide 3
Slide 3 text
Datadogに関する今までの発表 • 約2年ぶりに発表します https://speakerdeck.com/kurochan
Slide 4
Slide 4 text
Contents • カスタムメトリクスの活⽤⽅法 • 今までのカスタムメトリクスの送信⽅法 • micrometerによるカスタムメトリクスの送信
Slide 5
Slide 5 text
カスタムメトリクスの活⽤⽅法
Slide 6
Slide 6 text
運⽤しているシステム概況 • ⼊札リクエスト量: 数⼗万リクエスト / 秒 • ⼊札トラフィック: 約8Gbps • レスポンスタイム: 100ms以内 • ログの量: 数TB / Day(圧縮状態) ຊͷೖࡳϦΫΤετඵ ຊΞϝϦΧͷϨεϙϯελΠϜ NTFD
Slide 7
Slide 7 text
最近⾒ていて楽しい画⾯ • オートスケーリング系のメトリクス
Slide 8
Slide 8 text
いろんなサービスを組み合わせています • ALL AWS 主要コンポーネント
Slide 9
Slide 9 text
広告はスピードが命 • 配信状況をすぐにでも確認したい • 数百社の広告主 • 多数のシステム連携 • おもにSSPや計測ツール
Slide 10
Slide 10 text
広告の配信状況をカスタムメトリクスに • 配信状況の可視化の例: 広告主ごとの配信量を可視化する
Slide 11
Slide 11 text
広告の配信状況をカスタムメトリクスに • 配信状況の可視化の例: SSP(メディアサイド)の接続先ごとに配信量を可視化 • 実際には数⼗社ある
Slide 12
Slide 12 text
広告の配信状況をカスタムメトリクスに • 配信状況の可視化の例: 広告の⼊札回りのメトリクスを可視化 • 広告⼊札候補の状況等 • ⼊札の機械学習モデルの挙動の異変に対してもすぐアラートが上げられる
Slide 13
Slide 13 text
今までのカスタムメトリクスの 送信⽅法
Slide 14
Slide 14 text
fluent-plugin-dogstatsd • 配信ログからメトリクスを⽣成 (CSV, LTSV, JSONなど) • 連携先ごと • 広告主ごと • アプリケーションログのエラーカウント • Datadogに流し込んで簡易的な即時集計 ができるように • アラートも設定可能 https://github.com/ryotarai/fluent-plugin-dogstatsd
Slide 15
Slide 15 text
dogstatsdを使うことの⽋点 • アプリケーションとセットでfluentdやdatadog agentが必要になる • app(file) => fluentd => datadog-agent => datadog • ECSなどの場合はdatadog-agent等がサイドカーコンテナとして必要になる • AWS Lambdaの場合はカスタムメトリクスが送信できない…
Slide 16
Slide 16 text
アプリケーションからDatadog APIを直接叩く • インフラ的にはシンプルになるが、メトリクスの計測が発⽣する度に通信が 発⽣したり、APIのレイテンシの分アプリケーション内の処理時間が遅延し たりしないように考慮しなければならない • アプリケーション内でメトリクスのバッファリングをよしなにやってくれ て、直接Datadog APIを叩けるライブラリがほしい…
Slide 17
Slide 17 text
micrometerによる カスタムメトリクスの送信
Slide 18
Slide 18 text
micrometer • Pivotalが公開しているアプリケーションメトリクスの収集ライブラリ • Spring Boot向けに作られたがSpring Bootに関係なく汎⽤的に使える https://micrometer.io/
Slide 19
Slide 19 text
特徴 • 統⼀されたインターフェイスの上で各種サービスへメトリクスを転送できる • Datadog, Dynatrace, Elasic, NewRelic, Prometheus, Ganglia, Influx ... etc • メトリクスのバッファリング機能もあるので安⼼ https://micrometer.io/
Slide 20
Slide 20 text
micrometer-registry-datadog • Scalaで少しラップしました
Slide 21
Slide 21 text
micrometer-registry-datadog • Scalaで少しラップしました • まだcounterしか実装していませんが、各種メトリクスがタグ付きでアプリ ケーション内から簡単に送信できます。
Slide 22
Slide 22 text
困っていること • registryをstop直前にバッファリングされているメトリクスがタイミングに よってはflushされず、アプリケーションのシャットダウン時にメトリクスが ⽋損する可能性がある • チームメンバによりIssue報告済み https://github.com/micrometer-metrics/micrometer/issues/
Slide 23
Slide 23 text
怪談 • 会場でのみ公開1
Slide 24
Slide 24 text
怪談 • 会場でのみ公開2
Slide 25
Slide 25 text
怪談 • 会場でのみ公開3
Slide 26
Slide 26 text
怪談 • 会場でのみ公開4
Slide 27
Slide 27 text
怪談 • Datadogのカスタムメトリクスの使⽤量をカスタムメトリクスで投げる • チームメンバが作成しOSS化しました • AWS Serverless Application Repositoryにも公開されています。 ボタンクリックで今すぐデプロイ!! https://github.com/phucnh/check-datadog-custom-metrics-usage