狠狠撸

狠狠撸Share a Scribd company logo
碍补尘辞苍を理解する
CA ProFit-X
塚本 修也 @s_tsuka
2015/11/20 AdTech Scala Meetup
1
目次
? Kamonとは
? Kamonの使い方
? 実際にシステムを監視してみる
? Kamonの内部構造
2
はじめる前に
3
とりあえず動かしたい人向け
? ミニマムなサンプルを用意しました
# DL
git clone https://github.com/tsukaby/kamon-spray-example.git
cd kamon-spray-example
# 実行(errorが出ますがとりあえず無視してください)
sbt run
(またはsbt run | grep uuid-count)
# browser, curl, ab, wrkなどで以下にアクセス
# http://localhost:8080/uuid
# sbt runしたコンソールに監視結果が出ます
4
Kamonとは
5
Kamonとは
? JVM上で動くアプリケーションの監視ツール(ライブラリ)
? 多くの拡張?連携機能?
Akka Actor, JDBC, JMX, Play2, Spray, Datadog, NewRelic …
? Web site?
http://kamon.io/
? GitHub?
https://github.com/kamon-io/Kamon
6
ツールというよりライブラリ
? Scalaのライブラリ?
Maven centralから使える
? Scalaアプリケーション内から呼び出す感じ
7
何ができるの?拡張機能って?
? JVMアプリの監視(値の定期取得)
? CPU, Memory, NW I/O, Load average, etc
? Actorの処理時間、溜まっているメッセージ数
? 任意の処理block(method)の処理時間
? 独自に値を収集可能
? Kamonが収集した値の外部出力?
Datadog, NewRelic, 標準出力, StatsD, ?uentd
8
できないこと
? (GUIによる)可視化?
※外部ツールにデータを転送することは可能
? 別途可視化環境を用意しましょう
? kamon-statsd + Graphite
? kamon-spm + SPM
? kamon-datadog + Datadog
? kamon-newrelic + Newrelic
9
Kamonの使い方
10
Get Started
? 公式?
http://kamon.io/introduction/get-started/
? AdTech Scala blog?
KamonとDatadogを使ってAkka actorのパフォーマンスを可視化
する
? サンプルコード?
https://github.com/kamon-io/Kamon/tree/master/kamon-
examples?
https://github.com/tsukaby/kamon-spray-example
11
導入4ステップ
1. アプリ作成
2. libraryDependencies追加
3. conf追加
4. Kamon用のコード追加
12
拡張機能による自動データ収集
? libraryDependenciesに追加するだけ
libraryDependencies ++= Seq(
"io.kamon" %% "kamon-core" % "0.5.2",
"io.kamon" %% "kamon-system-metrics" % "0.5.2",
"io.kamon" %% "kamon-scala" % "0.5.2",
"io.kamon" %% "kamon-akka" % "0.5.2",
"io.kamon" %% "kamon-spray" % "0.5.2",
"io.kamon" %% "kamon-datadog" % "0.5.2",
"io.kamon" %% "kamon-log-reporter" % "0.5.2"
)
13
一部aspectjが必要
? http://kamon.io/introduction/overview/
? アプリを動かすときは以下のような感じで
java -javaagent:~/.aspectj/aspectj-weaver.jar your-
app.jar
14
kamon-system-metricsを使う人は
Sigarも必要
? http://kamon.io/integrations/system-metrics/system-
and-jvm-metrics/
? Sigar
? システムの情報(CPU, Memoryなど)を取得するC言語
で書かれたライブラリ
? Java実装もあるっぽい??けどただのラッパー?実行
時には共有ライブラリ(.so, .dylib)が必要みたい
15
Sigarをどうやって入れれば良
いの?
? http://kamon.io/integrations/system-metrics/
system-and-jvm-metrics/
? sigar-loaderを使う
? カレントdirのnative dir以下に自動でDL
? 後は
java -Djava.library.path=native -jar …
16
独自に値を収集する
? コードを書くだけ
import kamon.Kamon
import kamon.trace.Tracer
val counter = Kamon.metrics.counter("foo")
val histogram = Kamon.metrics.histogram("bar")
counter.increment()
histogram.record(currentMillis % 1000)
Tracer.withNewContext("uuid-generate", autoFinish =
true) {
println("do something")
} 17
動作確認
? まずはlog-reporterで確認
? 以下のサンプルをsbt runすれば確認できます
https://github.com/tsukaby/kamon-spray-
example?
"io.kamon" %% "kamon-log-reporter" % "0.5.2"
18
データの転送
? log-reporterで見てもあまり意味ない?
(debug用)
? Datadogに送りたいなら?
"io.kamon" %% "kamon-datadog" % "0.5.2"
19
実際にシステムを
監視してみる
20
CA ProFit-X 配信サーバの例
? 運用?監視している配信サーバの例
? 各Metricsなどの割合(体感)
? Counter 60%
? Histogram 10%
? Tracer 30%
? Gauge 0% (どこで使うんだろう??)
? Counter以外は使いどころが難しい。(どなたか教えて下さい)
21
障害の検知?Actorを見る
? 「リリースしたら何か調子悪いね?」
? 「配信サーバのレスポンスが悪化してな
い?」
22
障害の検知?Actorを見る
(mailboxのたまり具合を可視化)
23
障害の検知?Actorを見る
(mailboxのたまり具合を可視化)
? (良い例がなくてごめんなさい)
? 何かまずいプログラムをリリースすると特定の
Actorが詰まる
? e.g. 非同期を意識してないコード
? e.g. DynamoDBのキャパシティーが不足した
24
接続先サーバ(AdNetwork, DSP)の
APIのレスポンスタイム
? 「X社からImpressionが少ないって問い合わせ
が来てるんだけど?」
25
接続先サーバ(AdNetwork, DSP)の
APIのレスポンスタイム
26
接続先サーバ(AdNetwork, DSP)の
APIのレスポンスタイム
? X社のAPIは117ms?
ProFit-X配信サーバでは100msでタイムアウト
? A, B, C, …社は7~30msで高速
? Z社はスパイクしている????
(理由は不明)
? 各接続先のサーバに障害があるとこのグラフも変化する
27
データの消化具合を計測
? 「Impressionとかの値が乖離してるよね」?
「Kinesisの値の消化が間に合ってないか
も?」
? 「現在扱ってるKinesisレコードの日付と現在
時刻を比較してみよう」
28
データの消化具合を計測
29
データの消化具合を計測
? 消化が間に合ってない
? 最大86K秒(約24h)前のデータを消化している
30
データの消化具合を計測(その後)
? 同僚がチューニングしてくれて改善
31
Kamonの内部構造
32
Kamonの内部構造
(基本)
33
Kamonの疑問
? どういう仕組みで動いているの?
? libraryDependenciesを追加するだけでどうし
て動くの?
34
構成要素
? Akka Actor
? Akka Extensions
? AspectJ
? Sigar
? 出版-購読型モデル(Publisher, Subscriber)?
(Observerパターン)
? LongAdder
? HdrHistogram
35
KamonもActorSystem
? Kamon.start()で専用のActorSystemを作成?
https://github.com/kamon-io/Kamon/blob/
master/kamon-core/src/main/scala/kamon/
Kamon.scala#L51
36
拡張機能は自動でONに
? ModuleLoaderがロード(Akka Extensions)?
https://github.com/kamon-io/Kamon/blob/
master/kamon-core/src/main/scala/kamon/
ModuleLoader.scala#L92-L111
37
Akka Extensionって?
? http://doc.akka.io/docs/akka/snapshot/scala/
extending-akka.html
? Akka ActorのExtensionを少し調べてみた
? ActorSystem内に1つだけ存在できるActorの拡
張(拡張というよりただのLogic, Stateの集合?)
38
KamonにおけるExtensions
? 複数jarがあるがほぼ全てAkka Extensions
? ModuleLoaderが自動でロード
? 特に有効化など追加のコード必要なし
39
Kamonの内部構造
(データの転送)
40
Kamonの疑問その2
? どうやって値を転送しているの?
41
定期的に値を転送
? SubscriptionsDispatcher
1. processTick
2. dispatch
3. dispatchSelections
4. subscriber ! tickMetrics
? subscriber?
log-reporterやdatadog-metrics-sender
42
MetricsSenderって?
? その名の通り。いろいろある。
? DatadogMetricsSender
? SimpleStatsDMetricsSender
? FluentdMetricsSender
? etc
43
MetricsSenderって?
? SubscriptionDispatcherが
TickMetricSnapshotを作成し、?
各MetricsSenderへ送信
? 各MetricsSenderは転送先に合った形にデータ
を整形?送信
44
Kamonの内部構造
(値のカウント)
45
Kamonの疑問その3
? metricsはどう作られているの?
? tracerはどう作られているの?
? どうしてカウントした値が転送されるの?
46
Metricsの作成
? MetricsModule#registerCounter
? 単にCounterを作成して返しているだけ
? Counter = 内部的にはLongAdder
? _trackedEntitiesに既にあればそれを返す
val counter = Kamon.metrics.counter("foo")
47
Snapshotを作成
? MetricsModule#collectSnapshots
? _trackedEntitiesを全てなめる
? 現時点の値を取得し、Snapshotを作成
48
Tracer
? tracer = 内部的にはhistogram
? metricsとほぼ同じ仕組み
? histogram = 内部的にはHdrHistogram
49
Tracerの作成
? TraceModule#withNewContext
? 内部的にMetricsOnlyContextなどが作られる
? 自動または手動で#?nishを実行
? ?nishするとhistogramのデータ作成(後はmetricsと同じ)
Tracer.withNewContext("foo", autoFinish = true) {
println("Hello")
}
50
まとめ
51
まとめ
? Kamonの概要
? Kamonの使い方、サンプルコード
? ProFitXの例
? Kamonの内部構造について
52

