micrometerでDatadogにカスタムメトリクスを送信する
by
Kurochan
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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