Enviar pesquisa
Carregar
Kamonを理解する
•
4 gostaram
•
3,194 visualizações
S
Shuya Tsukamoto
Seguir
Kamonについての入門レベルの解説と簡単に内部構造について触れます。
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 52
Baixar agora
Baixar para ler offline
Recomendados
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。
Matsushita Satoshi
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
KiyotomoHiroyasu
Go入門
Go入門
Takuya Ueda
Recomendados
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。
Matsushita Satoshi
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
KiyotomoHiroyasu
Go入門
Go入門
Takuya Ueda
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
ScrapyとPhantomJSを用いたスクレイピングDSL
ScrapyとPhantomJSを用いたスクレイピングDSL
Masayuki Isobe
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)
Yuichi Murata
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
SageMakerを使った異常検知
SageMakerを使った異常検知
Ryohei Yamaguchi
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
S. T.
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD
Hiroshima JUG
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
yoku0825
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
ota42y
マスターデータの キャッシュシステムの改善の話
マスターデータの キャッシュシステムの改善の話
natsumi_ishizaka
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
2023-03-23_Spiral.AI
2023-03-23_Spiral.AI
SasakiYuichi1
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
bitbank, Inc. Tokyo, Japan
例外設計における大罪
例外設計における大罪
Takuto Wada
低レイヤー入門
低レイヤー入門
demuyan
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
SIGMOD 2019 参加報告
SIGMOD 2019 参加報告
Masafumi Oyamada
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
Assist software awesome scala
Assist software awesome scala
AssistSoftware
DockerとKubernetesが作る未来
DockerとKubernetesが作る未来
Kazuto Kusama
Mais conteúdo relacionado
Mais procurados
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
ScrapyとPhantomJSを用いたスクレイピングDSL
ScrapyとPhantomJSを用いたスクレイピングDSL
Masayuki Isobe
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)
Yuichi Murata
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
SageMakerを使った異常検知
SageMakerを使った異常検知
Ryohei Yamaguchi
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
S. T.
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD
Hiroshima JUG
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
yoku0825
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
ota42y
マスターデータの キャッシュシステムの改善の話
マスターデータの キャッシュシステムの改善の話
natsumi_ishizaka
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
2023-03-23_Spiral.AI
2023-03-23_Spiral.AI
SasakiYuichi1
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
bitbank, Inc. Tokyo, Japan
例外設計における大罪
例外設計における大罪
Takuto Wada
低レイヤー入門
低レイヤー入門
demuyan
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
SIGMOD 2019 参加報告
SIGMOD 2019 参加報告
Masafumi Oyamada
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
Mais procurados
(20)
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
ScrapyとPhantomJSを用いたスクレイピングDSL
ScrapyとPhantomJSを用いたスクレイピングDSL
TLS, HTTP/2演習
TLS, HTTP/2演習
golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
SageMakerを使った異常検知
SageMakerを使った異常検知
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
マスターデータの キャッシュシステムの改善の話
マスターデータの キャッシュシステムの改善の話
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
2023-03-23_Spiral.AI
2023-03-23_Spiral.AI
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
例外設計における大罪
例外設計における大罪
低レイヤー入門
低レイヤー入門
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
SIGMOD 2019 参加報告
SIGMOD 2019 参加報告
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
Destaque
Assist software awesome scala
Assist software awesome scala
AssistSoftware
DockerとKubernetesが作る未来
DockerとKubernetesが作る未来
Kazuto Kusama
KamonとDatadogによるリアクティブアプリケーションの監視の事例
KamonとDatadogによるリアクティブアプリケーションの監視の事例
Ikuo Matsumura
Kubernetesを触ってみた
Kubernetesを触ってみた
Kazuto Kusama
Akka-chan's Survival Guide for the Streaming World
Akka-chan's Survival Guide for the Streaming World
Konrad Malawski
Kubernetesにまつわるエトセトラ(主に苦労話)
Kubernetesにまつわるエトセトラ(主に苦労話)
Works Applications
Destaque
(6)
Assist software awesome scala
Assist software awesome scala
DockerとKubernetesが作る未来
DockerとKubernetesが作る未来
KamonとDatadogによるリアクティブアプリケーションの監視の事例
KamonとDatadogによるリアクティブアプリケーションの監視の事例
Kubernetesを触ってみた
Kubernetesを触ってみた
Akka-chan's Survival Guide for the Streaming World
Akka-chan's Survival Guide for the Streaming World
Kubernetesにまつわるエトセトラ(主に苦労話)
Kubernetesにまつわるエトセトラ(主に苦労話)
Semelhante a Kamonを理解する
Cython ことはじめ
Cython ことはじめ
gion_XY
JAZUG クラウドデザインパターンのコードを覗く
JAZUG クラウドデザインパターンのコードを覗く
Takekazu Omi
アプリケーション開発と分析のための Log Analytics
アプリケーション開発と分析のための Log Analytics
kekekekenta
Haikara
Haikara
jewel12
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
ji-2. 計算
ji-2. 計算
kunihikokaneko1
kompass_GreacとLLM_20230728.pdf
kompass_GreacとLLM_20230728.pdf
ManamiMaeda
Chrome DevTools.next
Chrome DevTools.next
yoshikawa_t
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
Modern stream processing by Spark Structured Streaming
Modern stream processing by Spark Structured Streaming
Sotaro Kimura
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
Amazon Web Services Japan
Pythonを使った簡易診断スクリプトの作り方
Pythonを使った簡易診断スクリプトの作り方
Yuichi Hattori
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
Takanori Suzuki
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話
Tsuyoshi Torii
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki
Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由
Tetsurou Yano
System Center Operations Managerによる仮想環境の高度な管理
System Center Operations Managerによる仮想環境の高度な管理
junichi anno
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
RTミドルウエア講習会2015
RTミドルウエア講習会2015
Yuki Suga
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
Semelhante a Kamonを理解する
(20)
Cython ことはじめ
Cython ことはじめ
JAZUG クラウドデザインパターンのコードを覗く
JAZUG クラウドデザインパターンのコードを覗く
アプリケーション開発と分析のための Log Analytics
アプリケーション開発と分析のための Log Analytics
Haikara
Haikara
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
ji-2. 計算
ji-2. 計算
kompass_GreacとLLM_20230728.pdf
kompass_GreacとLLM_20230728.pdf
Chrome DevTools.next
Chrome DevTools.next
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Modern stream processing by Spark Structured Streaming
Modern stream processing by Spark Structured Streaming
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
Pythonを使った簡易診断スクリプトの作り方
Pythonを使った簡易診断スクリプトの作り方
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由
System Center Operations Managerによる仮想環境の高度な管理
System Center Operations Managerによる仮想環境の高度な管理
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
RTミドルウエア講習会2015
RTミドルウエア講習会2015
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Mais de Shuya Tsukamoto
Apache hadoop yarn 勉強会 8. capacity scheduler in yarn
Apache hadoop yarn 勉強会 8. capacity scheduler in yarn
Shuya Tsukamoto
AdTech Scala Meetup 7 spray-can
AdTech Scala Meetup 7 spray-can
Shuya Tsukamoto
bean-validation-scala
bean-validation-scala
Shuya Tsukamoto
Scala勉強会 2015 02_03
Scala勉強会 2015 02_03
Shuya Tsukamoto
とりあえず使うScalaz
とりあえず使うScalaz
Shuya Tsukamoto
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
Shuya Tsukamoto
Mais de Shuya Tsukamoto
(6)
Apache hadoop yarn 勉強会 8. capacity scheduler in yarn
Apache hadoop yarn 勉強会 8. capacity scheduler in yarn
AdTech Scala Meetup 7 spray-can
AdTech Scala Meetup 7 spray-can
bean-validation-scala
bean-validation-scala
Scala勉強会 2015 02_03
Scala勉強会 2015 02_03
とりあえず使うScalaz
とりあえず使うScalaz
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
Último
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Último
(10)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
Kamonを理解する
1.
Kamonを理解する CA ProFit-X 塚本 修也
@s_tsuka 2015/11/20 AdTech Scala Meetup 1
2.
目次 • Kamonとは • Kamonの使い方 •
実際にシステムを監視してみる • Kamonの内部構造 2
3.
はじめる前に 3
4.
とりあえず動かしたい人向け • ミニマムなサンプルを用意しました # 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
5.
Kamonとは 5
6.
Kamonとは • JVM上で動くアプリケーションの監視ツール(ライブラリ) • 多くの拡張・連携機能 Akka
Actor, JDBC, JMX, Play2, Spray, Datadog, NewRelic … • Web site http://kamon.io/ • GitHub https://github.com/kamon-io/Kamon 6
7.
ツールというよりライブラリ • Scalaのライブラリ Maven centralから使える •
Scalaアプリケーション内から呼び出す感じ 7
8.
何ができるの?拡張機能って? • JVMアプリの監視(値の定期取得) • CPU,
Memory, NW I/O, Load average, etc • Actorの処理時間、溜まっているメッセージ数 • 任意の処理block(method)の処理時間 • 独自に値を収集可能 • Kamonが収集した値の外部出力 Datadog, NewRelic, 標準出力, StatsD, fluentd 8
9.
できないこと • (GUIによる)可視化 ※外部ツールにデータを転送することは可能 • 別途可視化環境を用意しましょう •
kamon-statsd + Graphite • kamon-spm + SPM • kamon-datadog + Datadog • kamon-newrelic + Newrelic 9
10.
Kamonの使い方 10
11.
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
12.
導入4ステップ 1. アプリ作成 2. libraryDependencies追加 3.
conf追加 4. Kamon用のコード追加 12
13.
拡張機能による自動データ収集 • 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
14.
一部aspectjが必要 • http://kamon.io/introduction/overview/ • アプリを動かすときは以下のような感じで java
-javaagent:~/.aspectj/aspectj-weaver.jar your- app.jar 14
15.
kamon-system-metricsを使う人は Sigarも必要 • http://kamon.io/integrations/system-metrics/system- and-jvm-metrics/ • Sigar •
システムの情報(CPU, Memoryなど)を取得するC言語 で書かれたライブラリ • Java実装もあるっぽい・・けどただのラッパー?実行 時には共有ライブラリ(.so, .dylib)が必要みたい 15
16.
Sigarをどうやって入れれば良 いの? • http://kamon.io/integrations/system-metrics/ system-and-jvm-metrics/ • sigar-loaderを使う •
カレントdirのnative dir以下に自動でDL • 後は java -Djava.library.path=native -jar … 16
17.
独自に値を収集する • コードを書くだけ 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
18.
動作確認 • まずはlog-reporterで確認 • 以下のサンプルをsbt
runすれば確認できます https://github.com/tsukaby/kamon-spray- example "io.kamon" %% "kamon-log-reporter" % "0.5.2" 18
19.
データの転送 • log-reporterで見てもあまり意味ない (debug用) • Datadogに送りたいなら "io.kamon"
%% "kamon-datadog" % "0.5.2" 19
20.
実際にシステムを 監視してみる 20
21.
CA ProFit-X 配信サーバの例 •
運用・監視している配信サーバの例 • 各Metricsなどの割合(体感) • Counter 60% • Histogram 10% • Tracer 30% • Gauge 0% (どこで使うんだろう・・) • Counter以外は使いどころが難しい。(どなたか教えて下さい) 21
22.
障害の検知 Actorを見る • 「リリースしたら何か調子悪いね?」 • 「配信サーバのレスポンスが悪化してな い?」 22
23.
障害の検知 Actorを見る (mailboxのたまり具合を可視化) 23
24.
障害の検知 Actorを見る (mailboxのたまり具合を可視化) • (良い例がなくてごめんなさい) • 何かまずいプログラムをリリースすると特定の Actorが詰まる •
e.g. 非同期を意識してないコード • e.g. DynamoDBのキャパシティーが不足した 24
25.
接続先サーバ(AdNetwork, DSP)の APIのレスポンスタイム • 「X社からImpressionが少ないって問い合わせ が来てるんだけど?」 25
26.
接続先サーバ(AdNetwork, DSP)の APIのレスポンスタイム 26
27.
接続先サーバ(AdNetwork, DSP)の APIのレスポンスタイム • X社のAPIは117ms ProFit-X配信サーバでは100msでタイムアウト •
A, B, C, …社は7∼30msで高速 • Z社はスパイクしている・・・ (理由は不明) • 各接続先のサーバに障害があるとこのグラフも変化する 27
28.
データの消化具合を計測 • 「Impressionとかの値が乖離してるよね」 「Kinesisの値の消化が間に合ってないか も?」 • 「現在扱ってるKinesisレコードの日付と現在 時刻を比較してみよう」 28
29.
データの消化具合を計測 29
30.
データの消化具合を計測 • 消化が間に合ってない • 最大86K秒(約24h)前のデータを消化している 30
31.
データの消化具合を計測(その後) • 同僚がチューニングしてくれて改善 31
32.
Kamonの内部構造 32
33.
Kamonの内部構造 (基本) 33
34.
Kamonの疑問 • どういう仕組みで動いているの? • libraryDependenciesを追加するだけでどうし て動くの? 34
35.
構成要素 • Akka Actor •
Akka Extensions • AspectJ • Sigar • 出版-購読型モデル(Publisher, Subscriber) (Observerパターン) • LongAdder • HdrHistogram 35
36.
KamonもActorSystem • Kamon.start()で専用のActorSystemを作成 https://github.com/kamon-io/Kamon/blob/ master/kamon-core/src/main/scala/kamon/ Kamon.scala#L51 36
37.
拡張機能は自動でONに • ModuleLoaderがロード(Akka Extensions) https://github.com/kamon-io/Kamon/blob/ master/kamon-core/src/main/scala/kamon/ ModuleLoader.scala#L92-L111 37
38.
Akka Extensionって? • http://doc.akka.io/docs/akka/snapshot/scala/ extending-akka.html •
Akka ActorのExtensionを少し調べてみた • ActorSystem内に1つだけ存在できるActorの拡 張(拡張というよりただのLogic, Stateの集合?) 38
39.
KamonにおけるExtensions • 複数jarがあるがほぼ全てAkka Extensions •
ModuleLoaderが自動でロード • 特に有効化など追加のコード必要なし 39
40.
Kamonの内部構造 (データの転送) 40
41.
Kamonの疑問その2 • どうやって値を転送しているの? 41
42.
定期的に値を転送 • SubscriptionsDispatcher 1. processTick 2.
dispatch 3. dispatchSelections 4. subscriber ! tickMetrics • subscriber log-reporterやdatadog-metrics-sender 42
43.
MetricsSenderって? • その名の通り。いろいろある。 • DatadogMetricsSender •
SimpleStatsDMetricsSender • FluentdMetricsSender • etc 43
44.
MetricsSenderって? • SubscriptionDispatcherが TickMetricSnapshotを作成し、 各MetricsSenderへ送信 • 各MetricsSenderは転送先に合った形にデータ を整形・送信 44
45.
Kamonの内部構造 (値のカウント) 45
46.
Kamonの疑問その3 • metricsはどう作られているの? • tracerはどう作られているの? •
どうしてカウントした値が転送されるの? 46
47.
Metricsの作成 • MetricsModule#registerCounter • 単にCounterを作成して返しているだけ •
Counter = 内部的にはLongAdder • _trackedEntitiesに既にあればそれを返す val counter = Kamon.metrics.counter("foo") 47
48.
Snapshotを作成 • MetricsModule#collectSnapshots • _trackedEntitiesを全てなめる •
現時点の値を取得し、Snapshotを作成 48
49.
Tracer • tracer =
内部的にはhistogram • metricsとほぼ同じ仕組み • histogram = 内部的にはHdrHistogram 49
50.
Tracerの作成 • TraceModule#withNewContext • 内部的にMetricsOnlyContextなどが作られる •
自動または手動で#finishを実行 • finishするとhistogramのデータ作成(後はmetricsと同じ) Tracer.withNewContext("foo", autoFinish = true) { println("Hello") } 50
51.
まとめ 51
52.
まとめ • Kamonの概要 • Kamonの使い方、サンプルコード •
ProFitXの例 • Kamonの内部構造について 52
Baixar agora