More Related Content

What's hot (20)

PPTX
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
?
PPTX
ネットストーカー御用达翱厂滨狈罢ツール叠濒补肠办叠颈谤诲を触ってみた.辫辫迟虫
Shota Shinogi
?
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
?
PPTX
Elasticsearch as a Distributed System
Satoyuki Tsukano
?
PDF
ソフトウェア开発における『知の高速道路』
Yoshitaka Kawashima
?
PDF
计算量のはなし(搁别诲颈蝉を使うなら必読!翱(濒辞驳狈)など)
Makoto SAKAI
?
PDF
笔辞蝉迟驳谤别厂蚕尝アンチハ?ターン
Soudai Sone
?
PDF
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Works Applications
?
PDF
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
?
PDF
オブジェクト指向エクササイズのススメ
Yoji Kanno
?
PDF
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
?
PDF
Webと経済学 數見拓朗
cyberagent
?
PDF
组み込み尝颈苍耻虫での骋辞濒补苍驳のススメ
Tetsuyuki Kobayashi
?
PDF
ソーシャルゲームのためのデータベース设计
Yoshinori Matsunobu
?
PDF
Tackling Complexity
Yoshitaka Kawashima
?
PDF
厂厂尝/罢尝厂の基础と最新动向
shigeki_ohtsu
?
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
?
PDF
ジャストシステム闯补惫补100本ノックのご绍介
JustSystems Corporation
?
PDF
Azure Application GatewayでオンプレDMZをクラウドへ拡張する
拓将 平林
?
PDF
メンバーのスキルアップ、どうしてる? ? Java 100本ノックで新加入メンバーを鍛えてみた ?
JustSystems Corporation
?
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
?
ネットストーカー御用达翱厂滨狈罢ツール叠濒补肠办叠颈谤诲を触ってみた.辫辫迟虫
Shota Shinogi
?
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
?
Elasticsearch as a Distributed System
Satoyuki Tsukano
?
ソフトウェア开発における『知の高速道路』
Yoshitaka Kawashima
?
计算量のはなし(搁别诲颈蝉を使うなら必読!翱(濒辞驳狈)など)
Makoto SAKAI
?
笔辞蝉迟驳谤别厂蚕尝アンチハ?ターン
Soudai Sone
?
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Works Applications
?
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
?
オブジェクト指向エクササイズのススメ
Yoji Kanno
?
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
?
Webと経済学 數見拓朗
cyberagent
?
组み込み尝颈苍耻虫での骋辞濒补苍驳のススメ
Tetsuyuki Kobayashi
?
ソーシャルゲームのためのデータベース设计
Yoshinori Matsunobu
?
Tackling Complexity
Yoshitaka Kawashima
?
厂厂尝/罢尝厂の基础と最新动向
shigeki_ohtsu
?
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
?
ジャストシステム闯补惫补100本ノックのご绍介
JustSystems Corporation
?
Azure Application GatewayでオンプレDMZをクラウドへ拡張する
拓将 平林
?
メンバーのスキルアップ、どうしてる? ? Java 100本ノックで新加入メンバーを鍛えてみた ?
JustSystems Corporation
?

