SlideShare une entreprise Scribd logo
1  sur  72
Télécharger pour lire hors ligne
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
2018年10月31日
ヤフー株式会社 池田 誠
Micrometer/Prometheusによる
大規模システムモニタリング
〜ヤフーインターネット広告システムでの導入事例〜
Spring Fest 2018
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
自己紹介
2
池田 誠
ヤフー株式会社
所属:インターネット広告の開発部
仕事:
インターネット広告システムの共通機能開発
新技術の検証・導入サポート
言語:C, C++, Java, Kotlin, Python, Go(勉強中)
趣味:ゲーム, スキー
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
はじめに
3
ヤフーのインターネット広告システムでは、Micrometerと
Prometheusを採用したモニタリングシステムを構築し、
3000+のSpring Bootアプリケーションインスタンスの
パフォーマンスモニタリングをしています。
本日は、MicrometerとPrometheusの簡単な紹介、大規模
システムでの導入事例として、導入時に遭遇したトラブル
や直面している課題をお話しさせていただきます。
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
システムモニタリングの重要性
4
システムモニタリングを行わないと
どんなトラブル起こりますか?
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
システムモニタリングの重要性
5
• パフォーマンス問題に気付かない
• エラーの増加に気付かない
• 障害を解析するための情報集めに苦労する
など
サービスを安定して稼働/運用することができない
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
システムモニタリングの重要性
6
分散システムでは
多数あるアプリケーション内から
異常アプリケーションを早く特定するため
モニタリングがさらに重要
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ
7
• ヤフーのインターネット広告システム紹介
• 導入背景
• Micrometer/Prometheus説明
• Micrometer/Prometheus採用理由
• モニタリングシステム構成
• 苦労したエピソード・トラブル
• まとめ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ
8
• ヤフーのインターネット広告システム紹介
• 導入背景
• Micrometer/Prometheus説明
• Micrometer/Prometheus採用理由
• モニタリングシステム構成
• 苦労したエピソード・トラブル
• まとめ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
ヤフーのインターネット広告システム紹介
システム概要
9
FE
広告主
広告
配信
オーディエンス
• 複数アプリケーションが協調動作
• 全体で数千インスタンスが稼働
広告
出稿
広告管理システム 広告配信システム
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
ヤフーのインターネット広告システム紹介
システム概要
10
モニタリングシステムは広告管理システムに導入
FE
広告管理システム 広告配信システム
広告主
広告
配信
オーディエンス
広告
出稿
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
ヤフーのインターネット広告システム紹介
アプリケーションの動作プラットフォーム
11
• IaaS (OpenStack)
• 現在の主力プラットフォーム
• PaaS, CaaSに移行中
• PaaS (Pivotal Cloud Foundry)
• CaaS (Kubernetes)
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
ヤフーのインターネット広告システム紹介
アプリケーションの種類
12
フロントエンドサーバー APIサーバー
(REST or SOAP)
ストリーム処理
publisher
ストリーム処理
subscriber
メッセージブローカー
バッチサーバー
各アプリケーションが協調動作
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ
13
• ヤフーのインターネット広告システム紹介
• 導入背景
• Micrometer/Prometheus説明
• Micrometer/Prometheus採用理由
• モニタリングシステム構成
• 苦労したエピソード・トラブル
• まとめ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
導入背景
14
• 既存の独自モニタリングシステム刷新
• SREを推進するための土台作り/道具整備
※既存の独自モニタリングシステムは広告管理システム独自のシステム
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
導入背景
独自モニタリングシステム刷新
15
• 独自モニタリングシステムの課題
• 属人化
• モニタリング項目追加に開発が必要
• カバー範囲が拡大し範疇外の機能を搭載
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
導入背景
独自モニタリングシステム刷新
16
ビジネス
インテリジェンス
システム性能可視化
システム死活監視
(アラート)
独自の
モニタリングシステム
対象領域 刷新前の利用ツール
ヤフー全社共通の
死活監視サービス
利用者/対象者
システム運用
(ジョブ実行・ログ確認)
業務運用
(ビジネスサイドの担当者
へアラートなど)
ビジネスサイドの
企画や業務運用者
開発者
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
導入背景
独自モニタリングシステム刷新
17
ビジネス
インテリジェンス
システム性能可視化
システム死活監視
(アラート)
独自の
モニタリングシステム
対象領域 刷新前の利用ツール
ヤフー全社共通の
死活監視サービス
専用ツール利用
新モニタリングシステム
刷新後の利用ツール
移行
利用者/対象者
システム運用
(ジョブ実行・ログ確認)
業務運用
(ビジネスサイドの担当者
へアラートなど)
移行
ヤフー全社共通の
死活監視サービス
ジョブコントローラー/
ワークフローエンジン利用
(NiFiやAirflowなど)
各アプリケーションごと実施
移行
移行
継続
ビジネスサイドの
企画や業務運用者
開発者
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
導入背景
Site Reliability Engineering (SRE)
18
• アプリケーション信頼性とユーザー体験を向上させる活動
• モニタリングと改善のサイクル
• レイテンシ、エラー率、トラフィック、リソース(CPU、メモリー、N/Wトラフィック…)
エンジニア アプリケーションモニタリング
改善
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
導入背景
Site Reliability Engineering (SRE)
19
• SREを推進するためのモニタリング
• 性能低下の検知
• エラー増加傾向の検知
• アプリケーションアップデート前後の性能比較
• 需要予測、キャパシティプランニング
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ
20
• ヤフーのインターネット広告システム紹介
• 導入背景
• Micrometer/Prometheus説明
• Micrometer/Prometheus採用理由
• モニタリングシステム構成
• 苦労したエピソード・トラブル
• まとめ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Prometheus
21
• 時系列DB + モニタリングシステム
• pull方式でメトリクス収集
• 監視対象はメトリクスが記載されたテキストを返却
定期的にPull (HTTP)
Prometheus 監視対象
# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="iowait"} 2.94
node_cpu{cpu="cpu0",mode="system"} 937.24
node_cpu{cpu="cpu0",mode="user"} 2583.65
# …
※時系列DBは時系列データの格納・検索に特化したDB
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Prometheus
データモデル
# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="guest"} 0
node_cpu{cpu="cpu0",mode="iowait"} 2.94
node_cpu{cpu="cpu0",mode="system"} 937.24
node_cpu{cpu="cpu0",mode="user"} 2583.65
# …
22
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Prometheus
データモデル
23
# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="guest"} 0
node_cpu{cpu="cpu0",mode="iowait"} 2.94
node_cpu{cpu="cpu0",mode="system"} 937.24
node_cpu{cpu="cpu0",mode="user"} 2583.65
# …
メトリクス名 データサンプルラベル名、ラベル値
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Prometheus
検索/可視化
24
• 収集したメトリクスはPromQL(独自クエリー)で検索/可視化
※CPU使用率を可視化した例
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Prometheus
UI
25
• UIとしてGrafanaと連携
• ダッシュボードを作成・保存可能
Grafana Prometheusエンジニア
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 26
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Prometheus
注意点
27
• Prometheus単独では冗長化できない
• 内蔵の時系列DBが冗長化できない
• 公式ドキュメントでの冗長化手段
• 同じ設定のPrometheusをもう1台設置
• 時系列DBを他製品に切り替える
※冗長化に関する公式ドキュメント
<https://prometheus.io/docs/introduction/faq/#can-prometheus-be-made-highly-available>
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Micrometer
28
• メトリクス収集ライブラリ
• Dependency追加&多少の設定追加で動作
• 様々なモニタリングシステムと連携可能(※)
• Prometheus, Netflix Atlas, CloudWatch, Datadog,
Graphite, Ganglia, JMX, Influx/Telegraf, New Relic,
StatsD, SignalFx, and Wavefront
※micrometer公式サイトより引用 <https://micrometer.io/>
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Micrometer
利用方法(SpringBoot1.5系)
29
Maven or Gradleの設定でdependency追加 application.yml or propertiesに設定追加
※Prometheusと連携する場合の例
これだけでメトリクス収集が開始
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Micrometer
利用方法(SpringBoot2系)
30
※Prometheusと連携する場合の例
これだけでメトリクス収集が開始
Maven or Gradleの設定でdependency追加 application.yml or propertiesに設定追加
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Micrometer
収集メトリクス
31
• デフォルトで収集されるメトリクス(一部)
• Web Controller(実行回数/レスポンスタイム)
• RestTemplate(実行回数/レスポンスタイム)
• Spring Cloud Streamのpub/subカウント
• JVM(各種メモリ使用状況、スレッド数、GC)
• OSリソース(CPU)
※1 上記はソースコード修正なしで収集
※2 その他の収集可能なメトリクスは以下を参照
<https://spring.io/blog/2018/03/16/micrometer-spring-boot-2-s-new-application-metrics-collector>
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Micrometer
カスタムメトリクス
32
• 独自メトリクスを簡単に作成可能
private final MeterRegistry registry;
public SampleServiceImpl(MeterRegistry registry) {
this.registry = registry;
}
// カスタムメトリクス( jobTypeごとに集計)
public void execute(Job job) {
// sample_job_total{job_type="JOB1",} 3.0
// sample_job_total{job_type="JOB2",} 5.0
Counter.builder("sample_job").tags("job_type", job.getJobType().toString())
.register(registry).increment();
}
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ
33
• ヤフーのインターネット広告システム紹介
• 導入背景
• Micrometer/Prometheus説明
• Micrometer/Prometheus採用理由
• モニタリングシステム構成
• 苦労したエピソード・トラブル
• まとめ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステムへの要件
34
• 複数のプラットフォームで導入できること
• IaaS, PaaS, CaaS
• 監視対象アプリケーションへの導入が容易であること
• 可能であればコード修正なしで導入
• 例えばDependency or アノテーションを追加するだけ
• 閾値超えアラートを利用できること
• グラフで可視化できること(当たり前)
• 任意の監視項目・グラフを自由に追加できること
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Micrometer
採用の決め手
35
• アプリケーション内部でしか収集できないメトリクスを収集
• コード修正なしで基本的なメトリクスを自動で収集
• 簡単にカスタマイズできて任意のメトリクスを追加可能
• 様々なモニタリングシステムと連携
• Prometheus, Atlas, CloudWatch, Influx, New Relic …
• Spring Boot公式サポートなので安心
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Micrometer
要件に対する可否
36
○ 複数のプラットフォームで導入できること
• Javaなのでプラットフォームに左右されない
○ 監視対象アプリケーションへの導入が容易であること
• コード修正不要
ー 閾値超えアラートを利用できること
• Micrometerはメトリクス収集が役割なので検討範囲外
ー グラフで可視化できること(当たり前)
• Micrometerはメトリクス収集が役割なので検討範囲外
○ 任意の監視項目・グラフを自由に追加できること
• カスタムメトリクスで任意項目を追加
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Prometheus
採用の決め手
37
• 時系列DBなのでグラフ描画用途に最適
• Pull方式なのでエージェントレス
• 大規模システム利用可能
• 1万ノード監視の実績
• SRE本で紹介
• コミュニティーが活発
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Prometheus
要件に対する可否
38
△ 複数のプラットフォームで導入できること
• pull方式のためPaaS監視で課題あり(※)
○ 監視対象アプリケーションへの導入が容易であること
• Micrometerとの連携の場合、コード修正不要
○ 閾値超えアラートを利用できること
• アラート機能あり
○ グラフで可視化できること(当たり前)
• Grafanaとの連携でダッシュボードを利用
○ 任意の監視項目・グラフを自由に追加できること
• Grafanaとの連携で任意グラフを追加
※PaaSにデプロイされたインスタンス監視は一手間加えており詳細を後述
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ
39
• ヤフーのインターネット広告システム紹介
• 導入背景
• Micrometer/Prometheus説明
• Micrometer/Prometheus採用理由
• モニタリングシステム構成
• 苦労したエピソード・トラブル
• まとめ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム詳細
構成
40
エンジニア
Grafana Prometheus
Alertmanager
アラート
アラート
(Eメール、チャットツール)
参照
データ取得
各アプリケーションのインスタンス
pull
※1 PaaSにデプロイされたインスタンス監視は一手間加えており詳細を後述
※2 CaaSは対応作業中
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム詳細
構成
41
エンジニア
Grafana Prometheus
Alertmanager
アラート
アラート
(Eメール、チャットツール)
参照
データ取得
各アプリケーションのインスタンス
pull
※1 PaaSにデプロイされたインスタンス監視は一手間加えており詳細を後述
※2 CaaSは対応作業中
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム詳細
構成
42
エンジニア
Grafana Prometheus
Alertmanager
アラート
アラート
(Eメール、チャットツール)
参照
データ取得
各アプリケーションのインスタンス
pull
※1 PaaSにデプロイされたインスタンス監視は一手間加えており詳細を後述
※2 CaaSは対応作業中
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム詳細
構成
43
エンジニア
Grafana Prometheus
Alertmanager
アラート
アラート
(Eメール、チャットツール)
参照
データ取得
各アプリケーションのインスタンス
pull
※1 PaaSにデプロイされたインスタンス監視は一手間加えており詳細を後述
※2 CaaSは対応作業中
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム詳細
数千インスタンス監視の運用課題
44
• 数千インスタンスをPrometheusに設定する運用コストが高
• インスタンスの増減のたびに設定変更する運用が大変
# Prometheusの設定ファイル
- targets:
- app10.localdomain:8080
- app11.localdomain:8080
- app12.localdomain:8080
- app13.localdomain:8080
- app14.localdomain:8080
# …
# 以下省略
# 数千台を並べる
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム詳細
サービスディスカバリ(実装中)
45
• サービスディスカバリ (Netflix-Eureka) を導入
• Prometheusの監視対象を変更する運用コストの削減
Prometheus
アプリケーションのインスタンス
Eurekaサーバー
ホスト登録 (インスタンス起動時)
pull
Eureka連携ツール
設定ファイル登録
(ホスト一覧)
Spring Bootの
eureka-client-
starterを利用
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム詳細
特徴
46
• Grafanaに共通ダッシュボードを用意
• 監視対象の追加後すぐに基本的なグラフは参照可能
• 利用者は権限の制約なしで自由に利用可能
• 利用者は任意のメトリクス/グラフを自由に追加可能
• 利用者は全アプリのグラフを参照可能
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 47
実際の動作画面紹介
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム構成
稼働状況
48
• 監視インスタンス数
• 3400インスタンス
監視対象を約500台追加したこと
でFDのMaxOpenFilesを超過して
しまい数時間、データ収集失敗
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム構成
稼働状況
49
• ディスク使用量
• 1週間で約15GB増加
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム構成
稼働状況
50
• 1回(※)で収集されるメトリクス(サンプル)数
• 120万+
※1分に1回収集
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
モニタリングシステム構成
稼働状況
51
• Prometheusサーバースペック
• VM (IaaS)
• CPU: 2.10GHz 8core
• Memory: 16GB
• Storage: 500GB (OpenStack Cinder Volume)
• 必要に応じて増量
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ
52
• ヤフーのインターネット広告システム紹介
• 導入背景
• Micrometer/Prometheus説明
• Micrometer/Prometheus採用理由
• モニタリングシステム構成
• 苦労したエピソード・トラブル
• まとめ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例1: PaaS上インスタンス監視
課題
53
• インスタンス狙い撃ちでメトリクス収集できない
• PaaSにデプロイしたアプリへの接続はアプリごと割り当てたFQDNで接続
• リクエストはルーターによって毎回バランス
• 個別のインスタンスにはFQDNが割り当て不可能
PaaSのルーター
Prometheus
アプリケーションのインスタンス
PaaS
メトリクス収集
FQDN (app1.localdomain)
リクエストごとに異なる
インスタンスにバランス
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例1: PaaS上インスタンス監視
Pushgateway方式
54
• Pushgatewayを使いPaaS内部からpush
PaaSのルーター
Prometheus
アプリケーションのインスタンス
PaaS
Pushgateway
push
メトリクス収集
push
Micrometerは設定の
追加だけで定期的にPush
PushgatewayはPrometheusのサブプロダクトで一時的にメトリクスを保存するサーバー
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例1: PaaS上インスタンス監視
Pushgateway導入後の構成
55
エンジニア
Grafana Prometheus
Alertmanager
アラート
アラート
(Eメール、チャットツール)
参照
データ取得
各アプリケーションのインスタンス
pull
IaaS
PaaS
push
Pushgateway
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例1: PaaS上インスタンス監視
補足
56
Pushgatewayの多用は
オススメされていないので、
引き続き、
別の方式を検討中
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例2: メトリクスが増えすぎGC連発
発生トラブル
57
• Micrometer導入後リリースして数時間するとGC連発
• APIのレイテンシが超悪化
• サービス継続不可
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例2: メトリクスが増えすぎGC連発
発生条件
58
• JAX-RSを使っている
• Micrometerがv1.0.4以下である
• Spring Bootがv2.0.2以下である
• Pathパラメーターを利用しているAPIを作成している
// APIの例
@GET
@Path("/info/{userId} ")
String userInfo(@PathParam("userId") String userId) {
// ...
}
※トラブル当時、Micrometer v1.0.3を利用
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例2: メトリクスが増えすぎGC連発
原因
59
• Pathパラメーターを利用すると
メトリクス(ラベル)が爆増しメモリ圧迫(※)
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/info/1",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/info/1",} 0.004786132
http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/info/1",} 0.004786132
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/info/2",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/info/2",} 0.002610582
http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/info/2",} 0.002610582
# ・・・
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/info/99999",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/info/99999",} 0.003471098
http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/info/99999",} 0.003471098
# 爆増
※Micrometerは収集したメトリクスをオンメモリで保存
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例2: メトリクスが増えすぎGC連発
解決方法
60
• Micrometerと連携(に介入)する
Apache CXFのインターセプターを自作
• Pathのパターンごとにメトリクス収集
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/info/{userId}",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/info/{userId}",} 0.004786132
http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/info/{userId}",} 0.004786132
※JAX-RS実装はApache CXFを利用
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例2: メトリクスが増えすぎGC連発
補足事項
61
• Spring Web MVCを使っている場合は
手を加えなくてもPathパターンごとにメトリクスを収集
• どの程度までメトリクス数(ラベル)を増やせるか検証
• 3〜5万メトリクス(ラベル)が限界の目安
• メモリ枯渇以前にpullした時のレスポンスが数秒になる
# @RequestMapping("/info/{userId}")
http_server_requests_seconds_count{…., uri="/info/{userId}",}
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例2: メトリクスが増えすぎGC連発
補足事項
62
• Micrometer1.0.5からはJAX-RSの場合、
uriが全て”UNKNOWN”にされるのでメモリ枯渇はおきない
• これも課題になったが自作インターセプターの利用で解決
http_server_requests_seconds_count{…, uri="UNKNOWN",} 1.0
http_server_requests_seconds_sum{…, uri="UNKNOWN",} 0.004786132
http_server_requests_seconds_max{…, uri="UNKNOWN",} 0.004786132
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例2: メトリクスが増えすぎGC連発
補足事項
63
カスタムメトリクス作成時
メトリクス数が爆増しないように
ラベル付けにも注意
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例3: 現在対応中の性能問題
問題/発生条件
64
Prometheusで性能問題発生
• 問題
• 複雑なクエリーのレスポンスが悪化 (数分)
• 複雑なクエリーを並列実行するとOOMキラー発動
• ボトルネックは、CPU (1coreが100%張りつき)、メモリ
• 発生条件
• 1時系列あたりデータ数が数万になるメトリクス対して集計
• 集計コストが高いクエリーを実行
• 集計期間が長い (数週間分)
※サーバースペック:2.10GHz 8core、16GB メモリー
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例3: 現在対応中の性能問題
高コストクエリー
65
• 1時系列あたりの集計対象メトリクス(データサンプル)数=約40000
• アプリは約1000インスタンスで構成
• アプリ全体の5分ごとの平均レスポンスタイム(累計レスポンスタイム÷実行回数)を集計
• ステータスコード、URI、methodごとに集計する
sum(increase(http_server_requests_seconds_sum{job="app1"}[5m])) by (status,uri,method)
/
sum(increase( http_server_requests_seconds_count{job="app1"}[5m])) by (status,uri,method)
ステータスコード、URI、methodごとの、5分間の累計レスポンスタイム
ステータスコード、URI、methodごとの、5分間の累計実行回数
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例3: 現在対応中の性能問題
解決方法(検証中)
66
• Prometheusの1次集計機能(RecordingRule)を利用
groups:
- name: example
interval: 60s # 1次集計間隔
rules:
# 5分間あたりのアプリ全体の累計レスポンスタイムをstatus、uri、methodごとに一次集計する
- record: job:http_server_requests_seconds_sum:app1:increase5m:sum
expr: sum(increase(http_server_requests_seconds_sum{job="app1"}[5m])) by (status,uri,method)
# 5分間あたりのアプリ全体の累計実行回数をstatus、uri、methodごとに一次集計する
- record: job:http_server_requests_seconds_count:app1:increase5m:sum
expr: sum(increase(http_server_requests_seconds_count{job="app1"}[5m])) by (status,uri,method)
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
事例3: 現在対応中の性能問題
改善効果(検証結果)
67
• 改善効果
約45秒
約0.4秒
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ
68
• ヤフーのインターネット広告システム紹介
• 導入背景
• Micrometer/Prometheus説明
• Micrometer/Prometheus採用理由
• モニタリングシステム構成
• 苦労したエピソード・トラブル
• まとめ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
良かった点
69
• 監視対象側の導入は簡単・低コスト
• 手順はDependencyの追加程度なのであっという間に利用アプリが増えた
• カスタマイズ性抜群 = 属人化が解消
• アプリ開発者がカスタムメトリクスを使い必要なメトリクスを追加してくれた
• アプリ開発者が見たいグラフを自由に追加してくれた
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
苦労した点
70
• PromQL習得に学習コストがかかる
• ナレッジ/ドキュメント不足で調査に苦労した
• 例えばPushgatewayにpushする設定方法はソース解析
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
本日持ち帰っていただきたいこと
71
Micrometer/Prometheusは
•監視対象側の導入は簡単・低コスト
•カスタマイズ性が抜群
•大規模システムにおいても難なく利用可能(※)
※大量メトリクスに対して複雑な集計をする場合は、1次集計する工夫が必要
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 72
ご静聴ありがとうございました

