SlideShare a Scribd company logo
© 2020 NTT DATA Corporation
Kubernetesでの性能解析
~なんとなく遅いからの脱却~
2020/08/26 Kubernetes Meetup Tokyo #33
NTT DATA 技術革新統括本部 デジタルテクノロジ推進室 まかせいのう
堀内 保大, Yasuhiro Horiuchi (@ka_shino_ki)
© 2020 NTT DATA Corporation 2
Agenda
1. Who am I?
2. 概要
– デモアプリと実施していること
– 性能試験のための基盤
3. Kubernetesでの性能解析の始め方
– Metrics by Prometheus
– Logging by Loki
– Tracing by Kiali / Jaeger
4. 解析事例
© 2020 NTT DATA Corporation 3
Who am I?
• 堀内 保大, Yasuhiro Horiuchi
• NTT DATA 技術革新統括本部 デジタルテクノロジ推進室
“まかせいのう”
• https://www.nttdata.com/jp/ja/lineup/macaseinou/
• 業務:性能全般幅広く
• 特に性能試験 / 性能問題解決 / Global向けプリセールス
• Kubernetes歴半年
https://kashionki38.hatenablog.com/
(Hatena)
@ka_shino_ki (Twitter)
kashinoki38 (GitHub)
© 2020 NTT DATA Corporation 4
What’s まかせいのう
・“性能はまかせろ“ → まかせいのう
・創業12年の実績から、試験方法論や監視観点、解析プロセスを整備
・性能に関して一気通貫で上流から下流まで対応
・海外グループ会社にも展開中 macaseinou!
もし何か性能でお困りごとあれば何でも!まずはご連絡ください!
https://www.nttdata.com/jp/ja/lineup/macaseinou/
© 2020 NTT DATA Corporation 5
What’s まかせいのう
https://www.nttdata.com/jp/ja/lineup/macaseinou/
く
ら
う
ど
ね
い
て
ぃ
ぶ
始
め
ま
し
た
・“性能はまかせろ“ → まかせいのう
・創業12年の実績から、試験方法論や監視観点、解析プロセスを整備
・性能に関して一気通貫で上流から下流まで対応
・海外グループ会社にも展開中 macaseinou!
もし何か性能でお困りごとあれば何でも!まずはご連絡ください!
© 2020 NTT DATA Corporation 6
本スライドの目的、モチベーション
• Kubernetesないしコンテナは性能解析かんたんじゃないですよ
ね?
• NodeやPodのリソース監視
• GCとか同時実行数などMWのリソース監視
• ログ
• Tracing
• 問題が起きたときにどうしてますか?
• CPUが高騰した際の原因分析できてますか?
• usr? sys?
• GCなの?
• APのなにかの関数なの?
• 本スライドでは上記のような性能解析の基礎をKubernetesでも実
施できる方法論を網羅的に紹介したい
© 2020 NTT DATA Corporation
実施したことの概要
© 2020 NTT DATA Corporation 8
概要
デモアプリと実施していること
Sock Shop
• https://microservices-demo.github.io/
• Weaveworksのマイクロサービスデモアプリ
• 靴下のECサイト
• 公式GitHubは古いので、K8s v1.16への対応が必要
↓
https://github.com/kashinoki38/microservi
ces-demo
実施していること
• GKE上にSock Shopをデプロイし、
Observabilityを実装→負荷試験実施→解析
© 2020 NTT DATA Corporation 9
概要
性能試験のための基盤
Test Environment
Prometheus
Logging
sock-
shop
istio-system
monitoring
jmeter
Metrics
Tracing
負荷がけ
サンプルアプリ
Grafana
© 2020 NTT DATA Corporation
Kubernetesでの
性能解析の始め方
© 2020 NTT DATA Corporation 11
性能解析の始め方→Observability
Observabilityを揃えることから始める
• Metrics → Prometheus
• 重要性:従来の監視と同概念。サービスのSLA状況、サーバがリソース状況の把握しFactベースで
真因に迫る
• 観点
• サービスに関する指標(RED)
• ソースに関する指標(USE)
• Logging→Loki
• 重要性:基本的に永続化されない。kubectl logsじゃきつい
トラシューしたいときに残っているようにしたい
• 観点
• エラーメッセージ、レスポンスコードとの関連
• 時系列でのエラー量
• Tracing→
• 重要性:MSA数珠つなぎでややこしい
E2Eで遅くても原因のサービスにたどり着けない
• 観点
• サービス間の連携グラフとレイテンシ、スループット、エラー率のマップ
• 分散トレーシング(各サービスのレイテンシの包含関係)
https://peter.bourgon.org/blog/2017
/02/21/metrics-tracing-and-
logging.html
Observabilityの3本柱
© 2020 NTT DATA Corporation 12
Metricsって何を見ないといけないのか?
© 2020 NTT DATA Corporation 13
Metricsって何を見ないといけないのか?
• サービス監視(RED)
• Rate : =Throughput, 秒間リクエスト数, 秒間PV数
• Error Rate : エラー率, 5xxとか
• Duration : =ResponseTime, %ile評価が一般的
• リソース監視(USE)http://www.brendangregg.com/usemethod.html
• Utilization: 使用率 E.g. CPU使用率
• Saturation : 飽和度, どれくらいキューに詰まっているか
E.g. ロードアベレージ
• Errors : エラーイベントの数
© 2020 NTT DATA Corporation 14
Metricsって何を見ないといけないのか?
• サービス監視(RED)
• Rate : =Throughput, 秒間リクエスト数, 秒間PV数
• Error Rate : エラー率, 5xxとか
• Duration : =ResponseTime, %ile評価が一般的
• リソース監視(USE)http://www.brendangregg.com/usemethod.html
• Utilization: 使用率 E.g. CPU使用率
• Saturation : 飽和度, どれくらいキューに詰まっているか
E.g. ロードアベレージ
• Errors : エラーイベントの数
後から情報取るのは困難、、
コマンドだけだと対象が多すぎて全部見れない、、
© 2020 NTT DATA Corporation 15
Metricsって何を見ないといけないのか?
• サービス監視(RED)
• Rate : =Throughput, 秒間リクエスト数, 秒間PV数
• Error Rate : エラー率, 5xxとか
• Duration : =ResponseTime, %ile評価が一般的
• リソース監視(USE)http://www.brendangregg.com/usemethod.html
• Utilization: 使用率 E.g. CPU使用率
• Saturation : 飽和度, どれくらいキューに詰まっているか
E.g. ロードアベレージ
• Errors : エラーイベントの数
メトリクス監視はPrometheusででき
る
後から情報取るのは困難、、
コマンドだけだと対象が多すぎて全部見れない、、
© 2020 NTT DATA Corporation 16
Metrics
Prometheusで最低限監視しておきたい項目
詳しくはBlogまで
【暫定版】 Kubernetesの性能監視で必要なメトリクス一覧とPrometheusでのHowTo
https://kashionki38.hatenablog.com/entry/2020/08/06/011420
種別 監視対象 メトリクス How
サービス監視
RED
Jmeter
クライアント側
Throughput
ResponseTime
Error%
Jmeterのメトリクスを収集
BackendListner->InfluxDB->Grafana
システム側
Throughput
ResponseTime
Error%
Istioのテレメトリ機能で各serviceのメトリクスを収集
リソース監視
USE
Node
CPU/Memory/NW/D
k使用量
NodeExporterをDaemonSetとして配置し収集
ProcessExporterをDaemonSetとして配置
Pod/Containe
CPU/Memory/NW/D
k使用量
cAdvisorにて収集
(Kubeletバイナリに統合されているのでscrapeの設定のみで
MW AP
スレッド数
GC
言語のPrometheusクライアントライブラリ
DB
QPS
クエリレイテンシ
セッション数
待機イベント
各DBのExporterをDB Podにサブコンテナとして配置
© 2020 NTT DATA Corporation 17
Metrics
Prometheusで最低限監視しておきたい項目
種別 監視対象 メトリクス How
サービス監視
RED
Jmeter
クライアント側
Throughput
ResponseTime
Error%
Jmeterのメトリクスを収集
BackendListner->InfluxDB->Grafana
© 2020 NTT DATA Corporation 18
Metrics
Prometheusで最低限監視しておきたい項目
▼Jmeter Dashboard
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/jmeter-metrics-
dashboard.json
Throughput
Jmeterスレッド
数
Error数
各URLごとの
Throughput
各URLごとの
Error詳細
種別 監視対象 メトリクス How
サービス監視
RED
Jmeter
クライアント側
Throughput
ResponseTime
Error%
Jmeterのメトリクスを収集
BackendListner->InfluxDB->Grafana
© 2020 NTT DATA Corporation 19
Metrics
Prometheusで最低限監視しておきたい項目
各URLごとの
Response Time
▼Jmeter Dashboard
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/jmeter-metrics-
dashboard.json
種別 監視対象 メトリクス How
サービス監視
RED
Jmeter
クライアント側
Throughput
ResponseTime
Error%
Jmeterのメトリクスを収集
BackendListner->InfluxDB->Grafana
© 2020 NTT DATA Corporation 20
Metrics
Prometheusで最低限監視しておきたい項目
各Workloadごと
のResponse
Time
各Workloadごと
のThroughput
各Workloadご
とのSuccess%
各Workloadへの
Incoming
Throughput
各Workloadへの
Incoming
Success%
各Workloadからの
Outgoing
Throughput
各Workloadからの
Outgoing
Success%
各Workloadからの
Outgoing Response
Time
種別 監視対象 メトリクス How
サービス監視
RED
システム側
Throughput
ResponseTime
Error%
Istioのテレメトリ機能で各serviceのメトリクスを収集
▼Istio-workloadダッシュボード
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/Istio-Workload-
Dashboard.json
© 2020 NTT DATA Corporation 21
Metrics
Prometheusで最低限監視しておきたい項目
各NodeごとのLoad
Average
各NodeごとのCPU%
種別 監視対象 メトリクス How
リソース監視
USE
Node
CPU/Memory/NW/D
k使用量
NodeExporterをDaemonSetとして配置し収集
ProcessExporterをDaemonSetとして配置
Node Availability
Node稼働状況
unschedulable Node数
pods
Pods Allocatable
Pods Capacity
Pods Allocation
CPU
CPU使用率
CPU使用率コアごと
ロードアベレージ
CPU Core Capacity
CPU Core Limits
CPU Core Requests
CPU Core Allocatable
メモリ
メモリ使用量
スワップイン量
スワップアウト量
スワップ使用率
スワップサイズ
Memory Capacity
Memory Limits
Memory Requests
Memory Allocatable
ディスク
ディスクビジー率
ディスクI/O待ち数
ディスクI/O待ち時間
ディスク読込み量
ディスク書込み量
ディスク読込み回数
ディスク書込み回数
パーティション使用率
パーティションサイズ
inode総数/使用率
ネットワーク
送信トラフィック量
受信トラフィック量
ポート/Socket
Drops
Errs
ファイルディスクリプタ
プロセス
プロセス数
プロセス数(ゾンビ)
▼Node Exporterダッシュボード
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/node-exporter-dashboard.json
© 2020 NTT DATA Corporation 22
Metrics
Prometheusで最低限監視しておきたい項目
特定NodeのProcess数
特定NodeのProcessごとの時
間
種別 監視対象 メトリクス How
リソース監視
USE
Node
CPU/Memory/NW/D
k使用量
NodeExporterをDaemonSetとして配置し収集
ProcessExporterをDaemonSetとして配置
▼Process Exporterダッシュボード
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/process-
exporter-dashboard.json
Node Availability
Node稼働状況
unschedulable Node数
pods
Pods Allocatable
Pods Capacity
Pods Allocation
CPU
CPU使用率
CPU使用率コアごと
ロードアベレージ
CPU Core Capacity
CPU Core Limits
CPU Core Requests
CPU Core Allocatable
メモリ
メモリ使用量
スワップイン量
スワップアウト量
スワップ使用率
スワップサイズ
Memory Capacity
Memory Limits
Memory Requests
Memory Allocatable
ディスク
ディスクビジー率
ディスクI/O待ち数
ディスクI/O待ち時間
ディスク読込み量
ディスク書込み量
ディスク読込み回数
ディスク書込み回数
パーティション使用率
パーティションサイズ
inode総数/使用率
ネットワーク
送信トラフィック量
受信トラフィック量
ポート/Socket
Drops
Errs
ファイルディスクリプタ
プロセス
プロセス数
プロセス数(ゾンビ)
© 2020 NTT DATA Corporation 23
Metrics
Prometheusで最低限監視しておきたい項目
各PodごとのCPU使用時間
各PodのCPU Throttle
種別 監視対象 メトリクス How
リソース監視
USE
Pod/Containe
CPU/Memory/NW/D
k使用量
cAdvisorにて収集
(Kubeletバイナリに統合されているのでscrapeの設定のみで
OK)
Pods Availability
Available Pods数
Pods Restarts
Pods status
Running / Pending /
Failed / Unknown
Container
Restarts
Errors
Terminated Reason
Waiting Reason
Restart Reason
Containers status
Ready / Terminated /
Waiting / Running
CPU
CPU使用率
ロードアベレージ
Throttle
CPU Core Limits
CPU Core Requests
メモリ
メモリ使用量
スワップイン量
スワップアウト量
スワップ使用量
スワップサイズ
Memory Limits
Memory Requests
ディスク
ディスクビジー率
ディスクI/O待ち数
ディスクI/O待ち時間
ディスク読込み量
ディスク書込み量
ディスク読込み回数
ディスク書込み回数
ネットワーク
送信トラフィック量
受信トラフィック量
ポート/Socket
Drops
Errs
ファイルディスクリプタ
▼Pod / Containerダッシュボード
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/pod_detail-dashboard.json
© 2020 NTT DATA Corporation 24
Metrics
Prometheusで最低限監視しておきたい項目
特定Podのコンテナごとの
CPU時間、Requests、
Limits
▼Pod / Containerダッシュボード
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/pod_detail-dashboard.json
Pods Availability
Available Pods数
Pods Restarts
Pods status
Running / Pending /
Failed / Unknown
Container
Restarts
Errors
Terminated Reason
Waiting Reason
Restart Reason
Containers status
Ready / Terminated /
Waiting / Running
CPU
CPU使用率
ロードアベレージ
Throttle
CPU Core Limits
CPU Core Requests
メモリ
メモリ使用量
スワップイン量
スワップアウト量
スワップ使用量
スワップサイズ
Memory Limits
Memory Requests
ディスク
ディスクビジー率
ディスクI/O待ち数
ディスクI/O待ち時間
ディスク読込み量
ディスク書込み量
ディスク読込み回数
ディスク書込み回数
ネットワーク
送信トラフィック量
受信トラフィック量
ポート/Socket
Drops
Errs
ファイルディスクリプタ
種別 監視対象 メトリクス How
リソース監視
USE
Pod/Containe
CPU/Memory/NW/D
k使用量
cAdvisorにて収集
(Kubeletバイナリに統合されているのでscrapeの設定のみで
OK)
© 2020 NTT DATA Corporation 25
Metrics
Prometheusで最低限監視しておきたい項目
特定Node上のPodのCPU時間
▼Pod / Containerダッシュボード
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/pod_detail-dashboard.json
Pods Availability
Available Pods数
Pods Restarts
Pods status
Running / Pending /
Failed / Unknown
Container
Restarts
Errors
Terminated Reason
Waiting Reason
Restart Reason
Containers status
Ready / Terminated /
Waiting / Running
CPU
CPU使用率
ロードアベレージ
Throttle
CPU Core Limits
CPU Core Requests
メモリ
メモリ使用量
スワップイン量
スワップアウト量
スワップ使用量
スワップサイズ
Memory Limits
Memory Requests
ディスク
ディスクビジー率
ディスクI/O待ち数
ディスクI/O待ち時間
ディスク読込み量
ディスク書込み量
ディスク読込み回数
ディスク書込み回数
ネットワーク
送信トラフィック量
受信トラフィック量
ポート/Socket
Drops
Errs
ファイルディスクリプタ
種別 監視対象 メトリクス How
リソース監視
USE
Pod/Containe
CPU/Memory/NW/D
k使用量
cAdvisorにて収集
(Kubeletバイナリに統合されているのでscrapeの設定のみで
OK)
© 2020 NTT DATA Corporation 26
Metrics
Prometheusで最低限監視しておきたい項目
特定Node上のPodのCPU時間
▼Pod / Containerダッシュボード
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/pod_detail-dashboard.json
Pods Availability
Available Pods数
Pods Restarts
Pods status
Running / Pending /
Failed / Unknown
Container
Restarts
Errors
Terminated Reason
Waiting Reason
Restart Reason
Containers status
Ready / Terminated /
Waiting / Running
CPU
CPU使用率
ロードアベレージ
Throttle
CPU Core Limits
CPU Core Requests
メモリ
メモリ使用量
スワップイン量
スワップアウト量
スワップ使用量
スワップサイズ
Memory Limits
Memory Requests
ディスク
ディスクビジー率
ディスクI/O待ち数
ディスクI/O待ち時間
ディスク読込み量
ディスク書込み量
ディスク読込み回数
ディスク書込み回数
ネットワーク
送信トラフィック量
受信トラフィック量
ポート/Socket
Drops
Errs
ファイルディスクリプタ
種別 監視対象 メトリクス How
リソース監視
USE
Pod/Containe
CPU/Memory/NW/D
k使用量
cAdvisorにて収集
(Kubeletバイナリに統合されているのでscrapeの設定のみで
OK)
© 2020 NTT DATA Corporation 27
Metrics
Prometheusで最低限監視しておきたい項目
種別 監視対象 メトリクス How
リソース監視
USE
AP
言語 : Java
スレッド数
GC
・SpringBoot2系以降から実装の、Micrometer Actuator
使用
(pom.xml変更のみで良いはず)
・jmx exporter
・Prometheus java client library
ヒープメモリ
全体ヒープメモリ使用量
Young
Old
Metaspace
Code Cache
GC
頻度(Full/Young)
時間(Full/Young)
スレッド数 スレッド数
空きスレッド数 空きスレッド数
スレッドプール使用率 スレッドプール使用率
コネクションプール使用
数
コネクションプール使用数
▼jmxダッシュボード
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/jmx-exporter-dashboard.json
© 2020 NTT DATA Corporation 28
Metrics
Prometheusで最低限監視しておきたい項目
種別 監視対象 メトリクス How
リソース監視
USE
AP
言語 :
スレッド数
GC
golangクライアントライブラリのpromhttpを使用
https://github.com/prometheus/client_golang/tr
master/prometheus/promhttp
▼goダッシュボード
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/go-process-dashboard.json
Process Memory
仮想メモリサイズ / 常駐メモリサ
イズ
Memory Stats heap / stack / 実使用量
open fds ファイルディスクリプタ数
Goroutines goroutine呼び出し数
GC
頻度(Full/Young)
時間(Full/Young)
© 2020 NTT DATA Corporation 29
Metrics
Prometheusで最低限監視しておきたい項目
種別 監視対象 メトリクス How
リソース監視
USE
AP
言語 :
スレッド数
GC
nodejsクライアントライブラリのprom-clientを使用
https://github.com/siimon/prom-client
▼Nodejsダッシュボード
https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/nodejs-dashboard.json
Process Memory プロセス使用メモリ
Heap Heapサイズ / Heap使用量
Active Active Handlers数
Event Loop Lag Event Loopのラグ
GC
頻度(minor / incremental / major)
時間(minor / incremental / major)
© 2020 NTT DATA Corporation 30
Loggingって何を見ないといけないの
か?
© 2020 NTT DATA Corporation 31
Logging Lokiの紹介
Loggingの課題
• 大量のログを軽量に扱いたい(grepのような使い心地)
• メトリクス、トレーシングとの関連性を持たせたい(コンテキストスイッチを減らしたい)
→今回はLokiを採用
Lokiでできること
• Grafanaでのログ検索
• コンテキスト検索(前後の検索)
• grepライクな検索
• Grafanaでのログ時系列可視化
PromQLライクな可視化
• tracingとの連携(Grafanaへのアドオン)
詳しくは、https://de.slideshare.net/nttdata-tech/grafana-loki-
kubernetesloggingnttdata
Grafana
Promtail
Lokiのログ集約フロー
© 2020 NTT DATA Corporation 32
Logging 解析観点
観点
• エラーメッセージ
• 時系列でのエラー量
grepライクな検索
エラーメッセージ
Label
(どのPod/Container/app
etc)
前後のログ行
エラー検索(sock-shop namespaceのエラー)
時系列でのエラー量可視化
(Podごとのエラー量)
PromQLライクなクエリ
エラー量の可視化
任意のラベルで集計可
© 2020 NTT DATA Corporation 33
Tracingって何を見ないといけないの
か?
© 2020 NTT DATA Corporation 34
Tracing 依存関係可視化
Tracingでやりたいこと1
• サービス間の呼び出し依存関係
• 各呼び出しのResponse Time、スループット、エ
ラー率
→Kialiで可能
でできること
• サービス感の依存関係グラフ
• 依存関係に重ねて、Response Time、スルー
プット、エラー率
が見える
• 実態のデータはenvoyのPrometheusメトリクス
から取得
© 2020 NTT DATA Corporation 35
Tracing 分散トレーシング
Tracingでやりたいこと2
• 分散トレーシング(各サービスのレイテンシの包含関係)
でできること
• Spanによる表示で後続のサービスが占める時間を可視化できる
© 2020 NTT DATA Corporation 36
Observability
Test Environment
Prometheus
Logging
sock-
shop
istio-system
monitoring
jmeter
Metrics
Tracing
負荷がけ
サンプルアプリ
Grafana
© 2020 NTT DATA Corporation 37
余談ですが、
性能試験ってやってますか?
© 2020 NTT DATA Corporation 38
余談ですが、
性能試験ってやってますか?
A) 本番リリース直前に毎回やってる(自動化最強)
B) 重要なリリース前のみやってる+カナリアリリースして問題あったら
切り戻し
C) ほぼやってない(祈る)
© 2020 NTT DATA Corporation 39
余談ですが、
性能試験ってやってますか?
A) 本番リリース直前に毎回やってる(自動化最強)
B) 重要なリリース前のみやってる+カナリアリリースして問題あったら
切り戻し
C) ほぼやってない(祈る)
DevPerfOps (DevOps内での性能担保方法論)検討
中…
ケーススタディ教えてください!
ぜひ議論したいです。https://kashionki38.hatenablog.com/
(Hatena)
@ka_shino_ki (Twitter)
kashinoki38 (GitHub)
© 2020 NTT DATA Corporation
解析事例
© 2020 NTT DATA Corporation 41
解析事例
事例 何を見るか 確認観点
Nodeのリソース枯渇 Prometheu
• Nodeのリソース
• リソース枯渇要因はPodなのか、その他プロセスなのか
コンテナのリソース
Limits抵触
Prometheu • コンテナのリソース(CPU/Memory)とそのLimits
Javaのヒープ/GCまわり Prometheu
• ヒープの設定サイズとContainerのメモリLimits
• GCの頻度、時間
APメソッドプロファイリ
ング
VisualVM
• CPUを使っているメソッド
• 処理時間を要しているメソッド
後続サービスの遅延
Kiali,
Jaeger
• Microserviceのどの部分で遅延/エラーが起きているかを俯瞰的
見る
• 分散トレーシングで各サービスの包括関係、トレースの具体情報を
確認する
アプリケーションエラー
Prometheu
Loki
• HTTPエラーが発生しているサービスやエラーコードをLokiで検索
し、具体的エラーメッセージの確認
• エラーの頻度等の時系列可視化
© 2020 NTT DATA Corporation 42
1. Nodeのリソース枯渇
1. Node Exporterのリソースグラフを確認
• この場合、とあるNodeのCPU使用率を確認すると1台の使用率がサチっている
何がCPUを食っているのか
NodeのCPU使用率
© 2020 NTT DATA Corporation 43
1. Nodeのリソース枯渇
2. 何がNodeのリソースを食っているのか
A) 複数のPodの積み重ねでNodeのCPUを食っているケース
→PodリソースグラフをNodeで絞ってPodのリソースを積み上げグラフで確認
特定Node内の全PodのCPU使用率積み上げ
© 2020 NTT DATA Corporation 44
1. Nodeのリソース枯渇
2. 何がNodeのリソースを食っているのか
B) 複数のPodの積み重ねで見てもNodeのCPU使用量に乖離がある
=Node上のコンテナ以外から使用されるプロセスが食っているケース
→Process exporterの各Node積み上げで確認する
特定Node内の全ProcessのCPU使用率積み上
げ
© 2020 NTT DATA Corporation 45
2. コンテナのリソースLimits抵触
1. Podのリソースグラフにて対象namespce上の全コンテナのリ
ソース使用量とLimits, Requetsを眺める
• 黄色→Limits、水色→Usage
• CPU, Memory
各コンテナのCPU使用量、Limits、
Requests
© 2020 NTT DATA Corporation 46
2. コンテナのリソースLimits抵触
2. Limitsにあたってしまってスケールできていないコンテナがいない
か
A) この場合はCPUのLimitsにあたってfront-endコンテナのCPUが枯渇してい
るのがわかる
front-end pod内のコンテナのCPU使用量、Limits、
Requests
© 2020 NTT DATA Corporation 47
2. コンテナのリソースLimits抵触
2. Limitsにあたってしまってスケールできていないコンテナがいない
か
B) MemoryのLimitsに当たる場合はOOM KilledやRestartsを繰り返している
ことが多い
ContainerのRestart回数
© 2020 NTT DATA Corporation 48
3. MWリソースの枯渇
すみません、go, nodejsはまた今度
• Javaで見るべきリソース
• ヒープ/GC
• Thread Pool
• Connection Pool
→※Defaultで取れないので考慮必要
JMX Dashboard
© 2020 NTT DATA Corporation 49
3. MWリソースの枯渇
 ヒープ/GCでよくある問題