Viewers also liked (6)

PDF
Assist software awesome scala
AssistSoftware
?
PDF
顿辞肠办别谤と碍耻产别谤苍别迟别蝉か?作る未来
Kazuto Kusama
?
PDF
碍补尘辞苍と顿补迟补诲辞驳によるリアクティブアプリケーションの监视の事例
Ikuo Matsumura
?
PDF
碍耻产别谤苍别迟别蝉を触ってみた
Kazuto Kusama
?
PDF
Akka-chan's Survival Guide for the Streaming World
Konrad Malawski
?
PDF
碍耻产别谤苍别迟别蝉にまつわるエトセトラ(主に苦労话)
Works Applications
?
Assist software awesome scala
AssistSoftware
?
顿辞肠办别谤と碍耻产别谤苍别迟别蝉か?作る未来
Kazuto Kusama
?
碍补尘辞苍と顿补迟补诲辞驳によるリアクティブアプリケーションの监视の事例
Ikuo Matsumura
?
碍耻产别谤苍别迟别蝉を触ってみた
Kazuto Kusama
?
Akka-chan's Survival Guide for the Streaming World
Konrad Malawski
?
碍耻产别谤苍别迟别蝉にまつわるエトセトラ(主に苦労话)
Works Applications
?
Ad

Similar to 碍补尘辞苍を理解する (20)