Contenu connexe

Tendances

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと土岐 孝平
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018Yusuke Suzuki
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話Daichi Koike
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方Recruit Lifestyle Co., Ltd.
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
What's new in Spring Batch 5
What's new in Spring Batch 5What's new in Spring Batch 5
What's new in Spring Batch 5ikeyat
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService PrincipalToru Makabe
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 

Tendances (20)

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
What's new in Spring Batch 5
What's new in Spring Batch 5What's new in Spring Batch 5
What's new in Spring Batch 5
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
AWS CLIでAssumeRole
AWS CLIでAssumeRoleAWS CLIでAssumeRole
AWS CLIでAssumeRole
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 

Similaire à Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26

変わる!? リクルートグループのデータ解析基盤
変わる!? リクルートグループのデータ解析基盤変わる!? リクルートグループのデータ解析基盤
変わる!? リクルートグループのデータ解析基盤Recruit Technologies
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1openrtm
 
1.コース概要
1.コース概要1.コース概要
1.コース概要openrtm
 
販売店向けコールセンターシステム開発
販売店向けコールセンターシステム開発販売店向けコールセンターシステム開発
販売店向けコールセンターシステム開発Cybozucommunity
 
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングLINE Corporation
 
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナーIMJ Corporation
 
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...SORACOM,INC
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf勇 黒沢
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例Shinji Tamura
 
LoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンLoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンTomokazu Kizawa
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 Insight Technology, Inc.
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 
第16回「エキスパート・インテグレーテッド・システム『IBM PureSystems』の価値」(2012/04/19 on しすなま!)
第16回「エキスパート・インテグレーテッド・システム『IBM PureSystems』の価値」(2012/04/19 on しすなま!)第16回「エキスパート・インテグレーテッド・システム『IBM PureSystems』の価値」(2012/04/19 on しすなま!)
第16回「エキスパート・インテグレーテッド・システム『IBM PureSystems』の価値」(2012/04/19 on しすなま!)System x 部 (生!) : しすなま! @ Lenovo Enterprise Solutions Ltd.
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewYuji Kubota
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotNobuyuki Matsui
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)Photon運営事務局
 
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会Hirokazu Narita
 

Similaire à Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26 (20)

変わる!? リクルートグループのデータ解析基盤
変わる!? リクルートグループのデータ解析基盤変わる!? リクルートグループのデータ解析基盤
変わる!? リクルートグループのデータ解析基盤
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1
 
1.コース概要
1.コース概要1.コース概要
1.コース概要
 
販売店向けコールセンターシステム開発
販売店向けコールセンターシステム開発販売店向けコールセンターシステム開発
販売店向けコールセンターシステム開発
 
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
 
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
 
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
【IMJ】デジタルマーケティングを加速させるヒントがここに imj jelly cms 事例活用セミナー
 
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例
 
LoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンLoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオン
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
第16回「エキスパート・インテグレーテッド・システム『IBM PureSystems』の価値」(2012/04/19 on しすなま!)
第16回「エキスパート・インテグレーテッド・システム『IBM PureSystems』の価値」(2012/04/19 on しすなま!)第16回「エキスパート・インテグレーテッド・システム『IBM PureSystems』の価値」(2012/04/19 on しすなま!)
第16回「エキスパート・インテグレーテッド・システム『IBM PureSystems』の価値」(2012/04/19 on しすなま!)
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
 
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
 

Plus de Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

Plus de Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

Dernier

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Dernier (10)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26

  • 1. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 2018年10月31日 ヤフー株式会社 池田 誠 Micrometer/Prometheusによる 大規模システムモニタリング 〜ヤフーインターネット広告システムでの導入事例〜 Spring Fest 2018
  • 2. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 自己紹介 2 池田 誠 ヤフー株式会社 所属:インターネット広告の開発部 仕事: インターネット広告システムの共通機能開発 新技術の検証・導入サポート 言語:C, C++, Java, Kotlin, Python, Go(勉強中) 趣味:ゲーム, スキー
  • 3. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. はじめに 3 ヤフーのインターネット広告システムでは、Micrometerと Prometheusを採用したモニタリングシステムを構築し、 3000+のSpring Bootアプリケーションインスタンスの パフォーマンスモニタリングをしています。 本日は、MicrometerとPrometheusの簡単な紹介、大規模 システムでの導入事例として、導入時に遭遇したトラブル や直面している課題をお話しさせていただきます。
  • 4. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. システムモニタリングの重要性 4 システムモニタリングを行わないと どんなトラブル起こりますか?
  • 5. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. システムモニタリングの重要性 5 • パフォーマンス問題に気付かない • エラーの増加に気付かない • 障害を解析するための情報集めに苦労する など サービスを安定して稼働/運用することができない
  • 6. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. システムモニタリングの重要性 6 分散システムでは 多数あるアプリケーション内から 異常アプリケーションを早く特定するため モニタリングがさらに重要
  • 7. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. アジェンダ 7 • ヤフーのインターネット広告システム紹介 • 導入背景 • Micrometer/Prometheus説明 • Micrometer/Prometheus採用理由 • モニタリングシステム構成 • 苦労したエピソード・トラブル • まとめ
  • 8. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. アジェンダ 8 • ヤフーのインターネット広告システム紹介 • 導入背景 • Micrometer/Prometheus説明 • Micrometer/Prometheus採用理由 • モニタリングシステム構成 • 苦労したエピソード・トラブル • まとめ
  • 9. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. ヤフーのインターネット広告システム紹介 システム概要 9 FE 広告主 広告 配信 オーディエンス • 複数アプリケーションが協調動作 • 全体で数千インスタンスが稼働 広告 出稿 広告管理システム 広告配信システム
  • 10. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. ヤフーのインターネット広告システム紹介 システム概要 10 モニタリングシステムは広告管理システムに導入 FE 広告管理システム 広告配信システム 広告主 広告 配信 オーディエンス 広告 出稿
  • 11. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. ヤフーのインターネット広告システム紹介 アプリケーションの動作プラットフォーム 11 • IaaS (OpenStack) • 現在の主力プラットフォーム • PaaS, CaaSに移行中 • PaaS (Pivotal Cloud Foundry) • CaaS (Kubernetes)
  • 12. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. ヤフーのインターネット広告システム紹介 アプリケーションの種類 12 フロントエンドサーバー APIサーバー (REST or SOAP) ストリーム処理 publisher ストリーム処理 subscriber メッセージブローカー バッチサーバー 各アプリケーションが協調動作
  • 13. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. アジェンダ 13 • ヤフーのインターネット広告システム紹介 • 導入背景 • Micrometer/Prometheus説明 • Micrometer/Prometheus採用理由 • モニタリングシステム構成 • 苦労したエピソード・トラブル • まとめ
  • 14. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 導入背景 14 • 既存の独自モニタリングシステム刷新 • SREを推進するための土台作り/道具整備 ※既存の独自モニタリングシステムは広告管理システム独自のシステム
  • 15. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 導入背景 独自モニタリングシステム刷新 15 • 独自モニタリングシステムの課題 • 属人化 • モニタリング項目追加に開発が必要 • カバー範囲が拡大し範疇外の機能を搭載
  • 16. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 導入背景 独自モニタリングシステム刷新 16 ビジネス インテリジェンス システム性能可視化 システム死活監視 (アラート) 独自の モニタリングシステム 対象領域 刷新前の利用ツール ヤフー全社共通の 死活監視サービス 利用者/対象者 システム運用 (ジョブ実行・ログ確認) 業務運用 (ビジネスサイドの担当者 へアラートなど) ビジネスサイドの 企画や業務運用者 開発者
  • 17. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 導入背景 独自モニタリングシステム刷新 17 ビジネス インテリジェンス システム性能可視化 システム死活監視 (アラート) 独自の モニタリングシステム 対象領域 刷新前の利用ツール ヤフー全社共通の 死活監視サービス 専用ツール利用 新モニタリングシステム 刷新後の利用ツール 移行 利用者/対象者 システム運用 (ジョブ実行・ログ確認) 業務運用 (ビジネスサイドの担当者 へアラートなど) 移行 ヤフー全社共通の 死活監視サービス ジョブコントローラー/ ワークフローエンジン利用 (NiFiやAirflowなど) 各アプリケーションごと実施 移行 移行 継続 ビジネスサイドの 企画や業務運用者 開発者
  • 18. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 導入背景 Site Reliability Engineering (SRE) 18 • アプリケーション信頼性とユーザー体験を向上させる活動 • モニタリングと改善のサイクル • レイテンシ、エラー率、トラフィック、リソース(CPU、メモリー、N/Wトラフィック…) エンジニア アプリケーションモニタリング 改善
  • 19. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 導入背景 Site Reliability Engineering (SRE) 19 • SREを推進するためのモニタリング • 性能低下の検知 • エラー増加傾向の検知 • アプリケーションアップデート前後の性能比較 • 需要予測、キャパシティプランニング
  • 20. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. アジェンダ 20 • ヤフーのインターネット広告システム紹介 • 導入背景 • Micrometer/Prometheus説明 • Micrometer/Prometheus採用理由 • モニタリングシステム構成 • 苦労したエピソード・トラブル • まとめ
  • 21. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Prometheus 21 • 時系列DB + モニタリングシステム • pull方式でメトリクス収集 • 監視対象はメトリクスが記載されたテキストを返却 定期的にPull (HTTP) Prometheus 監視対象 # HELP node_cpu Seconds the cpus spent in each mode. # TYPE node_cpu counter node_cpu{cpu="cpu0",mode="iowait"} 2.94 node_cpu{cpu="cpu0",mode="system"} 937.24 node_cpu{cpu="cpu0",mode="user"} 2583.65 # … ※時系列DBは時系列データの格納・検索に特化したDB
  • 22. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Prometheus データモデル # HELP node_cpu Seconds the cpus spent in each mode. # TYPE node_cpu counter node_cpu{cpu="cpu0",mode="guest"} 0 node_cpu{cpu="cpu0",mode="iowait"} 2.94 node_cpu{cpu="cpu0",mode="system"} 937.24 node_cpu{cpu="cpu0",mode="user"} 2583.65 # … 22
  • 23. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Prometheus データモデル 23 # HELP node_cpu Seconds the cpus spent in each mode. # TYPE node_cpu counter node_cpu{cpu="cpu0",mode="guest"} 0 node_cpu{cpu="cpu0",mode="iowait"} 2.94 node_cpu{cpu="cpu0",mode="system"} 937.24 node_cpu{cpu="cpu0",mode="user"} 2583.65 # … メトリクス名 データサンプルラベル名、ラベル値
  • 24. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Prometheus 検索/可視化 24 • 収集したメトリクスはPromQL(独自クエリー)で検索/可視化 ※CPU使用率を可視化した例
  • 25. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Prometheus UI 25 • UIとしてGrafanaと連携 • ダッシュボードを作成・保存可能 Grafana Prometheusエンジニア
  • 26. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 26
  • 27. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Prometheus 注意点 27 • Prometheus単独では冗長化できない • 内蔵の時系列DBが冗長化できない • 公式ドキュメントでの冗長化手段 • 同じ設定のPrometheusをもう1台設置 • 時系列DBを他製品に切り替える ※冗長化に関する公式ドキュメント <https://prometheus.io/docs/introduction/faq/#can-prometheus-be-made-highly-available>
  • 28. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Micrometer 28 • メトリクス収集ライブラリ • Dependency追加&多少の設定追加で動作 • 様々なモニタリングシステムと連携可能(※) • Prometheus, Netflix Atlas, CloudWatch, Datadog, Graphite, Ganglia, JMX, Influx/Telegraf, New Relic, StatsD, SignalFx, and Wavefront ※micrometer公式サイトより引用 <https://micrometer.io/>
  • 29. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Micrometer 利用方法(SpringBoot1.5系) 29 Maven or Gradleの設定でdependency追加 application.yml or propertiesに設定追加 ※Prometheusと連携する場合の例 これだけでメトリクス収集が開始
  • 30. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Micrometer 利用方法(SpringBoot2系) 30 ※Prometheusと連携する場合の例 これだけでメトリクス収集が開始 Maven or Gradleの設定でdependency追加 application.yml or propertiesに設定追加
  • 31. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Micrometer 収集メトリクス 31 • デフォルトで収集されるメトリクス(一部) • Web Controller(実行回数/レスポンスタイム) • RestTemplate(実行回数/レスポンスタイム) • Spring Cloud Streamのpub/subカウント • JVM(各種メモリ使用状況、スレッド数、GC) • OSリソース(CPU) ※1 上記はソースコード修正なしで収集 ※2 その他の収集可能なメトリクスは以下を参照 <https://spring.io/blog/2018/03/16/micrometer-spring-boot-2-s-new-application-metrics-collector>
  • 32. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Micrometer カスタムメトリクス 32 • 独自メトリクスを簡単に作成可能 private final MeterRegistry registry; public SampleServiceImpl(MeterRegistry registry) { this.registry = registry; } // カスタムメトリクス( jobTypeごとに集計) public void execute(Job job) { // sample_job_total{job_type="JOB1",} 3.0 // sample_job_total{job_type="JOB2",} 5.0 Counter.builder("sample_job").tags("job_type", job.getJobType().toString()) .register(registry).increment(); }
  • 33. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. アジェンダ 33 • ヤフーのインターネット広告システム紹介 • 導入背景 • Micrometer/Prometheus説明 • Micrometer/Prometheus採用理由 • モニタリングシステム構成 • 苦労したエピソード・トラブル • まとめ
  • 34. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステムへの要件 34 • 複数のプラットフォームで導入できること • IaaS, PaaS, CaaS • 監視対象アプリケーションへの導入が容易であること • 可能であればコード修正なしで導入 • 例えばDependency or アノテーションを追加するだけ • 閾値超えアラートを利用できること • グラフで可視化できること(当たり前) • 任意の監視項目・グラフを自由に追加できること
  • 35. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Micrometer 採用の決め手 35 • アプリケーション内部でしか収集できないメトリクスを収集 • コード修正なしで基本的なメトリクスを自動で収集 • 簡単にカスタマイズできて任意のメトリクスを追加可能 • 様々なモニタリングシステムと連携 • Prometheus, Atlas, CloudWatch, Influx, New Relic … • Spring Boot公式サポートなので安心
  • 36. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Micrometer 要件に対する可否 36 ○ 複数のプラットフォームで導入できること • Javaなのでプラットフォームに左右されない ○ 監視対象アプリケーションへの導入が容易であること • コード修正不要 ー 閾値超えアラートを利用できること • Micrometerはメトリクス収集が役割なので検討範囲外 ー グラフで可視化できること(当たり前) • Micrometerはメトリクス収集が役割なので検討範囲外 ○ 任意の監視項目・グラフを自由に追加できること • カスタムメトリクスで任意項目を追加
  • 37. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Prometheus 採用の決め手 37 • 時系列DBなのでグラフ描画用途に最適 • Pull方式なのでエージェントレス • 大規模システム利用可能 • 1万ノード監視の実績 • SRE本で紹介 • コミュニティーが活発
  • 38. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Prometheus 要件に対する可否 38 △ 複数のプラットフォームで導入できること • pull方式のためPaaS監視で課題あり(※) ○ 監視対象アプリケーションへの導入が容易であること • Micrometerとの連携の場合、コード修正不要 ○ 閾値超えアラートを利用できること • アラート機能あり ○ グラフで可視化できること(当たり前) • Grafanaとの連携でダッシュボードを利用 ○ 任意の監視項目・グラフを自由に追加できること • Grafanaとの連携で任意グラフを追加 ※PaaSにデプロイされたインスタンス監視は一手間加えており詳細を後述
  • 39. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. アジェンダ 39 • ヤフーのインターネット広告システム紹介 • 導入背景 • Micrometer/Prometheus説明 • Micrometer/Prometheus採用理由 • モニタリングシステム構成 • 苦労したエピソード・トラブル • まとめ
  • 40. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム詳細 構成 40 エンジニア Grafana Prometheus Alertmanager アラート アラート (Eメール、チャットツール) 参照 データ取得 各アプリケーションのインスタンス pull ※1 PaaSにデプロイされたインスタンス監視は一手間加えており詳細を後述 ※2 CaaSは対応作業中
  • 41. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム詳細 構成 41 エンジニア Grafana Prometheus Alertmanager アラート アラート (Eメール、チャットツール) 参照 データ取得 各アプリケーションのインスタンス pull ※1 PaaSにデプロイされたインスタンス監視は一手間加えており詳細を後述 ※2 CaaSは対応作業中
  • 42. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム詳細 構成 42 エンジニア Grafana Prometheus Alertmanager アラート アラート (Eメール、チャットツール) 参照 データ取得 各アプリケーションのインスタンス pull ※1 PaaSにデプロイされたインスタンス監視は一手間加えており詳細を後述 ※2 CaaSは対応作業中
  • 43. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム詳細 構成 43 エンジニア Grafana Prometheus Alertmanager アラート アラート (Eメール、チャットツール) 参照 データ取得 各アプリケーションのインスタンス pull ※1 PaaSにデプロイされたインスタンス監視は一手間加えており詳細を後述 ※2 CaaSは対応作業中
  • 44. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム詳細 数千インスタンス監視の運用課題 44 • 数千インスタンスをPrometheusに設定する運用コストが高 • インスタンスの増減のたびに設定変更する運用が大変 # Prometheusの設定ファイル - targets: - app10.localdomain:8080 - app11.localdomain:8080 - app12.localdomain:8080 - app13.localdomain:8080 - app14.localdomain:8080 # … # 以下省略 # 数千台を並べる
  • 45. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム詳細 サービスディスカバリ(実装中) 45 • サービスディスカバリ (Netflix-Eureka) を導入 • Prometheusの監視対象を変更する運用コストの削減 Prometheus アプリケーションのインスタンス Eurekaサーバー ホスト登録 (インスタンス起動時) pull Eureka連携ツール 設定ファイル登録 (ホスト一覧) Spring Bootの eureka-client- starterを利用
  • 46. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム詳細 特徴 46 • Grafanaに共通ダッシュボードを用意 • 監視対象の追加後すぐに基本的なグラフは参照可能 • 利用者は権限の制約なしで自由に利用可能 • 利用者は任意のメトリクス/グラフを自由に追加可能 • 利用者は全アプリのグラフを参照可能
  • 47. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 47 実際の動作画面紹介
  • 48. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム構成 稼働状況 48 • 監視インスタンス数 • 3400インスタンス 監視対象を約500台追加したこと でFDのMaxOpenFilesを超過して しまい数時間、データ収集失敗
  • 49. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム構成 稼働状況 49 • ディスク使用量 • 1週間で約15GB増加
  • 50. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム構成 稼働状況 50 • 1回(※)で収集されるメトリクス(サンプル)数 • 120万+ ※1分に1回収集
  • 51. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. モニタリングシステム構成 稼働状況 51 • Prometheusサーバースペック • VM (IaaS) • CPU: 2.10GHz 8core • Memory: 16GB • Storage: 500GB (OpenStack Cinder Volume) • 必要に応じて増量
  • 52. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. アジェンダ 52 • ヤフーのインターネット広告システム紹介 • 導入背景 • Micrometer/Prometheus説明 • Micrometer/Prometheus採用理由 • モニタリングシステム構成 • 苦労したエピソード・トラブル • まとめ
  • 53. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例1: PaaS上インスタンス監視 課題 53 • インスタンス狙い撃ちでメトリクス収集できない • PaaSにデプロイしたアプリへの接続はアプリごと割り当てたFQDNで接続 • リクエストはルーターによって毎回バランス • 個別のインスタンスにはFQDNが割り当て不可能 PaaSのルーター Prometheus アプリケーションのインスタンス PaaS メトリクス収集 FQDN (app1.localdomain) リクエストごとに異なる インスタンスにバランス
  • 54. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例1: PaaS上インスタンス監視 Pushgateway方式 54 • Pushgatewayを使いPaaS内部からpush PaaSのルーター Prometheus アプリケーションのインスタンス PaaS Pushgateway push メトリクス収集 push Micrometerは設定の 追加だけで定期的にPush PushgatewayはPrometheusのサブプロダクトで一時的にメトリクスを保存するサーバー
  • 55. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例1: PaaS上インスタンス監視 Pushgateway導入後の構成 55 エンジニア Grafana Prometheus Alertmanager アラート アラート (Eメール、チャットツール) 参照 データ取得 各アプリケーションのインスタンス pull IaaS PaaS push Pushgateway
  • 56. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例1: PaaS上インスタンス監視 補足 56 Pushgatewayの多用は オススメされていないので、 引き続き、 別の方式を検討中
  • 57. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例2: メトリクスが増えすぎGC連発 発生トラブル 57 • Micrometer導入後リリースして数時間するとGC連発 • APIのレイテンシが超悪化 • サービス継続不可
  • 58. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例2: メトリクスが増えすぎGC連発 発生条件 58 • JAX-RSを使っている • Micrometerがv1.0.4以下である • Spring Bootがv2.0.2以下である • Pathパラメーターを利用しているAPIを作成している // APIの例 @GET @Path("/info/{userId} ") String userInfo(@PathParam("userId") String userId) { // ... } ※トラブル当時、Micrometer v1.0.3を利用
  • 59. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例2: メトリクスが増えすぎGC連発 原因 59 • Pathパラメーターを利用すると メトリクス(ラベル)が爆増しメモリ圧迫(※) http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/info/1",} 1.0 http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/info/1",} 0.004786132 http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/info/1",} 0.004786132 http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/info/2",} 1.0 http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/info/2",} 0.002610582 http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/info/2",} 0.002610582 # ・・・ http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/info/99999",} 1.0 http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/info/99999",} 0.003471098 http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/info/99999",} 0.003471098 # 爆増 ※Micrometerは収集したメトリクスをオンメモリで保存
  • 60. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例2: メトリクスが増えすぎGC連発 解決方法 60 • Micrometerと連携(に介入)する Apache CXFのインターセプターを自作 • Pathのパターンごとにメトリクス収集 http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/info/{userId}",} 1.0 http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/info/{userId}",} 0.004786132 http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/info/{userId}",} 0.004786132 ※JAX-RS実装はApache CXFを利用
  • 61. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例2: メトリクスが増えすぎGC連発 補足事項 61 • Spring Web MVCを使っている場合は 手を加えなくてもPathパターンごとにメトリクスを収集 • どの程度までメトリクス数(ラベル)を増やせるか検証 • 3〜5万メトリクス(ラベル)が限界の目安 • メモリ枯渇以前にpullした時のレスポンスが数秒になる # @RequestMapping("/info/{userId}") http_server_requests_seconds_count{…., uri="/info/{userId}",}
  • 62. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例2: メトリクスが増えすぎGC連発 補足事項 62 • Micrometer1.0.5からはJAX-RSの場合、 uriが全て”UNKNOWN”にされるのでメモリ枯渇はおきない • これも課題になったが自作インターセプターの利用で解決 http_server_requests_seconds_count{…, uri="UNKNOWN",} 1.0 http_server_requests_seconds_sum{…, uri="UNKNOWN",} 0.004786132 http_server_requests_seconds_max{…, uri="UNKNOWN",} 0.004786132
  • 63. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例2: メトリクスが増えすぎGC連発 補足事項 63 カスタムメトリクス作成時 メトリクス数が爆増しないように ラベル付けにも注意
  • 64. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例3: 現在対応中の性能問題 問題/発生条件 64 Prometheusで性能問題発生 • 問題 • 複雑なクエリーのレスポンスが悪化 (数分) • 複雑なクエリーを並列実行するとOOMキラー発動 • ボトルネックは、CPU (1coreが100%張りつき)、メモリ • 発生条件 • 1時系列あたりデータ数が数万になるメトリクス対して集計 • 集計コストが高いクエリーを実行 • 集計期間が長い (数週間分) ※サーバースペック:2.10GHz 8core、16GB メモリー
  • 65. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例3: 現在対応中の性能問題 高コストクエリー 65 • 1時系列あたりの集計対象メトリクス(データサンプル)数=約40000 • アプリは約1000インスタンスで構成 • アプリ全体の5分ごとの平均レスポンスタイム(累計レスポンスタイム÷実行回数)を集計 • ステータスコード、URI、methodごとに集計する sum(increase(http_server_requests_seconds_sum{job="app1"}[5m])) by (status,uri,method) / sum(increase( http_server_requests_seconds_count{job="app1"}[5m])) by (status,uri,method) ステータスコード、URI、methodごとの、5分間の累計レスポンスタイム ステータスコード、URI、methodごとの、5分間の累計実行回数
  • 66. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例3: 現在対応中の性能問題 解決方法(検証中) 66 • Prometheusの1次集計機能(RecordingRule)を利用 groups: - name: example interval: 60s # 1次集計間隔 rules: # 5分間あたりのアプリ全体の累計レスポンスタイムをstatus、uri、methodごとに一次集計する - record: job:http_server_requests_seconds_sum:app1:increase5m:sum expr: sum(increase(http_server_requests_seconds_sum{job="app1"}[5m])) by (status,uri,method) # 5分間あたりのアプリ全体の累計実行回数をstatus、uri、methodごとに一次集計する - record: job:http_server_requests_seconds_count:app1:increase5m:sum expr: sum(increase(http_server_requests_seconds_count{job="app1"}[5m])) by (status,uri,method)
  • 67. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 事例3: 現在対応中の性能問題 改善効果(検証結果) 67 • 改善効果 約45秒 約0.4秒
  • 68. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. アジェンダ 68 • ヤフーのインターネット広告システム紹介 • 導入背景 • Micrometer/Prometheus説明 • Micrometer/Prometheus採用理由 • モニタリングシステム構成 • 苦労したエピソード・トラブル • まとめ
  • 69. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 良かった点 69 • 監視対象側の導入は簡単・低コスト • 手順はDependencyの追加程度なのであっという間に利用アプリが増えた • カスタマイズ性抜群 = 属人化が解消 • アプリ開発者がカスタムメトリクスを使い必要なメトリクスを追加してくれた • アプリ開発者が見たいグラフを自由に追加してくれた
  • 70. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 苦労した点 70 • PromQL習得に学習コストがかかる • ナレッジ/ドキュメント不足で調査に苦労した • 例えばPushgatewayにpushする設定方法はソース解析
  • 71. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 本日持ち帰っていただきたいこと 71 Micrometer/Prometheusは •監視対象側の導入は簡単・低コスト •カスタマイズ性が抜群 •大規模システムにおいても難なく利用可能(※) ※大量メトリクスに対して複雑な集計をする場合は、1次集計する工夫が必要
  • 72. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 72 ご静聴ありがとうございました