1. GC頻発による遅延やCPU枯渇
• jmx dashboardでGC種別ごとの頻度、時間を確認可能
2. ContainerのメモリLimitsとの不整合によるOOME → コンテナ特有
• jdk8u191未満だと明示的にヒープサイズを設定しない場合、Nodeのメモリサイズの1/4でヒープが設定されてし
まう
→PodのLimitsを超えて設定されることがあり、ヒープが無邪気に拡大するとOOM Killedされる
• jdk8u131以降なら以下オプションでPodのMemoryLimitsを認識した設定になる
• -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
• 明示的に指定する場合は、ヒープだけじゃなくMetaspaceなどの非ヒープにも注意
• Metaspaceが拡大してもOOM Killed発生する
→これでRestartsを繰り返してる場合、spring bootから情報を取ってるjmx dashboard
では事象が追えないかった。GCログも出しておくほうがよい
-verbose:gc
© 2020 NTT DATA Corporation 50
3. MWリソースの枯渇
GCログも標準出力しておくようにすると、どこまでヒープ拡張しようとしていたのか把握可能
• 下記の例だと232MBまでヒープが拡張しており、Metaspaceと合わせるとLimitsに対して
拡張しすぎていることが把握可能
標準出力されたGCログ GCログの1分ごとの出力回数
© 2020 NTT DATA Corporation 51
4. APメソッドプロファイリング
すみません、javaのみで(go, nodejsはまた今度!)
• 従来法:VisualVM
• jmxremoteのOption設定
• kubectl portforward
• VisualVMで接続
- env:
- name: JAVA_OPTS
value: -Xms64m -Xmx128m -XX:PermSize=32m -
XX:MaxPermSize=64m -XX:+UseG1GC
-Djava.security.egd=file:/dev/urandom
-Dcom.sun.management.jmxremote.port=3333
-Dcom.sun.management.jmxremote.ssl=false
-
Dcom.sun.management.jmxremote.authenticate=f
alse
-
Dcom.sun.management.jmxremote.rmi.port=3333
-Djava.rmi.server.hostname=127.0.0.1
これ重要です。
Portforwardでつなぎに行
くのでlocalhost
jmx remote接続用のJVM Optionの追加
© 2020 NTT DATA Corporation 52
4. APメソッドプロファイリング
つながると以下のような情報が容易に取れる
GCやThreadなどのJVMリソース情報
CPUサンプリング
サンプリング結果のSnapshot
© 2020 NTT DATA Corporation 53
4. APメソッドプロファイリング
例えばOrdersのJavaAPにつないでみると、
• 最も時間がかかっているのはnewOrder()メソッド (あくまで比較的という話)
• newOrder()から呼ばれるFutureTask.get()
• 他サービスへのREST呼び出しの非同期処理の結果取得
© 2020 NTT DATA Corporation 54
4. APメソッドプロファイリング
分散トレーシングでみても
確かにordersの他サービス呼び出しに時間がかかっているように見える
© 2020 NTT DATA Corporation 55
5. 後続サービスの遅延
1. まずはKialiを眺めて、依存関係上にResponseTimeをマッピングす
る
• エラーは色分けされて出るのでエラー有無も把握可能
• この場合、front-end→catalogue部分で遅延
• サービスが多くなればなるほど重要。いきなりリソース解析せずこれでREDベー
スであたりをつける
© 2020 NTT DATA Corporation 56
5. 後続サービスの遅延
2. Jaegerでより詳細にトレースサンプルを確認する
• この場合、catalogue/size?tagsの呼び出しが遅延しているのがわかる
• あくまでサンプリングなので、KialiやPrometheusの統計的なデータと合わせて確認する
© 2020 NTT DATA Corporation 57
6. アプリケーションのエラー
1. Istio workloadダッシュボードでHTTPコードベースでエラー有無
確認
• この場合、front-end→ordersでordersが406を返していることがわかる
© 2020 NTT DATA Corporation 58
6. アプリケーションのエラー
2. Lokiにて、当該時間のエラーの確認
• front-endが受け取ったエラー
• 406としてPayment declined : amount exceeds 100.00 とあり、
APで設定しているOrder可能回数に抵触していることがわかった
© 2020 NTT DATA Corporation 59
6. アプリケーションのエラー
3. Lokiにて、当該時間のエラーの可視化
• 例えば、1分間に平均どれくらいエラーが発生しているのかが可視化できる
© 2020 NTT DATA Corporation 60
まとめ
© 2020 NTT DATA Corporation 61
まとめ
Sock Shopをベースに性能解析を一通り試してみた
• 環境:作業途中のものは随時ここに
→https://github.com/kashinoki38/microservices-demo/tree/master/deploy/kubernetes
• Metrics by Prometheus:各種取り揃えるのは大変。揃うと便利で強力。
• Prometheusのメトリクスやダッシュボードなどは以下ブログ
• 【暫定版】 Kubernetesの性能監視で必要なメトリクス一覧とPrometheusでのHowTo
• https://kashionki38.hatenablog.com/entry/2020/08/06/011420
• Logging by Loki:Garafanaで見れるの便利。検索や可視化がPromQL+Grep
ライク
• Tracing by
• Kiali:依存関係と遅延/エラー発生箇所の特定に便利
• Jaeger:サービス同士の処理時間の包含関係の解析に便利
• Profilingはまだまだ余地があるので調査していきたい
© 2020 NTT DATA Corporation 62
まとめ
Sock Shopをベースに性能解析を一通り試してみた
• 環境:作業途中のものは随時ここに
→https://github.com/kashinoki38/microservices-demo/tree/master/deploy/kubernetes
• Metrics by Prometheus:各種取り揃えるのは大変。揃うと便利で強力。
• Prometheusのメトリクスやダッシュボードなどは以下ブログ
• 【暫定版】 Kubernetesの性能監視で必要なメトリクス一覧とPrometheusでのHowTo
• https://kashionki38.hatenablog.com/entry/2020/08/06/011420
• Logging by Loki:Garafanaで見れるの便利。検索や可視化がPromQL+Grep
ライク
• Tracing by
• Kiali:依存関係と遅延/エラー発生箇所の特定に便利
• Jaeger:サービス同士の処理時間の包含関係の解析に便利
• Profilingはまだまだ余地があるので調査していきたい
© 2020 NTT DATA Corporation

