type
status
date
slug
summary
tags
category
icon
password
书籍
第15章
メトリクスサブシステムのインストールと設定
目標
メトリクス収集サブシステムをインストールし、設定する。
学習目標
- メトリクスサブシステムの アーキテクチャと動作 を説明できるようになる。
- メトリクスサブシステムを インストール できるようになる。
内容
- メトリクスサブシステムのアーキテクチャの説明(およびクイズ)
- メトリクスサブシステムのインストール(およびガイド付き演習)
メトリクスサブシステムのアーキテクチャの説明
目的
このセクションを完了すると、メトリクスサブシステムのアーキテクチャと動作を説明できるようになります。
メトリクスサブシステムの構成要素
OpenShiftのメトリクスサブシステムは、クラスタのパフォーマンスデータを収集し、長期保存 できる仕組みを提供します。
メトリクスは、各ノードおよびそのノードで動作するすべてのコンテナ について収集されます。

メトリクスサブシステムのアーキテクチャ
メトリクスサブシステムの概要
OpenShift のメトリクスサブシステムは、クラスタのパフォーマンスデータを収集し、長期保存するための仕組み です。各ノードと、そのノード内で稼働するすべてのコンテナのメトリクスが収集されます。
メトリクスサブシステムは、以下のオープンソースプロジェクトを基に構成されています。
1. Heapster
Heapster は、Kubernetes クラスタ内のすべてのノードからメトリクスを収集し、ストレージエンジンに転送するコンポーネント です。
- Red Hat OpenShift では、Heapster のストレージエンジンとして Hawkular を使用します。
- Heapster は、Kubernetes コミュニティによって開発され、サードパーティのアプリケーションがクラスタのパフォーマンスデータを取得できるように設計されています。
2. Hawkular Metrics
Hawkular Metrics は、時系列データの保存および取得を行う REST API を提供するコンポーネントです。
- Hawkular Metrics は Cassandra をデータストアとして使用します。
- Hawkular は、RHQ プロジェクト(Red Hat JBoss Operations Network の上流プロジェクト)の後継として開発され、Red Hat CloudForms のミドルウェア管理機能の一部を担っています。
3. Hawkular Agent
Hawkular Agent は、アプリケーションからカスタムメトリクスを収集し、Hawkular Metrics に転送するコンポーネント です。
- アプリケーションは、Hawkular Agent に対して独自のメトリクスを提供できます。
- Hawkular OpenShift Agent(HOSA)は、現在 テクノロジープレビュー機能 であり、デフォルトではインストールされません。Red Hat は、本番環境での使用を推奨していません。
4. Cassandra
Cassandra は、非リレーショナルな分散型データベース であり、時系列データの保存に使用されます。
メトリクスサブシステムの独立性と必要なコンポーネント
OpenShift のメトリクスサブシステムは、他の OpenShift コンポーネントとは独立して動作します。ただし、以下の 3 つの機能を利用する場合には、メトリクスサブシステムが必要です。
- OpenShift Web コンソール
- Web コンソールは Hawkular Metrics API を利用し、プロジェクト内の Pod のパフォーマンスグラフを表示します。
- メトリクスサブシステムが導入されていない場合、グラフは表示されません。
- 注意: メトリクス API へのリクエストは、ユーザーの Web ブラウザから直接送信され、OpenShift マスター経由ではありません。
- oc adm top コマンド
- Heapster API を利用し、クラスタ内の Pod やノードの現在のリソース使用状況を取得します。
- Kubernetes のオートスケールコントローラー
- Heapster API からデプロイメント内の Pod の現在の状態を取得し、スケーリングの判断を行います。
外部モニタリングシステムとの統合
OpenShift は、必ずしもフルセットのメトリクスサブシステムを導入する必要はありません。
- 既に 外部のモニタリングシステム を運用している場合、Heapster のみを導入 し、メトリクスの長期保存を外部システムに任せることが可能です。
- もし外部モニタリングシステムがアラート通知やヘルスチェック機能のみを提供している場合、Hawkular API を利用してメトリクスを取得し、アラートを生成することもできます。
Heapster のメトリクス収集とクエリ機能
Heapster は、各ノードおよびノード内のコンテナのメトリクスを収集し、それらを集約して Pod、ネームスペース、クラスタ全体 のデータを提供します。Heapster が収集する代表的なメトリクスは以下の通りです。
- ワーキングセット(Working set)
- ノード上のすべてのプロセスが実際に使用しているメモリ量(バイト単位)。
- CPU 使用量(CPU usage)
- ノード上のすべてのプロセスが使用している CPU の量(ミリコア単位)。
- 例: 10 ミリコア = CPU 1% の使用率に相当。
Heapster は、メモリ内に保持されているメトリクスに対して シンプルなクエリ を実行でき、特定の期間のデータを取得することが可能です。
Heapster のメトリクス詳細については、Heapster Storage Schema の公式ドキュメントを参照してください。
Heapster と Hawkular の利用方法
OpenShift のユーザーは、宣言されたリソース要求(Requests/Limits) と 実際のリソース使用量 の違いを理解する必要があります。
- Pod のリソース要求(Requests) は、スケジューリング時に考慮されます。
- リソース要求は、ノードの総容量から差し引かれ、ノードの利用可能な容量が決定 されます。
- ただし、実際のリソース使用量はこの計算には影響しません。
oc describe node コマンドの挙動
- OpenShift 3.9 以降、
oc describe node
コマンドは Pod が宣言したリソース要求のみを表示 します。
- Pod がリソース要求を宣言していない場合、実際の使用量は考慮されません。
- その結果、ノードの空き容量が実際より多く見える可能性があります。
まとめ
- Heapster: メトリクスの収集・集約を行う。
- Hawkular Metrics: メトリクスの保存・取得を行う。
- Hawkular Agent: アプリケーションのカスタムメトリクスを収集する(技術プレビュー)。
- Cassandra: メトリクスを保存するデータベース。
- メトリクスサブシステムを導入すると、Web コンソールのグラフ表示、
oc adm top
コマンド、オートスケーリングが利用可能になる。
- OpenShift は、外部のモニタリングシステムとの統合にも対応している。
oc describe node
は、リソース要求のみを表示し、実際のリソース使用量は考慮しない。
Web コンソールとノードメトリクスの取得
Web コンソールの表示内容
- Web コンソールは
oc describe node
コマンドと同じ情報を表示 します。
- Hawkular Metrics から取得した実際のリソース使用量も表示可能 ですが、OpenShift 3.9 では Pod とプロジェクト単位のメトリクスのみを表示 します。
- ノード単位のメトリクスは Web コンソールでは確認できません。
ノードの実際のリソース使用状況を確認する方法
oc adm top
コマンドを使用(ノードのハードウェア・仮想環境のキャパシティ状況を確認)
- 詳細な情報が必要な場合 → Linux の標準コマンドを使用(例:
vmstat
,ps
)
- Heapster API を利用(より詳細なメトリクスの取得が可能)
Heapster API のアクセス方法
Heapster API は外部から直接アクセスできない
- OpenShift は Heapster をクラスタ外部には公開していません。
- Heapster にアクセスするには、OpenShift マスター API プロキシ機能を利用 する必要があります。
- マスター API プロキシは、OpenShift の認証・アクセス制御ポリシーに基づいて動作 します。
Heapster API に curl
でアクセスする例
以下の
curl
コマンドを使用すると、特定のノードのメモリ使用量(ワーキングセット)を取得できます。コマンドのポイント
- OpenShift マスター API プロキシ URL を設定
openshift-infra
ネームスペース内の Heapster サービスへプロキシ経由でアクセス。
- Heapster API の URL 設定
- サービス名
heapster
を URL に含める(ホスト名の代わりにサービス名を使用)。
- OpenShift ユーザーの認証トークンを取得
oc whoami -t
コマンドでトークン取得(最低限クラスタの読み取り権限が必要)。
curl
で API にリクエスト送信k
: SSL 証明書の検証を無効化(必要に応じて)H "Authorization: Bearer $TOKEN"
: 認証トークンをリクエストヘッダーに設定?start=$START
: 特定のタイムスタンプ(UTC形式)以降のメトリクスを取得- 例:
2017-07-27T17:27:37Z
(date '+%FT%TZ'
コマンドで取得可能)
Hawkular の外部公開に関する注意点
- Hawkular を外部アクセス可能にする場合、セキュリティ上の考慮が必要。
- 詳細は Red Hat OpenShift Container Platform の公式ドキュメント を参照。
他の監視ツールとの統合
- Heapster や Hawkular API の利用が難しい場合、他のオープンソース監視ツール(Nagios、Zabbix など)と統合可能。
- OpenShift のオープンソース版(Origin)や Kubernetes コミュニティでは、これらのツールとの連携を提供。
まとめ
✅ Web コンソールはノードのメトリクスを表示しない(Pod/プロジェクト単位のみ)。
✅ ノードのリソース使用状況を確認するには
oc adm top
コマンドを使用。✅ より詳細な情報を取得するには
vmstat
, ps
, Heapster API などを活用。✅ Heapster は外部から直接アクセスできない → OpenShift マスター API プロキシを利用。
✅ 監視ツールとの統合オプションもあり(Nagios, Zabbix など)。
メトリクスサブシステムの適切なサイズ設計
概要
OpenShift のメトリクスサブシステムの適切なサイズ設計について説明します。詳細な情報は、Red Hat OpenShift Container Platform の公式ドキュメント(インストール & 設定ガイド や スケーリング & パフォーマンスガイド)を参照してください。
メトリクスサブシステムのスケーリング
- 各コンポーネント(Heapster、Hawkular、Cassandra)はそれぞれ独立したデプロイメントコントローラーを持ち、個別にスケール可能。
- OpenShift クラスタ内のどこにでもデプロイ可能だが、本番環境ではメトリクス用に専用のノードを確保するのが一般的。
- Cassandra と Hawkular は Java アプリケーション であり、大規模なヒープメモリを活用する。
- デフォルト設定は中小規模の OpenShift クラスタ向け に調整済み。
- テスト環境ではメモリ・CPU のデフォルト設定を変更 し、少ないリソースで動作させることも可能。
- Heapster と Hawkular は標準の OpenShift ツールでサイズ変更・スケール調整が可能。
- 数百のノード、数千のプロジェクトのメトリクスを少数の Heapster & Hawkular ポッドで管理できる。
oc
コマンドを使用してリソースの増減やレプリカ数の変更が可能。- ただし、推奨される設定方法は Ansible の変数を調整すること(次の「インストール」セクションで解説)。
- Cassandra は
oc
コマンドではスケール不可(データベースはステートレスアプリではないため)。 - Cassandra のスケーリング & 設定は Metrics インストール Playbook を使用。
Cassandra の永続ストレージの確保
- Cassandra は「共有なし(shared-nothing)」のストレージアーキテクチャを採用。
- 各 Cassandra ポッドは専用の永続ボリューム(PV)を使用。
- 高可用性(HA)を実現するには、最低 3 つの Cassandra ポッドが必要。
- 一時ストレージ(ephemeral storage)も利用可能だが、データ消失のリスクあり。
emptyDir
ボリュームタイプはテスト環境向けであり、本番環境には 推奨されない。
- 必要なストレージサイズはクラスタの規模(ノード数 & Pod 数)だけでなく、メトリクスの保存期間 & 解像度にも依存。
- 適切なストレージサイズについては Red Hat の公式ドキュメントを参照。
永続ボリュームの管理
- Metrics インストール Playbook では、静的 or 動的プロビジョニング の永続ボリューム(PV)が利用可能。
- Playbook は 一意のプレフィックス + 連番 を使用して 永続ボリューム要求(PVC)を作成。
- 静的に PV をプロビジョニングする場合は、同じ命名規則を適用することが推奨される。
参考情報 & ドキュメントリンク
以下の公式ドキュメントに詳細情報が記載されています。
📘 Red Hat OpenShift Container Platform
- インストール & 設定ガイド
- スケーリング & パフォーマンスガイド
📘 オープンソースプロジェクト
- Heapster(GitHub)
- Hawkular
- Apache Cassandra
- OpenShift Origin(GitHub)
まとめ
✅ 各コンポーネント(Heapster, Hawkular, Cassandra)は個別にスケーリング可能。
✅ Heapster & Hawkular は標準の OpenShift ツールで管理可能だが、Cassandra は Ansible Playbook で設定が必要。
✅ 高可用性(HA)構成には 3 つ以上の Cassandra ポッドが必要(各ポッドに専用の PV が必要)。
✅ 一時ストレージ(ephemeral storage)はテスト環境のみ推奨、本番環境では永続ストレージを使用。
✅ 詳細な情報は OpenShift 公式ドキュメントを参照。
- 作者:みなみ
- 链接:https://www.minami.ac.cn//%E8%B3%87%E6%A0%BC%E5%8B%89%E5%BC%B7/1aad7ae8-88e2-8097-9043-f2795c64038a
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章