2023/04/17 開催された、Kubernetes Novice Tokyo #24 にて話したスライドです。 https://k8s-novice-jp.connpass.com/event/278196/
Prometheusでの監視データ活用マニュアルKubernetes Novice Tokyo #24かめねこ @kameneko1004
View Slide
かめねこ所属: さくらインターネット株式会社 クラウド事業本部趣味: カメラ(業務用)、車(MAZDA3)著 : Prometheus実践ガイド\最近Kindleも出たよ/@kameneko1004
あなたの監視データ活用できていますか?
あなたの監視データ活用できていますか?「とりあえず監視してる」「アラート通知のために使ってる」「Prometheus入れたけどメトリクスいっぱいでよくわからん」「最後にメンテしたのいつだっけ…」
あなたの監視データ活用できていますか?「とりあえず監視してる」「アラート通知のために使ってる」「Prometheus入れたけどメトリクスいっぱいでよくわからん」「最後にメンテしたのいつだっけ…」そんなあなたに必見
このセッションのゴール
このセッションのゴール「Prometheusデータ活用」を知る1. PrometheusとObservabilityの考え方2. Prometheusのデータを活用する4ステップ
PrometheusとObservabilityの考え方
Prometheusとは
Prometheusとは• オープンソースの監視システム• 時系列データベースを採用したPull型データモデルを採用• ServiceDiscoveryによるターゲットの自動追従• PromQLによるシンプルかつ柔軟なクエリ• さまざまなソフトウェアに対応したExporter• Kubernetesを始めとしたクラウドネイティブな監視• Observabilityを実現
Prometheusとは• オープンソースの監視システム• 時系列データベースを採用したPull型データモデルを採用• ServiceDiscoveryによるターゲットの自動追従• PromQLによるシンプルかつ柔軟なクエリ• さまざまなソフトウェアに対応したExporter• Kubernetesを始めとしたクラウドネイティブな監視• Observabilityを実現• Observabilityを実現
Observabilityとは
Observabilityとは可観測性 システムの状態を可視化
Observabilityとは従来の監視システムの異常を事前に想定それを検知するためのメトリクスを取得しアラートKubernetesを始めとしたシステムの複雑化によって「異常を事前に想定」が難しくなる
ObservabilityとはObservabilityシステムのさまざまな情報を事前に取得異常が起きた場合に、これを検知・把握する想定できない未知の障害に対応データの活用が重要
PrometheusObservability?
ObservabilityとはメトリクスログトレーシングObservability
Observabilityとはメトリクスログトレーシング数値データで時系列にシステムを表現
Observabilityとはメトリクスログトレーシング文字列データでシステムの状態を人間にわかりやすく表現
Observabilityとはメトリクスログトレーシングシステムへのアクセスとそれに紐づく詳細な呼び出し等を表現
ObservabilityとはメトリクスログトレーシングPrometheus, ZabbixJaegerElasticsearch, Grafana Loki
ObservabilityとはObservabilityシステムのさまざまな情報を事前に取得異常が起きた場合に、これを検知・把握する想定できない未知の障害に対応データの活用が重要問題がおきたとき、収集していたメトリクスをどのように活用するのか?
PrometheusとObservabilityの考え方まとめ• Prometheusはクラウドネイティブなモニタリングシステム• PrometheusでObservabilityを実現する• Observabilityでは問題があったときにどのようにデータを活用するかが重要となる
Prometheusのデータを活用する4ステップ
データを活用する1. 収集2. 通知3. 可視化4. 分析
データを活用する1. 収集2. 通知3. 可視化4. 分析データ活用に必要なメトリクスを収集する「何のために」どのようなデータが必要か考える
データを活用する1. 収集2. 通知3. 可視化4. 分析Exporterの活用• Prometheusには公式非公式含めて多種多様なExporterが存在• システムが利用している各種Exporterを使って簡単にメトリクスを収集なければ作る• 大抵のソフトウェアは公開されているExporterで対応可能だがソフトウェアが対応していない・更新されていないExporterなど…• 自前のアプリケーションも同様• これらは自分で「Exporterを作る」or「組み込む」
データを活用する1. 収集2. 通知3. 可視化4. 分析取得したデータをもとにユーザへ通知する単に知らせるだけでなく、「行動を促す」通知が重要
データを活用する1. 収集2. 通知3. 可視化4. 分析SLOベースのアラート• 「サービス状態」をベースにした考え• SLOを基準とすることでサービス品質に紐づいたアラートが可能Runbookの活用• Runbook: 運用手順をまとめたドキュメント• 通知するだけでなく、通知したあとの動きも考慮する• 通知にRunbookを埋め込み、通知を受けたあとの行動も明確に
データを活用する1. 収集2. 通知3. 可視化4. 分析比較的運用コストが高いダッシュボードを継続的に、低コストで運用する
データを活用する1. 収集2. 通知3. 可視化4. 分析コミュニティのダッシュボードを活用• さまざまなコンポーネントのダッシュボードをメンテするのは大変• 汎用的なダッシュボード(Linuxサーバの情報など)はコミュニティのダッシュボードをお借りするサービスに関するダッシュボードは自作• 実際に作成するのはサービスに関わるもの• 常に利用し、メンテナンスする
データを活用する1. 収集2. 通知3. 可視化4. 分析通知や可視化だけでなく、その先の分析まで考慮する
データを活用する1. 収集2. 通知3. 可視化4. 分析開発者もPrometheusを• Prometheusはインフラのためのツールのように見えるが開発者にとっても重要• 開発者が必要なメトリクスを取得するサービス品質向上のために• システム運用だけでなく、ビジネスのためにメトリクスを使う• 「サービス別の利用率」「利用率の高い時間帯」「ユーザの行動」• メトリクスだけでもさまざまな指標が取得できる• +α ログやトレーシングを合わせるとよりよい
まとめ
Prometheusのデータを活用するには• Prometheusを使ったObservabilityの実現• 想定できない未知の障害に対するデータを蓄積・活用• 収集 → 通知 → 可視化 → 分析 → 収集 のループを回す収集分析・活用 可視化通知