More Related Content

What's hot

分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
ksk_ha
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
NTT DATA Technology & Innovation
 
Raft
RaftRaft
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
 
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
NTT DATA Technology & Innovation
 
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介  #streamctjpSpring Cloud Data Flow の紹介  #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
Yahoo!デベロッパーネットワーク
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
 

What's hot (20)

分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
Raft
RaftRaft
Raft
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
 
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介  #streamctjpSpring Cloud Data Flow の紹介  #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
Paxos
PaxosPaxos
Paxos
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 

Similar to Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)

実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
NTT DATA Technology & Innovation
 
1.コース概要
1.コース概要1.コース概要
1.コース概要
openrtm
 
Nedo講座・rtmセミナー
Nedo講座・rtmセミナーNedo講座・rtmセミナー
Nedo講座・rtmセミナー
openrtm
 
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
LINE Corporation
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
NTT DATA Technology & Innovation
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Yahoo!デベロッパーネットワーク
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
勇 黒沢
 
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1
openrtm
 
Starting Reactive Systems with Lerna #reactive_shinjuku
Starting Reactive Systems with Lerna #reactive_shinjukuStarting Reactive Systems with Lerna #reactive_shinjuku
Starting Reactive Systems with Lerna #reactive_shinjuku
TIS Inc.
 
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
Hinemos
 