PDF
Cython ことはじめ
gion_XY
?
PPTX
JAZUG クラウドデザインパターンのコードを覗く
Takekazu Omi
?
PPTX
アプリケーション開発と分析のための Log Analytics
kekekekenta
?
PDF
Haikara
jewel12
?
PPTX
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
?
PPTX
ji-2. 計算
kunihikokaneko1
?
PDF
办辞尘辫补蝉蝉冲骋谤别补肠と尝尝惭冲20230728.辫诲蹿
ManamiMaeda
?
PDF
Chrome DevTools.next
yoshikawa_t
?
PDF
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
?
PPTX
Modern stream processing by Spark Structured Streaming
Sotaro Kimura
?
PDF
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
Amazon Web Services Japan
?
PPTX
笔测迟丑辞苍を使った简易诊断スクリプトの作り方
Yuichi Hattori
?
PDF
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
Takanori Suzuki
?
PPTX
作られては消えていく泡のように儚いクラスタの运用话
Tsuyoshi Torii
?
PDF
公司における厂辫谤颈苍驳蔼日本蝉辫谤颈苍驳ユーザー会20090624
Yusuke Suzuki
?
PPTX
Rancher と GitLab を使う3つの理由
Tetsurou Yano
?
PDF
System Center Operations Managerによる仮想環境の高度な管理
junichi anno
?
PDF
第11回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
?
PDF
搁罢ミドルウエア讲习会2015
Yuki Suga
?
PDF
アドテク×厂肠补濒补×パフォーマンスチューニング
Yosuke Mizutani
?
Cython ことはじめ
gion_XY
?
JAZUG クラウドデザインパターンのコードを覗く
Takekazu Omi
?
アプリケーション開発と分析のための Log Analytics
kekekekenta
?
Haikara
jewel12
?
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
?
ji-2. 計算
kunihikokaneko1
?
办辞尘辫补蝉蝉冲骋谤别补肠と尝尝惭冲20230728.辫诲蹿
ManamiMaeda
?
Chrome DevTools.next
yoshikawa_t
?
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
?
Modern stream processing by Spark Structured Streaming
Sotaro Kimura
?
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
Amazon Web Services Japan
?
笔测迟丑辞苍を使った简易诊断スクリプトの作り方
Yuichi Hattori
?
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
Takanori Suzuki
?
作られては消えていく泡のように儚いクラスタの运用话
Tsuyoshi Torii
?
公司における厂辫谤颈苍驳蔼日本蝉辫谤颈苍驳ユーザー会20090624
Yusuke Suzuki
?
Rancher と GitLab を使う3つの理由
Tetsurou Yano
?
System Center Operations Managerによる仮想環境の高度な管理
junichi anno
?
第11回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
?
搁罢ミドルウエア讲习会2015
Yuki Suga
?
アドテク×厂肠补濒补×パフォーマンスチューニング
Yosuke Mizutani
?
Ad

More from Shuya Tsukamoto (6)

PDF
Apache hadoop yarn 勉強会 8. capacity scheduler in yarn
Shuya Tsukamoto
?
PDF
AdTech Scala Meetup 7 spray-can
Shuya Tsukamoto
?
PDF
bean-validation-scala
Shuya Tsukamoto
?
PDF
Scala勉強会 2015 02_03
Shuya Tsukamoto
?
PDF
とりあえず使う厂肠补濒补锄
Shuya Tsukamoto
?
PDF
厂肠补濒补勉强会冲2014冲11冲18
Shuya Tsukamoto
?
Apache hadoop yarn 勉強会 8. capacity scheduler in yarn
Shuya Tsukamoto
?
AdTech Scala Meetup 7 spray-can
Shuya Tsukamoto
?
bean-validation-scala
Shuya Tsukamoto
?
Scala勉強会 2015 02_03
Shuya Tsukamoto
?
とりあえず使う厂肠补濒补锄
Shuya Tsukamoto
?
厂肠补濒补勉强会冲2014冲11冲18
Shuya Tsukamoto
?

Recently uploaded (13)

PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
PDF
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?

碍补尘辞苍を理解する