Submit Search
Upload
PrometheusによるKubernetes環境の異常検知改善.pptx
•
Download as PPTX, PDF
•
0 likes
•
1,050 views
T
TakashiTsukamoto4
Follow
PrometheusによるKubernetes環境の異常検知改善
Read less
Read more
Internet
Report
Share
Report
Share
1 of 54
Download now
Recommended
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
Kenji Hiranabe
エラー・バジェットによるリスク管理 Managing risk with error budgets
エラー・バジェットによるリスク管理 Managing risk with error budgets
Google Cloud Platform - Japan
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
NTT DATA Technology & Innovation
明治大学 データサイエンス・AIに関するオムニバス授業 エバンジェリストというキャリア
明治大学 データサイエンス・AIに関するオムニバス授業 エバンジェリストというキャリア
Daiyu Hatakeyama
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
techgamecollege
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
Developers Summit
Recommended
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
Kenji Hiranabe
エラー・バジェットによるリスク管理 Managing risk with error budgets
エラー・バジェットによるリスク管理 Managing risk with error budgets
Google Cloud Platform - Japan
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
NTT DATA Technology & Innovation
明治大学 データサイエンス・AIに関するオムニバス授業 エバンジェリストというキャリア
明治大学 データサイエンス・AIに関するオムニバス授業 エバンジェリストというキャリア
Daiyu Hatakeyama
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
techgamecollege
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
Developers Summit
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
あなたはPO?PM?PdM?PjM?
あなたはPO?PM?PdM?PjM?
大貴 蜂須賀
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
NTT DATA Technology & Innovation
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
アジャイル開発やってみた
アジャイル開発やってみた
Arata Fujimura
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略
Shuichi Tsutsumi
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
Kuninobu SaSaki
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
NVIDIA Japan
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
GMO GlobalSign Holdings K.K.
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
Akira Inoue
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
Ryuichi Sakamoto
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
LINE Corporation
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
Preferred Networks
Leanstartupをリーンにヤル #リーンスタートアップ
Leanstartupをリーンにヤル #リーンスタートアップ
Itsuki Kuroda
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
IIJ
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
【Photon勉強会】FFGMでも採用!1時間でわかるPlugin開発とEnterprise Cloudの詳解
【Photon勉強会】FFGMでも採用!1時間でわかるPlugin開発とEnterprise Cloudの詳解
GMO GlobalSign Holdings K.K.
SWETの取り組むImage Based Testing
SWETの取り組むImage Based Testing
DeNA
More Related Content
What's hot
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
あなたはPO?PM?PdM?PjM?
あなたはPO?PM?PdM?PjM?
大貴 蜂須賀
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
NTT DATA Technology & Innovation
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
アジャイル開発やってみた
アジャイル開発やってみた
Arata Fujimura
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略
Shuichi Tsutsumi
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
Kuninobu SaSaki
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
NVIDIA Japan
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
GMO GlobalSign Holdings K.K.
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
Akira Inoue
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
Ryuichi Sakamoto
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
LINE Corporation
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
Preferred Networks
Leanstartupをリーンにヤル #リーンスタートアップ
Leanstartupをリーンにヤル #リーンスタートアップ
Itsuki Kuroda
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
IIJ
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
What's hot
(20)
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
あなたはPO?PM?PdM?PjM?
あなたはPO?PM?PdM?PjM?
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Selenium×PostgreSQL15×Grafanaで思い出を保存&分析するプロジェクト(第35回PostgreSQLアンカンファレンス@オンライン...
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
アジャイル開発やってみた
アジャイル開発やってみた
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
Leanstartupをリーンにヤル #リーンスタートアップ
Leanstartupをリーンにヤル #リーンスタートアップ
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Similar to PrometheusによるKubernetes環境の異常検知改善.pptx
【Photon勉強会】FFGMでも採用!1時間でわかるPlugin開発とEnterprise Cloudの詳解
【Photon勉強会】FFGMでも採用!1時間でわかるPlugin開発とEnterprise Cloudの詳解
GMO GlobalSign Holdings K.K.
SWETの取り組むImage Based Testing
SWETの取り組むImage Based Testing
DeNA
モニタリングプラットフォーム開発の裏側
モニタリングプラットフォーム開発の裏側
Rakuten Group, Inc.
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
Photon運営事務局
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
New Relic University ワークショップ@東京へのご招待
New Relic University ワークショップ@東京へのご招待
New Relic
Similar to PrometheusによるKubernetes環境の異常検知改善.pptx
(6)
【Photon勉強会】FFGMでも採用!1時間でわかるPlugin開発とEnterprise Cloudの詳解
【Photon勉強会】FFGMでも採用!1時間でわかるPlugin開発とEnterprise Cloudの詳解
SWETの取り組むImage Based Testing
SWETの取り組むImage Based Testing
モニタリングプラットフォーム開発の裏側
モニタリングプラットフォーム開発の裏側
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
New Relic University ワークショップ@東京へのご招待
New Relic University ワークショップ@東京へのご招待
PrometheusによるKubernetes環境の異常検知改善.pptx
1.
1 PrometheusによるKubernetes環境の異常検知改善 GMOインターネットグループ株式会社 グループ研究開発本部 次世代システム研究室
2.
アジェンダ • モチベーション • 関連技術紹介 •
Prometheusのアーキテクチャ • Prometheusによる監視改善 • Grafana OnCallによるアラート改善 • 信頼性の向上 • まとめ 2
3.
モチベーション 運用している認証サービスのログイン障害をなくしたい 認証サービスはグループ内で提供しているサービスで共通で使っている 認証サービスが稼働していないと連携サービスも利用できなくなる そのため高い稼働率が求められる 3
4.
• これまでのアプローチ 認証サービスで障害が発生する 認証サービスで障害が発生していることを検知する 開発者にオンコールで通知する 障害箇所を特定して復旧する 以下ごめんなさい活動に続く 4
5.
• 改善の理想形 認証サービスで障害が発生しそうな状況を検知する 開発者にSlackやオンコールで通知する 障害が発生する前に対策する GMO IDで障害が発生する GMO
IDで障害が発生していることを検知する 開発者にオンコールで通知する 障害箇所を特定して復旧する 以下ごめんなさい活動に続く 5
6.
• ログイン機能障害のパターン 内部要因 システムリソース不足 システムダウン(クラウド基盤障害) アプリケーションエラー 外部要因 DoS攻撃等 その他 6
7.
• 2年間で発生した障害のログイン機能への影響 7 原因/影響(件数) 影響なし 遅延発生または 一部影響あり ログイン不可 システムリソース不足
0 0 1 システムダウン(クラウド基盤障害) 1 2 3 アプリケーションエラー 8 1 2 DoS攻撃等 0 1 0 その他 1 0 0
8.
• Prometheusによる改善が期待できる障害 8 原因/影響(件数) 影響なし 遅延発生または 一部影響あり ログイン不可 システムリソース不足
0 0 1 システムダウン(クラウド基盤障害) 1 2 3 アプリケーションエラー 8 1 2 DoS攻撃等 0 1 0 その他 1 0 0
9.
• 認証サービスのシステム稼働環境 Z.com Cloud
Enterprise(IaaS)上に各環境合わせて約100台のVMで運用 アプリケーションコンテナ管理にKubernetes/Dockerを利用 Kubernetes/Docker環境は自前で構築運用 9 Kubernetes Nagios 認証サービス 外形監視 Munin リソース監視 運用担当者 障害通知 Elasticsearch ・・・ Z.com Cloud Enterprise ホストOS
10.
• 目指したいもの Prometheusで障害発生前に異常検知してログイン障害をなくしたい 10 Kubernetes Nagios 認証サービス Prometheus Alert
Manager Grafana On Call 監視 外形監視 Munin リソース監視 Slack 運用担当者 システム異常の早期発見通知 障害通知 早期対策 kubelet Node Exporter
11.
アジェンダ • モチベーション • 関連技術紹介 •
Prometheusのアーキテクチャ • Prometheusによる監視改善 • Grafana OnCallによるアラート改善 • 信頼性の向上 • まとめ 11
12.
関連技術紹介 • Kubernetes コンテナがサービスとして稼働できる状態を管理する(Pod) Podの実行に適したノード(VM)に配置する 例: PHP-FPMが起動していない状態ではNginxにリクエストが来ない 12 Kubernetes ノード(VM) Pod Nginx PHP-FPM ノード(VM) Pod Nginx PHP-FPM ノード(VM) Pod Nginx ・・・
13.
• Prometheus 2012年 SoundCloud社が開発、OSSで公開 2016年
Cloud Native Computing Foundationのインキュベーションプロジェクトのク ラウド用プロダクトとして開発が進められ、v1.0 がリリース ↓ クラウドネイティブなコンテナの監視ツールのデファクトスタンダードへ (KubernetesもCloud Native Computing Foundation出身) 13
14.
時系列の数値データを収集して保持しリクエストに応じてデータを加工するツール 可視化/アラートツールと組み合わせて監視/アラートツールとして使える ※Prometheus server単体では監視/アラートツールとして機能しない https://prometheus.io/docs/introduction/overview/#architecture 14
15.
• kube-prometheus-stack Kubernetesの監視/アラートをPrometheusと周辺ツールで実現するパッケージ Kubernetes上にデプロイしてノードとコンテナのメトリクスを取得できる Prometheus、Grafana、Alartmanager、kube-state-metrics、 Prometheus Operator、Node
Exporterで構成されている 15
16.
• Grafana 分析と可視化用のツール 16
17.
• Alertmanager APIでアラートリクエストを受信してアラートをハンドリングできる Prometheus serverからアラートを受け取る 電子メールやSlackでアラートを通知できる アラートのグルーピングや抑制ができる 17
18.
• Metrics in
Kubernetes Kubernetesのメトリクスを提供する仕組み kubelet: コンテナリソースのメトリクスを提供 kube-state-metrics: Kubernetesのメトリクス提供ツールからメトリクスを収集 • Node Exporter Kuberntesのノードのメトリクスを収集する仕組み 18
19.
既存監視ツールとの比較 19
20.
• Nagios ホストOSの監視/アラートツール(コンテナリソースの監視には向かない) 生存確認失敗時やシステムリソースが閾値に達するとアラートを通知する 条件に応じてWarningやCritical等のステータスを管理できる 例1: トップページのレスポンスが30秒なければアラートを通知する 例2:
ディスク使用量が75%を超えたらアラートを通知する ※運用している認証サービスではシステム監視チームと連携してステータスCritical の際に運用担当者にオンコールする運用体制 20
21.
• Munin 監視ツール CPU、メモリ、ディスク使用量、ネットワークトラフィック等を時系列に可視化 リソース状況の確認や障害発生時の異常箇所検知に利用 21
22.
• Zabbix サーバー、ネットワーク、アプリケーション等を監視 障害検知、アラート通知、可視化機能を提供 https://www.zabbix.com/jp/server_monitoring 22
23.
• Prometheus Stackの優位性 Prometheusは様々なメトリクスを元に監視用データを柔軟に加工できる コンテナの監視を中心的な機能に置いている 歴史的な経緯からも今後もKubernetes/コンテナ環境との親和性強化に期待 kube-prometheus-stackによる導入障壁の緩和 23
24.
アジェンダ • モチベーション • 関連技術紹介 •
Prometheusのアーキテクチャ • Prometheusによる監視改善 • Grafana OnCallによるアラート改善 • 信頼性の向上 • まとめ 24
25.
Prometheusのアーキテクチャ • スクレイプ JobやExporterと連携してメトリクスを収集する https://prometheus.io/docs/introduction/overview/#architecture 25
26.
• データモデル 時系列データを保持 メトリクス名、メトリクス値、ラベル、timestampで構成される 時系列データはメトリクス名とラベル(key-value)で一意に識別可能 26 VM Prometheus
server timestamp 1664240957 Node Exporter メトリクス名 メトリクス値 ラベル CPU USAGE 20 host=“192.168.X.Y” MEMORY USAGE 1000000000 host=“192.168.X.Y” DISK USAGE 30000000000 host=“192.168.X.Y”
27.
• TSDB 収集したメトリクスは時系列データベース(TSDB)に保存 Prometheus serverのローカルストレージにデータを永続化 コンテナの場合は外部ストレージをマウントして永続化 ストレージの冗長化はサポートしていない デフォルトのデータ保持期間は15日 用途に応じて保持期間を変更する 27
28.
• メトリクスの種類 Counter: 値が単調に増加するメトリクス、値がリセットされることがある 例:
アプリケーションエラー件数、処理したリクエスト件数 Gauge: 値が増減するメトリクス 例: メモリ使用量、ディスク使用量 Histogram: 指定した範囲のヒストグラム Summary: 集計値やイベントの発生数 28
29.
• PromQL データ型 • Instant
Vector: 時系列上に単一データを持つ型、グラフ化できる • Range Vector: 時系列上に複数データを持つ型、グラフ化できない • Scalar: 浮動小数型 時系列セレクター • Instant Vector Selectors: Instant Vector型を取得する、メトリクスも含む node_memory_MemTotal_bytes node_memory_MemTotal_bytes{job=“node-exporter”, instance=“192.168.X.Y”} • Range Vector Selectors: Instant Vector型からRange Vector型を取得する node_memory_MemTotal_bytes[1d] 29
30.
• 気温を観測する例 1日の気温を1時間ごとに計測してPrometheusでメトリクスとして取得 0時に気温10℃、12時まで1℃/時ずつ上昇、12時以降1℃/時ずつ下降 30 時 気温(℃) 0 6
12 18 24 10 22 Prometheus メトリクス名 値 timestamp temparature 10 10 temparature 11 11 ・・・ temparature 10 24
31.
31 時 気温(℃) 0 6 12
18 24 10 22 Prometheus temparature [(0, 10), (1, 11), ・・・(24, 10)] PromQL temperature(メトリクス) Instant Vector(メトリクスそのもの) グラフ化 時 気温(℃) 0 6 12 18 24 10 22 Prometheus temparature [(0, [(0, 10)], (1, [(0, 10), (1, 11)], ・・・ (24, [(22, 12), (23, 11), (24, 10)] PromQL temperature[2h] Range Vector イメージ 10 時系列上に3つのベクトル値
32.
32 時 気温(℃) 0 6 12
18 24 10 22 10 • Functions Range Vectorの時点では意味がない Functionと組み合わせることで意味のある指標に変換できる avg_over_time(v range-vector): 指定した範囲に含まれる平均値 delta(v range-vector): Range Vectorの時系列上の最初と最後の値の差分 avg_over_time 時 気温(℃) 0 12 24 11 21 直近2時間ごとの平均気温 delta 時 気温(℃) 0 12 24 直近2時間の気温変化 2 -2 Instant Vector グラフ化できる
33.
• アラート メトリクスやメトリクスを加工した値に条件をつけてアラートが送信できる 33
34.
アジェンダ • モチベーション • 関連技術紹介 •
Prometheusのアーキテクチャ • Prometheusによる監視改善 • Grafana OnCallによるアラート改善 • 信頼性の向上 • まとめ 34
35.
Prometheusによる監視改善 • ノードのディスク容量不足によるログイン障害 • KubernetesのPod
Evictionの仕組み • 認証サービスのアプリケーション構成 • 障害を引き起こした原因 • ディスク容量不足に気付けなかった理由 • ディスク使用量増加傾向の監視 • ディスク使用量増加の異常検知によるアラート • DoS攻撃等の監視 35
36.
• ノードのディスク容量不足によるログイン障害 ディスク容量不足によりノード上にPodがデプロイできずログイン不可になった 36 Kubernetes ノード(VM) Pod Nginx PHP-FPM ノード(VM) Pod Nginx PHP-FPM ノード(VM) Pod Nginx PHP-FPM Kubernetes ノード(VM) ノード(VM)
ノード(VM) ディスク容量不足 ディスク容量不足 ディスク容量不足
37.
• KubernetesのPod Evictionの仕組み Node-pressure
Eviction ノード上のリソースの枯渇を避けるためにPodをノードから除外する(Evict) Pod除外後にノードがデプロイできる状態になると再度デプロイして復旧 37 ノード(VM) Pod Nginx PHP-FPM ノード(VM) ノード(VM) Pod Nginx PHP-FPM リソース不足 リソース確保 再デプロイ
38.
認証サービス Kubernetes • 認証サービスのアプリケーション構成 認証サービスだけで使うためのノードを割り当てている 割り当てられている全ノードが稼働している 1ノードに1Pod稼働している 各Podに均等にリクエストが来るようにしている 38 ノード(VM) Pod Nginx PHP-FPM ノード(VM) Pod Nginx PHP-FPM ノード(VM) Pod Nginx PHP-FPM Elastics earch ・・・
39.
• 障害を引き起こした原因 認証サービスのログの量が短期間に増加した 全ノードでほぼ同時にディスク容量不足発生(全ノード同じ構成のため) 認証サービスのPodが順次除外される ディスク容量不足が解消できないのでPodが除外された状態が続く 認証サービスの全Podが除外される 39 Kubernetes ノード(VM) ノード(VM)
ノード(VM) ディスク容量不足 ディスク容量不足 ディスク容量不足
40.
• ディスク容量不足に気付けなかった理由 特定リクエストで1MB程ログが出る修正が入る =>
レビューで気付けない Nagiosでディスク使用量のWarningアラートが発生 => ログ量変化に気付けない Warningの閾値を超えた状態が続きアラートが発生しない Criticalアラート(オンコール)が発生したため古いログ削除 => 調査の時間取れず 再度Criticalアラート(オンコール)が発生したため古いログ削除 Nagiosのディスク使用量の閾値見直し 閾値が高すぎてアラートが発生する前に認証サービスのPodが除外される => Node-pressure Evictionの仕様を正しく理解できていなかった 40
41.
• ディスク使用量増加傾向の監視 ディスク使用量を以前(1日前、1週間前、1ヶ月前等)と比較して異常検知 PromQL 41 delta( node_filesystem_avail_bytes{job="node-exporter", instance="$instance",
fstype!=""}[1d] )
42.
• ディスク使用量増加の異常検知によるアラート ディスク使用量の増加量の閾値をアラートの条件に設定 通知先をSlackに指定 42
43.
• DoS攻撃等の監視 Nginxのaccess.logをFluentdでメトリクスとして転送する rate関数を利用してリクエスト数の変化率を監視する 43
44.
アジェンダ • モチベーション • 関連技術紹介 •
Prometheusのアーキテクチャ • Prometheusによる監視改善 • Grafana OnCallによるアラート改善 • 信頼性の向上 • まとめ 44
45.
Grafana OnCallによるアラート改善 • Grafana
OnCallとは アラートエスカレーションやスケジューラとの連動によりエンジニアの負担削減 クラウド版とOSS版(Grafanaのプラグイン)がある https://grafana.com/oss/oncall/ 45
46.
• ユースケース アラートのレベルに応じて通知の時間帯や通知先を変更する Warning(すぐにはサービス影響なし): 業務時間、全開発者宛に通知 Error(サービスに影響する可能性あり):
全日、障害担当者にのみ通知 緊急(サービスが稼働していない): 全日、全開発者宛(+事業部担当者)に通知 46
47.
アジェンダ • モチベーション • 関連技術紹介 •
Prometheusのアーキテクチャ • Prometheusによる監視改善 • Grafana OnCallによるアラート改善 • 信頼性の向上 • まとめ 47
48.
信頼性の向上 • 監視システムへの稼働要求 監視システムは監視対象が稼働していないことを検知する必要がある 監視システムは監視対象より高い稼働率が求められる 48 システム 監視システム 監視 稼働率:
99.99% 稼働率: 99.999% < 通知
49.
• 監視の監視 認証サービスとPrometheusは共にKubernetes内で稼働 Prometheusの稼働率を認証サービスより上げ辛い Kubernetesの外部からNagiosで監視することで信頼性向上 49 Kubernetes Nagios 認証サービス
Prometheus 監視 外形監視 システム異常の早期発見通知 障害通知 Slack 運用担当者 監視・・・?
50.
• ストレージの冗長化 メトリクスの保存に冗長性のあるリモートストレージを利用できる Google BigqueryやPostgreSQL等 リモートストレージを利用する場合もPromQLはPrometheus
serverで実行 メリット ストレージを冗長化できる 長期間のメトリクスの保持に適している デメリット リモートストレージから生データを取得するためパフォーマンス低下の可能性 https://prometheus.io/docs/prometheus/latest/storage/ 50
51.
アジェンダ • モチベーション • 関連技術紹介 •
Prometheusのアーキテクチャ • Prometheusによる監視改善 • Grafana OnCallによるアラート改善 • 将来的な拡張性について • まとめ 51
52.
まとめ • システム異常の早期検知にPrometheusが利用できる • Prometheusに適切なアラートを設定することで早期検知する •
Grafana OnCallでより柔軟なアラートシステムを実現 • システムの洞察(インサイト)を得るためにPrometheusを導入する • 適切なオートスケールやオートヒーリングの構築に繋がることも期待 • 監視システムの可用性を考慮することも大事 52
53.
53 Kubernetes Nagios 認証サービス Prometheus Alert Manager Grafana
On Call 監視 外形監視 Munin リソース監視 Slack 運用担当者 システム異常の早期発見通知 障害通知 早期対策 kubelet Node Exporter
54.
ご清聴ありがとうございました 54
Download now