130522 01
130522 01130522 01
130522 01
openrtm
 
ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部
openrtm
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
OpenStack Vancouver Summit Report presented at nttgroup meeting in JapaneseOpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
Toshikazu Ichikawa
 
loggregator update
loggregator updateloggregator update
loggregator update
Ken Ojiri
 
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料) ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
NTT DATA Technology & Innovation
 
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
NTT DATA Technology & Innovation
 
200520 ユビキタスロボティクス特論
200520 ユビキタスロボティクス特論200520 ユビキタスロボティクス特論
200520 ユビキタスロボティクス特論
NoriakiAndo
 
ニフクラでも できる!Kubernetes。
ニフクラでも できる!Kubernetes。ニフクラでも できる!Kubernetes。
ニフクラでも できる!Kubernetes。
富士通クラウドテクノロジーズ株式会社
 

Similar to Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料) (20)

実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
 
1.コース概要
1.コース概要1.コース概要
1.コース概要
 
Nedo講座・rtmセミナー
Nedo講座・rtmセミナーNedo講座・rtmセミナー
Nedo講座・rtmセミナー
 
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1
 
Starting Reactive Systems with Lerna #reactive_shinjuku
Starting Reactive Systems with Lerna #reactive_shinjukuStarting Reactive Systems with Lerna #reactive_shinjuku
Starting Reactive Systems with Lerna #reactive_shinjuku
 
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
 
130522 01
130522 01130522 01
130522 01
 
ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
OpenStack Vancouver Summit Report presented at nttgroup meeting in JapaneseOpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
 
loggregator update
loggregator updateloggregator update
loggregator update
 
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料) ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
 
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
 
200520 ユビキタスロボティクス特論
200520 ユビキタスロボティクス特論200520 ユビキタスロボティクス特論
200520 ユビキタスロボティクス特論
 
ニフクラでも できる!Kubernetes。
ニフクラでも できる!Kubernetes。ニフクラでも できる!Kubernetes。
ニフクラでも できる!Kubernetes。
 

More from NTT DATA Technology & Innovation

pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
NTT DATA Technology & Innovation
 
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
NTT DATA Technology & Innovation
 
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
NTT DATA Technology & Innovation
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
 
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
 
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 

Recently uploaded

LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログLoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
CRI Japan, Inc.
 
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
Toru Tamaki
 
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
chisatotakane
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo Lab
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
Natsutani Minoru
 
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
shogotaguchi
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo Lab
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo Lab
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
Sony - Neural Network Libraries
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
Toru Tamaki
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
たけおか しょうぞう
 

Recently uploaded (12)

LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログLoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
 
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
 
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
 
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
 

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)

  • 1. © 2020 NTT DATA Corporation Kubernetesでの性能解析 ~なんとなく遅いからの脱却~ 2020/08/26 Kubernetes Meetup Tokyo #33 NTT DATA 技術革新統括本部 デジタルテクノロジ推進室 まかせいのう 堀内 保大, Yasuhiro Horiuchi (@ka_shino_ki)
  • 2. © 2020 NTT DATA Corporation 2 Agenda 1. Who am I? 2. 概要 – デモアプリと実施していること – 性能試験のための基盤 3. Kubernetesでの性能解析の始め方 – Metrics by Prometheus – Logging by Loki – Tracing by Kiali / Jaeger 4. 解析事例
  • 3. © 2020 NTT DATA Corporation 3 Who am I? • 堀内 保大, Yasuhiro Horiuchi • NTT DATA 技術革新統括本部 デジタルテクノロジ推進室 “まかせいのう” • https://www.nttdata.com/jp/ja/lineup/macaseinou/ • 業務:性能全般幅広く • 特に性能試験 / 性能問題解決 / Global向けプリセールス • Kubernetes歴半年 https://kashionki38.hatenablog.com/ (Hatena) @ka_shino_ki (Twitter) kashinoki38 (GitHub)
  • 4. © 2020 NTT DATA Corporation 4 What’s まかせいのう ・“性能はまかせろ“ → まかせいのう ・創業12年の実績から、試験方法論や監視観点、解析プロセスを整備 ・性能に関して一気通貫で上流から下流まで対応 ・海外グループ会社にも展開中 macaseinou! もし何か性能でお困りごとあれば何でも!まずはご連絡ください! https://www.nttdata.com/jp/ja/lineup/macaseinou/
  • 5. © 2020 NTT DATA Corporation 5 What’s まかせいのう https://www.nttdata.com/jp/ja/lineup/macaseinou/ く ら う ど ね い て ぃ ぶ 始 め ま し た ・“性能はまかせろ“ → まかせいのう ・創業12年の実績から、試験方法論や監視観点、解析プロセスを整備 ・性能に関して一気通貫で上流から下流まで対応 ・海外グループ会社にも展開中 macaseinou! もし何か性能でお困りごとあれば何でも!まずはご連絡ください!
  • 6. © 2020 NTT DATA Corporation 6 本スライドの目的、モチベーション • Kubernetesないしコンテナは性能解析かんたんじゃないですよ ね? • NodeやPodのリソース監視 • GCとか同時実行数などMWのリソース監視 • ログ • Tracing • 問題が起きたときにどうしてますか? • CPUが高騰した際の原因分析できてますか? • usr? sys? • GCなの? • APのなにかの関数なの? • 本スライドでは上記のような性能解析の基礎をKubernetesでも実 施できる方法論を網羅的に紹介したい
  • 7. © 2020 NTT DATA Corporation 実施したことの概要
  • 8. © 2020 NTT DATA Corporation 8 概要 デモアプリと実施していること Sock Shop • https://microservices-demo.github.io/ • Weaveworksのマイクロサービスデモアプリ • 靴下のECサイト • 公式GitHubは古いので、K8s v1.16への対応が必要 ↓ https://github.com/kashinoki38/microservi ces-demo 実施していること • GKE上にSock Shopをデプロイし、 Observabilityを実装→負荷試験実施→解析
  • 9. © 2020 NTT DATA Corporation 9 概要 性能試験のための基盤 Test Environment Prometheus Logging sock- shop istio-system monitoring jmeter Metrics Tracing 負荷がけ サンプルアプリ Grafana
  • 10. © 2020 NTT DATA Corporation Kubernetesでの 性能解析の始め方
  • 11. © 2020 NTT DATA Corporation 11 性能解析の始め方→Observability Observabilityを揃えることから始める • Metrics → Prometheus • 重要性:従来の監視と同概念。サービスのSLA状況、サーバがリソース状況の把握しFactベースで 真因に迫る • 観点 • サービスに関する指標(RED) • ソースに関する指標(USE) • Logging→Loki • 重要性:基本的に永続化されない。kubectl logsじゃきつい トラシューしたいときに残っているようにしたい • 観点 • エラーメッセージ、レスポンスコードとの関連 • 時系列でのエラー量 • Tracing→ • 重要性:MSA数珠つなぎでややこしい E2Eで遅くても原因のサービスにたどり着けない • 観点 • サービス間の連携グラフとレイテンシ、スループット、エラー率のマップ • 分散トレーシング(各サービスのレイテンシの包含関係) https://peter.bourgon.org/blog/2017 /02/21/metrics-tracing-and- logging.html Observabilityの3本柱
  • 12. © 2020 NTT DATA Corporation 12 Metricsって何を見ないといけないのか?
  • 13. © 2020 NTT DATA Corporation 13 Metricsって何を見ないといけないのか? • サービス監視(RED) • Rate : =Throughput, 秒間リクエスト数, 秒間PV数 • Error Rate : エラー率, 5xxとか • Duration : =ResponseTime, %ile評価が一般的 • リソース監視(USE)http://www.brendangregg.com/usemethod.html • Utilization: 使用率 E.g. CPU使用率 • Saturation : 飽和度, どれくらいキューに詰まっているか E.g. ロードアベレージ • Errors : エラーイベントの数
  • 14. © 2020 NTT DATA Corporation 14 Metricsって何を見ないといけないのか? • サービス監視(RED) • Rate : =Throughput, 秒間リクエスト数, 秒間PV数 • Error Rate : エラー率, 5xxとか • Duration : =ResponseTime, %ile評価が一般的 • リソース監視(USE)http://www.brendangregg.com/usemethod.html • Utilization: 使用率 E.g. CPU使用率 • Saturation : 飽和度, どれくらいキューに詰まっているか E.g. ロードアベレージ • Errors : エラーイベントの数 後から情報取るのは困難、、 コマンドだけだと対象が多すぎて全部見れない、、
  • 15. © 2020 NTT DATA Corporation 15 Metricsって何を見ないといけないのか? • サービス監視(RED) • Rate : =Throughput, 秒間リクエスト数, 秒間PV数 • Error Rate : エラー率, 5xxとか • Duration : =ResponseTime, %ile評価が一般的 • リソース監視(USE)http://www.brendangregg.com/usemethod.html • Utilization: 使用率 E.g. CPU使用率 • Saturation : 飽和度, どれくらいキューに詰まっているか E.g. ロードアベレージ • Errors : エラーイベントの数 メトリクス監視はPrometheusででき る 後から情報取るのは困難、、 コマンドだけだと対象が多すぎて全部見れない、、
  • 16. © 2020 NTT DATA Corporation 16 Metrics Prometheusで最低限監視しておきたい項目 詳しくはBlogまで 【暫定版】 Kubernetesの性能監視で必要なメトリクス一覧とPrometheusでのHowTo https://kashionki38.hatenablog.com/entry/2020/08/06/011420 種別 監視対象 メトリクス How サービス監視 RED Jmeter クライアント側 Throughput ResponseTime Error% Jmeterのメトリクスを収集 BackendListner->InfluxDB->Grafana システム側 Throughput ResponseTime Error% Istioのテレメトリ機能で各serviceのメトリクスを収集 リソース監視 USE Node CPU/Memory/NW/D k使用量 NodeExporterをDaemonSetとして配置し収集 ProcessExporterをDaemonSetとして配置 Pod/Containe CPU/Memory/NW/D k使用量 cAdvisorにて収集 (Kubeletバイナリに統合されているのでscrapeの設定のみで MW AP スレッド数 GC 言語のPrometheusクライアントライブラリ DB QPS クエリレイテンシ セッション数 待機イベント 各DBのExporterをDB Podにサブコンテナとして配置
  • 17. © 2020 NTT DATA Corporation 17 Metrics Prometheusで最低限監視しておきたい項目 種別 監視対象 メトリクス How サービス監視 RED Jmeter クライアント側 Throughput ResponseTime Error% Jmeterのメトリクスを収集 BackendListner->InfluxDB->Grafana
  • 18. © 2020 NTT DATA Corporation 18 Metrics Prometheusで最低限監視しておきたい項目 ▼Jmeter Dashboard https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/jmeter-metrics- dashboard.json Throughput Jmeterスレッド 数 Error数 各URLごとの Throughput 各URLごとの Error詳細 種別 監視対象 メトリクス How サービス監視 RED Jmeter クライアント側 Throughput ResponseTime Error% Jmeterのメトリクスを収集 BackendListner->InfluxDB->Grafana
  • 19. © 2020 NTT DATA Corporation 19 Metrics Prometheusで最低限監視しておきたい項目 各URLごとの Response Time ▼Jmeter Dashboard https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/jmeter-metrics- dashboard.json 種別 監視対象 メトリクス How サービス監視 RED Jmeter クライアント側 Throughput ResponseTime Error% Jmeterのメトリクスを収集 BackendListner->InfluxDB->Grafana
  • 20. © 2020 NTT DATA Corporation 20 Metrics Prometheusで最低限監視しておきたい項目 各Workloadごと のResponse Time 各Workloadごと のThroughput 各Workloadご とのSuccess% 各Workloadへの Incoming Throughput 各Workloadへの Incoming Success% 各Workloadからの Outgoing Throughput 各Workloadからの Outgoing Success% 各Workloadからの Outgoing Response Time 種別 監視対象 メトリクス How サービス監視 RED システム側 Throughput ResponseTime Error% Istioのテレメトリ機能で各serviceのメトリクスを収集 ▼Istio-workloadダッシュボード https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/Istio-Workload- Dashboard.json
  • 21. © 2020 NTT DATA Corporation 21 Metrics Prometheusで最低限監視しておきたい項目 各NodeごとのLoad Average 各NodeごとのCPU% 種別 監視対象 メトリクス How リソース監視 USE Node CPU/Memory/NW/D k使用量 NodeExporterをDaemonSetとして配置し収集 ProcessExporterをDaemonSetとして配置 Node Availability Node稼働状況 unschedulable Node数 pods Pods Allocatable Pods Capacity Pods Allocation CPU CPU使用率 CPU使用率コアごと ロードアベレージ CPU Core Capacity CPU Core Limits CPU Core Requests CPU Core Allocatable メモリ メモリ使用量 スワップイン量 スワップアウト量 スワップ使用率 スワップサイズ Memory Capacity Memory Limits Memory Requests Memory Allocatable ディスク ディスクビジー率 ディスクI/O待ち数 ディスクI/O待ち時間 ディスク読込み量 ディスク書込み量 ディスク読込み回数 ディスク書込み回数 パーティション使用率 パーティションサイズ inode総数/使用率 ネットワーク 送信トラフィック量 受信トラフィック量 ポート/Socket Drops Errs ファイルディスクリプタ プロセス プロセス数 プロセス数(ゾンビ) ▼Node Exporterダッシュボード https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/node-exporter-dashboard.json
  • 22. © 2020 NTT DATA Corporation 22 Metrics Prometheusで最低限監視しておきたい項目 特定NodeのProcess数 特定NodeのProcessごとの時 間 種別 監視対象 メトリクス How リソース監視 USE Node CPU/Memory/NW/D k使用量 NodeExporterをDaemonSetとして配置し収集 ProcessExporterをDaemonSetとして配置 ▼Process Exporterダッシュボード https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/process- exporter-dashboard.json Node Availability Node稼働状況 unschedulable Node数 pods Pods Allocatable Pods Capacity Pods Allocation CPU CPU使用率 CPU使用率コアごと ロードアベレージ CPU Core Capacity CPU Core Limits CPU Core Requests CPU Core Allocatable メモリ メモリ使用量 スワップイン量 スワップアウト量 スワップ使用率 スワップサイズ Memory Capacity Memory Limits Memory Requests Memory Allocatable ディスク ディスクビジー率 ディスクI/O待ち数 ディスクI/O待ち時間 ディスク読込み量 ディスク書込み量 ディスク読込み回数 ディスク書込み回数 パーティション使用率 パーティションサイズ inode総数/使用率 ネットワーク 送信トラフィック量 受信トラフィック量 ポート/Socket Drops Errs ファイルディスクリプタ プロセス プロセス数 プロセス数(ゾンビ)
  • 23. © 2020 NTT DATA Corporation 23 Metrics Prometheusで最低限監視しておきたい項目 各PodごとのCPU使用時間 各PodのCPU Throttle 種別 監視対象 メトリクス How リソース監視 USE Pod/Containe CPU/Memory/NW/D k使用量 cAdvisorにて収集 (Kubeletバイナリに統合されているのでscrapeの設定のみで OK) Pods Availability Available Pods数 Pods Restarts Pods status Running / Pending / Failed / Unknown Container Restarts Errors Terminated Reason Waiting Reason Restart Reason Containers status Ready / Terminated / Waiting / Running CPU CPU使用率 ロードアベレージ Throttle CPU Core Limits CPU Core Requests メモリ メモリ使用量 スワップイン量 スワップアウト量 スワップ使用量 スワップサイズ Memory Limits Memory Requests ディスク ディスクビジー率 ディスクI/O待ち数 ディスクI/O待ち時間 ディスク読込み量 ディスク書込み量 ディスク読込み回数 ディスク書込み回数 ネットワーク 送信トラフィック量 受信トラフィック量 ポート/Socket Drops Errs ファイルディスクリプタ ▼Pod / Containerダッシュボード https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/pod_detail-dashboard.json
  • 24. © 2020 NTT DATA Corporation 24 Metrics Prometheusで最低限監視しておきたい項目 特定Podのコンテナごとの CPU時間、Requests、 Limits ▼Pod / Containerダッシュボード https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/pod_detail-dashboard.json Pods Availability Available Pods数 Pods Restarts Pods status Running / Pending / Failed / Unknown Container Restarts Errors Terminated Reason Waiting Reason Restart Reason Containers status Ready / Terminated / Waiting / Running CPU CPU使用率 ロードアベレージ Throttle CPU Core Limits CPU Core Requests メモリ メモリ使用量 スワップイン量 スワップアウト量 スワップ使用量 スワップサイズ Memory Limits Memory Requests ディスク ディスクビジー率 ディスクI/O待ち数 ディスクI/O待ち時間 ディスク読込み量 ディスク書込み量 ディスク読込み回数 ディスク書込み回数 ネットワーク 送信トラフィック量 受信トラフィック量 ポート/Socket Drops Errs ファイルディスクリプタ 種別 監視対象 メトリクス How リソース監視 USE Pod/Containe CPU/Memory/NW/D k使用量 cAdvisorにて収集 (Kubeletバイナリに統合されているのでscrapeの設定のみで OK)
  • 25. © 2020 NTT DATA Corporation 25 Metrics Prometheusで最低限監視しておきたい項目 特定Node上のPodのCPU時間 ▼Pod / Containerダッシュボード https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/pod_detail-dashboard.json Pods Availability Available Pods数 Pods Restarts Pods status Running / Pending / Failed / Unknown Container Restarts Errors Terminated Reason Waiting Reason Restart Reason Containers status Ready / Terminated / Waiting / Running CPU CPU使用率 ロードアベレージ Throttle CPU Core Limits CPU Core Requests メモリ メモリ使用量 スワップイン量 スワップアウト量 スワップ使用量 スワップサイズ Memory Limits Memory Requests ディスク ディスクビジー率 ディスクI/O待ち数 ディスクI/O待ち時間 ディスク読込み量 ディスク書込み量 ディスク読込み回数 ディスク書込み回数 ネットワーク 送信トラフィック量 受信トラフィック量 ポート/Socket Drops Errs ファイルディスクリプタ 種別 監視対象 メトリクス How リソース監視 USE Pod/Containe CPU/Memory/NW/D k使用量 cAdvisorにて収集 (Kubeletバイナリに統合されているのでscrapeの設定のみで OK)
  • 26. © 2020 NTT DATA Corporation 26 Metrics Prometheusで最低限監視しておきたい項目 特定Node上のPodのCPU時間 ▼Pod / Containerダッシュボード https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/pod_detail-dashboard.json Pods Availability Available Pods数 Pods Restarts Pods status Running / Pending / Failed / Unknown Container Restarts Errors Terminated Reason Waiting Reason Restart Reason Containers status Ready / Terminated / Waiting / Running CPU CPU使用率 ロードアベレージ Throttle CPU Core Limits CPU Core Requests メモリ メモリ使用量 スワップイン量 スワップアウト量 スワップ使用量 スワップサイズ Memory Limits Memory Requests ディスク ディスクビジー率 ディスクI/O待ち数 ディスクI/O待ち時間 ディスク読込み量 ディスク書込み量 ディスク読込み回数 ディスク書込み回数 ネットワーク 送信トラフィック量 受信トラフィック量 ポート/Socket Drops Errs ファイルディスクリプタ 種別 監視対象 メトリクス How リソース監視 USE Pod/Containe CPU/Memory/NW/D k使用量 cAdvisorにて収集 (Kubeletバイナリに統合されているのでscrapeの設定のみで OK)
  • 27. © 2020 NTT DATA Corporation 27 Metrics Prometheusで最低限監視しておきたい項目 種別 監視対象 メトリクス How リソース監視 USE AP 言語 : Java スレッド数 GC ・SpringBoot2系以降から実装の、Micrometer Actuator 使用 (pom.xml変更のみで良いはず) ・jmx exporter ・Prometheus java client library ヒープメモリ 全体ヒープメモリ使用量 Young Old Metaspace Code Cache GC 頻度(Full/Young) 時間(Full/Young) スレッド数 スレッド数 空きスレッド数 空きスレッド数 スレッドプール使用率 スレッドプール使用率 コネクションプール使用 数 コネクションプール使用数 ▼jmxダッシュボード https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/jmx-exporter-dashboard.json
  • 28. © 2020 NTT DATA Corporation 28 Metrics Prometheusで最低限監視しておきたい項目 種別 監視対象 メトリクス How リソース監視 USE AP 言語 : スレッド数 GC golangクライアントライブラリのpromhttpを使用 https://github.com/prometheus/client_golang/tr master/prometheus/promhttp ▼goダッシュボード https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/go-process-dashboard.json Process Memory 仮想メモリサイズ / 常駐メモリサ イズ Memory Stats heap / stack / 実使用量 open fds ファイルディスクリプタ数 Goroutines goroutine呼び出し数 GC 頻度(Full/Young) 時間(Full/Young)
  • 29. © 2020 NTT DATA Corporation 29 Metrics Prometheusで最低限監視しておきたい項目 種別 監視対象 メトリクス How リソース監視 USE AP 言語 : スレッド数 GC nodejsクライアントライブラリのprom-clientを使用 https://github.com/siimon/prom-client ▼Nodejsダッシュボード https://github.com/kashinoki38/prometheus-sample-yaml/blob/master/grafana/nodejs-dashboard.json Process Memory プロセス使用メモリ Heap Heapサイズ / Heap使用量 Active Active Handlers数 Event Loop Lag Event Loopのラグ GC 頻度(minor / incremental / major) 時間(minor / incremental / major)
  • 30. © 2020 NTT DATA Corporation 30 Loggingって何を見ないといけないの か?
  • 31. © 2020 NTT DATA Corporation 31 Logging Lokiの紹介 Loggingの課題 • 大量のログを軽量に扱いたい(grepのような使い心地) • メトリクス、トレーシングとの関連性を持たせたい(コンテキストスイッチを減らしたい) →今回はLokiを採用 Lokiでできること • Grafanaでのログ検索 • コンテキスト検索(前後の検索) • grepライクな検索 • Grafanaでのログ時系列可視化 PromQLライクな可視化 • tracingとの連携(Grafanaへのアドオン) 詳しくは、https://de.slideshare.net/nttdata-tech/grafana-loki- kubernetesloggingnttdata Grafana Promtail Lokiのログ集約フロー
  • 32. © 2020 NTT DATA Corporation 32 Logging 解析観点 観点 • エラーメッセージ • 時系列でのエラー量 grepライクな検索 エラーメッセージ Label (どのPod/Container/app etc) 前後のログ行 エラー検索(sock-shop namespaceのエラー) 時系列でのエラー量可視化 (Podごとのエラー量) PromQLライクなクエリ エラー量の可視化 任意のラベルで集計可
  • 33. © 2020 NTT DATA Corporation 33 Tracingって何を見ないといけないの か?
  • 34. © 2020 NTT DATA Corporation 34 Tracing 依存関係可視化 Tracingでやりたいこと1 • サービス間の呼び出し依存関係 • 各呼び出しのResponse Time、スループット、エ ラー率 →Kialiで可能 でできること • サービス感の依存関係グラフ • 依存関係に重ねて、Response Time、スルー プット、エラー率 が見える • 実態のデータはenvoyのPrometheusメトリクス から取得
  • 35. © 2020 NTT DATA Corporation 35 Tracing 分散トレーシング Tracingでやりたいこと2 • 分散トレーシング(各サービスのレイテンシの包含関係) でできること • Spanによる表示で後続のサービスが占める時間を可視化できる
  • 36. © 2020 NTT DATA Corporation 36 Observability Test Environment Prometheus Logging sock- shop istio-system monitoring jmeter Metrics Tracing 負荷がけ サンプルアプリ Grafana
  • 37. © 2020 NTT DATA Corporation 37 余談ですが、 性能試験ってやってますか?
  • 38. © 2020 NTT DATA Corporation 38 余談ですが、 性能試験ってやってますか? A) 本番リリース直前に毎回やってる(自動化最強) B) 重要なリリース前のみやってる+カナリアリリースして問題あったら 切り戻し C) ほぼやってない(祈る)
  • 39. © 2020 NTT DATA Corporation 39 余談ですが、 性能試験ってやってますか? A) 本番リリース直前に毎回やってる(自動化最強) B) 重要なリリース前のみやってる+カナリアリリースして問題あったら 切り戻し C) ほぼやってない(祈る) DevPerfOps (DevOps内での性能担保方法論)検討 中… ケーススタディ教えてください! ぜひ議論したいです。https://kashionki38.hatenablog.com/ (Hatena) @ka_shino_ki (Twitter) kashinoki38 (GitHub)
  • 40. © 2020 NTT DATA Corporation 解析事例
  • 41. © 2020 NTT DATA Corporation 41 解析事例 事例 何を見るか 確認観点 Nodeのリソース枯渇 Prometheu • Nodeのリソース • リソース枯渇要因はPodなのか、その他プロセスなのか コンテナのリソース Limits抵触 Prometheu • コンテナのリソース(CPU/Memory)とそのLimits Javaのヒープ/GCまわり Prometheu • ヒープの設定サイズとContainerのメモリLimits • GCの頻度、時間 APメソッドプロファイリ ング VisualVM • CPUを使っているメソッド • 処理時間を要しているメソッド 後続サービスの遅延 Kiali, Jaeger • Microserviceのどの部分で遅延/エラーが起きているかを俯瞰的 見る • 分散トレーシングで各サービスの包括関係、トレースの具体情報を 確認する アプリケーションエラー Prometheu Loki • HTTPエラーが発生しているサービスやエラーコードをLokiで検索 し、具体的エラーメッセージの確認 • エラーの頻度等の時系列可視化
  • 42. © 2020 NTT DATA Corporation 42 1. Nodeのリソース枯渇 1. Node Exporterのリソースグラフを確認 • この場合、とあるNodeのCPU使用率を確認すると1台の使用率がサチっている 何がCPUを食っているのか NodeのCPU使用率
  • 43. © 2020 NTT DATA Corporation 43 1. Nodeのリソース枯渇 2. 何がNodeのリソースを食っているのか A) 複数のPodの積み重ねでNodeのCPUを食っているケース →PodリソースグラフをNodeで絞ってPodのリソースを積み上げグラフで確認 特定Node内の全PodのCPU使用率積み上げ
  • 44. © 2020 NTT DATA Corporation 44 1. Nodeのリソース枯渇 2. 何がNodeのリソースを食っているのか B) 複数のPodの積み重ねで見てもNodeのCPU使用量に乖離がある =Node上のコンテナ以外から使用されるプロセスが食っているケース →Process exporterの各Node積み上げで確認する 特定Node内の全ProcessのCPU使用率積み上 げ
  • 45. © 2020 NTT DATA Corporation 45 2. コンテナのリソースLimits抵触 1. Podのリソースグラフにて対象namespce上の全コンテナのリ ソース使用量とLimits, Requetsを眺める • 黄色→Limits、水色→Usage • CPU, Memory 各コンテナのCPU使用量、Limits、 Requests
  • 46. © 2020 NTT DATA Corporation 46 2. コンテナのリソースLimits抵触 2. Limitsにあたってしまってスケールできていないコンテナがいない か A) この場合はCPUのLimitsにあたってfront-endコンテナのCPUが枯渇してい るのがわかる front-end pod内のコンテナのCPU使用量、Limits、 Requests
  • 47. © 2020 NTT DATA Corporation 47 2. コンテナのリソースLimits抵触 2. Limitsにあたってしまってスケールできていないコンテナがいない か B) MemoryのLimitsに当たる場合はOOM KilledやRestartsを繰り返している ことが多い ContainerのRestart回数
  • 48. © 2020 NTT DATA Corporation 48 3. MWリソースの枯渇 すみません、go, nodejsはまた今度 • Javaで見るべきリソース • ヒープ/GC • Thread Pool • Connection Pool →※Defaultで取れないので考慮必要 JMX Dashboard
  • 49. © 2020 NTT DATA Corporation 49 3. MWリソースの枯渇  ヒープ/GCでよくある問題 1. GC頻発による遅延やCPU枯渇 • jmx dashboardでGC種別ごとの頻度、時間を確認可能 2. ContainerのメモリLimitsとの不整合によるOOME → コンテナ特有 • jdk8u191未満だと明示的にヒープサイズを設定しない場合、Nodeのメモリサイズの1/4でヒープが設定されてし まう →PodのLimitsを超えて設定されることがあり、ヒープが無邪気に拡大するとOOM Killedされる • jdk8u131以降なら以下オプションでPodのMemoryLimitsを認識した設定になる • -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap • 明示的に指定する場合は、ヒープだけじゃなくMetaspaceなどの非ヒープにも注意 • Metaspaceが拡大してもOOM Killed発生する →これでRestartsを繰り返してる場合、spring bootから情報を取ってるjmx dashboard では事象が追えないかった。GCログも出しておくほうがよい -verbose:gc
  • 50. © 2020 NTT DATA Corporation 50 3. MWリソースの枯渇 GCログも標準出力しておくようにすると、どこまでヒープ拡張しようとしていたのか把握可能 • 下記の例だと232MBまでヒープが拡張しており、Metaspaceと合わせるとLimitsに対して 拡張しすぎていることが把握可能 標準出力されたGCログ GCログの1分ごとの出力回数
  • 51. © 2020 NTT DATA Corporation 51 4. APメソッドプロファイリング すみません、javaのみで(go, nodejsはまた今度!) • 従来法:VisualVM • jmxremoteのOption設定 • kubectl portforward • VisualVMで接続 - env: - name: JAVA_OPTS value: -Xms64m -Xmx128m -XX:PermSize=32m - XX:MaxPermSize=64m -XX:+UseG1GC -Djava.security.egd=file:/dev/urandom -Dcom.sun.management.jmxremote.port=3333 -Dcom.sun.management.jmxremote.ssl=false - Dcom.sun.management.jmxremote.authenticate=f alse - Dcom.sun.management.jmxremote.rmi.port=3333 -Djava.rmi.server.hostname=127.0.0.1 これ重要です。 Portforwardでつなぎに行 くのでlocalhost jmx remote接続用のJVM Optionの追加
  • 52. © 2020 NTT DATA Corporation 52 4. APメソッドプロファイリング つながると以下のような情報が容易に取れる GCやThreadなどのJVMリソース情報 CPUサンプリング サンプリング結果のSnapshot
  • 53. © 2020 NTT DATA Corporation 53 4. APメソッドプロファイリング 例えばOrdersのJavaAPにつないでみると、 • 最も時間がかかっているのはnewOrder()メソッド (あくまで比較的という話) • newOrder()から呼ばれるFutureTask.get() • 他サービスへのREST呼び出しの非同期処理の結果取得
  • 54. © 2020 NTT DATA Corporation 54 4. APメソッドプロファイリング 分散トレーシングでみても 確かにordersの他サービス呼び出しに時間がかかっているように見える
  • 55. © 2020 NTT DATA Corporation 55 5. 後続サービスの遅延 1. まずはKialiを眺めて、依存関係上にResponseTimeをマッピングす る • エラーは色分けされて出るのでエラー有無も把握可能 • この場合、front-end→catalogue部分で遅延 • サービスが多くなればなるほど重要。いきなりリソース解析せずこれでREDベー スであたりをつける
  • 56. © 2020 NTT DATA Corporation 56 5. 後続サービスの遅延 2. Jaegerでより詳細にトレースサンプルを確認する • この場合、catalogue/size?tagsの呼び出しが遅延しているのがわかる • あくまでサンプリングなので、KialiやPrometheusの統計的なデータと合わせて確認する
  • 57. © 2020 NTT DATA Corporation 57 6. アプリケーションのエラー 1. Istio workloadダッシュボードでHTTPコードベースでエラー有無 確認 • この場合、front-end→ordersでordersが406を返していることがわかる
  • 58. © 2020 NTT DATA Corporation 58 6. アプリケーションのエラー 2. Lokiにて、当該時間のエラーの確認 • front-endが受け取ったエラー • 406としてPayment declined : amount exceeds 100.00 とあり、 APで設定しているOrder可能回数に抵触していることがわかった
  • 59. © 2020 NTT DATA Corporation 59 6. アプリケーションのエラー 3. Lokiにて、当該時間のエラーの可視化 • 例えば、1分間に平均どれくらいエラーが発生しているのかが可視化できる
  • 60. © 2020 NTT DATA Corporation 60 まとめ
  • 61. © 2020 NTT DATA Corporation 61 まとめ Sock Shopをベースに性能解析を一通り試してみた • 環境:作業途中のものは随時ここに →https://github.com/kashinoki38/microservices-demo/tree/master/deploy/kubernetes • Metrics by Prometheus:各種取り揃えるのは大変。揃うと便利で強力。 • Prometheusのメトリクスやダッシュボードなどは以下ブログ • 【暫定版】 Kubernetesの性能監視で必要なメトリクス一覧とPrometheusでのHowTo • https://kashionki38.hatenablog.com/entry/2020/08/06/011420 • Logging by Loki:Garafanaで見れるの便利。検索や可視化がPromQL+Grep ライク • Tracing by • Kiali:依存関係と遅延/エラー発生箇所の特定に便利 • Jaeger:サービス同士の処理時間の包含関係の解析に便利 • Profilingはまだまだ余地があるので調査していきたい
  • 62. © 2020 NTT DATA Corporation 62 まとめ Sock Shopをベースに性能解析を一通り試してみた • 環境:作業途中のものは随時ここに →https://github.com/kashinoki38/microservices-demo/tree/master/deploy/kubernetes • Metrics by Prometheus:各種取り揃えるのは大変。揃うと便利で強力。 • Prometheusのメトリクスやダッシュボードなどは以下ブログ • 【暫定版】 Kubernetesの性能監視で必要なメトリクス一覧とPrometheusでのHowTo • https://kashionki38.hatenablog.com/entry/2020/08/06/011420 • Logging by Loki:Garafanaで見れるの便利。検索や可視化がPromQL+Grep ライク • Tracing by • Kiali:依存関係と遅延/エラー発生箇所の特定に便利 • Jaeger:サービス同士の処理時間の包含関係の解析に便利 • Profilingはまだまだ余地があるので調査していきたい
  • 63. © 2020 NTT DATA Corporation

Editor's Notes

  1. ・シナリオのバージョン管理は実行時にgitにpushすればいい話 #シナリオに変更があった場合に ・githubのリンクを試験結果ダッシュボードに出せば良い
  2. ・シナリオのバージョン管理は実行時にgitにpushすればいい話 #シナリオに変更があった場合に ・githubのリンクを試験結果ダッシュボードに出せば良い