Skip to main content
SambaStack の監視・可観測性リファレンスアーキテクチャは、オープンソースコンポーネントを使用して、オンプレミスデプロイメント向けにメトリクス、ログ、ダッシュボードを提供します。本ガイドでは、公式の kube-prometheus-stack Helm チャートを使用して、Prometheus、Grafana、Prometheus Operator、Node Exporter を monitoring 名前空間にデプロイする手順を解説します。
リファレンスアーキテクチャに関する注意: このセットアップではサードパーティ製コンポーネント(Prometheus、Grafana など)を使用しています。バージョン、デフォルト値、コマンド構文は変更される可能性があります。SambaStack に固有でない問題については、該当コンポーネントを所有するベンダーまたはプロジェクトにお問い合わせください。

前提条件

作業を始める前に、以下の要件を満たしていることを確認してください。
  • kubectl – 対象の Kubernetes クラスターへのアクセスが設定済みであること
  • Helm(最新バージョン) – helm version で確認してください
  • jq – 動作確認時の JSON 出力の解析に使用
  • monitoring 名前空間 – 存在しない場合は、ステップ 1 で作成します
  • ストレージクラス – Prometheus の永続ストレージ用の有効なストレージクラス

任意の前提条件

  • OpenSearch – Grafana でログを可視化する場合にのみ必要です。OpenSearch 連携を含めてデプロイする場合は、先に OpenSearch のデプロイ を完了してください。opensearch-initial-admin-password Secret が存在している必要があります。
デプロイ順序: フルモニタリングスタックを使用する場合は、OpenSearch → Fluent Bit → Prometheus/Grafana の順にデプロイしてください。メトリクスのみが必要な場合(ログの可視化が不要な場合)は、Prometheus/Grafana を単独でデプロイできます。

リソース要件

以下は、モニタリングスタックの最小リソース推奨値です。
大規模なデプロイメント(100 ノード以上、または高カーディナリティのメトリクス)では、Prometheus のメモリを 4〜8Gi、ストレージを 50〜100Gi に増やしてください。合わせて、values ファイルの retentionSize も調整してください。

アーキテクチャ概要

データフロー

メトリクスの経路:
SambaStack サービス / Node Exporter → /metrics → Prometheus → Grafana ダッシュボード
ログの経路(OpenSearch が必要):
Pod / システムログ → Fluent Bit → OpenSearch → Grafana(ログパネル)

デプロイ手順

ステップ 1: monitoring 名前空間の作成

OpenSearch のデプロイによって名前空間がすでに存在する場合は、このステップをスキップしてください。 ~/.sambastack-observability/monitoring-namespace.yaml に名前空間の設定ファイルを作成します。
設定を適用します。

ステップ 2: Helm リポジトリの追加

ステップ 3: Grafana 管理者認証情報の Secret の作成

base64 エンコードしたユーザー名とパスワードを含む Secret を、~/.sambastack-observability/monitoring/grafana-initial-admin-credentials-secret.yaml に作成します。
値を base64 エンコードするには: echo -n 'your-value' | base64
Secret を適用します。

ステップ 4: values ファイルの作成

~/.sambastack-observability/monitoring/prometheus-grafana-values.yaml を作成します。OpenSearch と連携するかどうかに応じて、適切な設定を選択してください。
OpenSearch をデプロイ済みで、Grafana でログを可視化する場合は、こちらの設定を使用します。
この設定では、monitoring 名前空間に opensearch-initial-admin-password Secret が存在している必要があります。詳細は ログストレージ - OpenSearch をご参照ください。
<your-storage-class> は、クラスターのストレージクラスに置き換えてください。利用可能なストレージクラスの確認: kubectl get storageclass

コンポーネント設定の概要

ステップ 5: kube-prometheus-stack のインストール

Helm のインストールコマンドを実行します。
これにより、Prometheus、Prometheus Operator、Node Exporter、Grafana がデプロイされます。

ステップ 6: 推論ルーター用 ServiceMonitor の作成

Prometheus は、ServiceMonitor を使用して SambaStack の推論ルーターを検出し、メトリクスをスクレイプします。~/.sambastack-observability/monitoring/inference-router-sm.yaml に以下のファイルを作成します。
ServiceMonitor を適用します。

動作確認

Pod ステータスの確認

Prometheus の Pod を確認します。
期待される出力:
Grafana の Pod を確認します。
期待される出力:
Node Exporter の Pod を確認します。

UI へのアクセス

Prometheus をポートフォワードします。
アクセス先: http://localhost:9090停止するには: pkill -f "port-forward.*9090"

Grafana 認証情報の取得

Prometheus ターゲットの確認

  1. http://localhost:9090 で Prometheus UI にアクセスします
  2. Status → Targets に移動します
  3. node-exporter ターゲットが UP と表示されることを確認します
  4. inference-router-sm ターゲットが UP と表示されることを確認します(SambaStack が稼働している場合)

Grafana データソースの確認

  1. http://localhost:8080 で Grafana にログインします
  2. Connections → Data sources に移動します
  3. Prometheus データソースに「Data source is working」と表示されることを確認します
  4. OpenSearch 連携を使用している場合は、OpenSearch-Logs データソースに「Data source is working」と表示されることを確認します

成功基準

以下の条件を満たしていれば、インストールは完了です。
  • monitoring 名前空間で Prometheus の Pod(2 レプリカ)が稼働している
  • Grafana の Pod が稼働しており、アクセスできる
  • すべてのノードで Node Exporter の Pod が稼働している
  • Prometheus で Node Exporter のターゲットが UP と表示される
  • 設定した管理者認証情報で Grafana にログインできる
  • Grafana の Prometheus データソースに「Data source is working」と表示される
  • (設定した場合)Grafana の OpenSearch データソースに「Data source is working」と表示される

Node Exporter ダッシュボードのインポート

Node Exporter が公開するノード/ラックレベルのメトリクスを可視化するには、次の手順を実行します。
1

Grafana にログイン

動作確認セクションで取得した認証情報を使用します。
2

Import に移動

Dashboards → New → Import に移動します。
3

ダッシュボードのインポート

ダッシュボード ID 1860 を入力し、Load をクリックします。
4

データソースの選択

データソースとして Prometheus を選択し、Import をクリックします。
このダッシュボードには、CPU 使用率、メモリ使用率、ディスク I/O、ネットワークメトリクス、ノードの正常性が含まれます。
ダッシュボード ID 1860 は、コミュニティ製の「Node Exporter Full」ダッシュボードです。SambaStack デプロイメントにおけるラック単位の可視化に最適です。

設定リファレンス

トラブルシューティング

Prometheus の Pod が Pending のまま進まない

症状: Prometheus の Pod が Pending 状態のまま進まない。 原因: PersistentVolumeClaim を満たすことができない。 対処方法:

Grafana で OpenSearch データソースが「Data source is not working」になる

症状: Grafana で OpenSearch データソースのテストが失敗する。 考えられる原因:
  1. OpenSearch が未デプロイ: 先に OpenSearch をデプロイしてください。詳細は ログストレージ - OpenSearch をご参照ください。
  2. Secret の欠落: Secret が存在することを確認します。
  3. OpenSearch が起動していない: OpenSearch の Pod ステータスを確認します。

ServiceMonitor がターゲットをスクレイプしない

症状: カスタム ServiceMonitor のターゲットが Prometheus に表示されない。 対処方法: ServiceMonitor が monitoring 名前空間にあり、ラベルが一致していることを確認します。

Node Exporter の Pod が一部のノードで起動しない

症状: Node Exporter の Pod 数がクラスターのノード数より少ない。 原因: ノードに taint が設定されており、スケジューリングが妨げられている可能性があります。 対処方法: Node Exporter の設定に toleration を追加するか、ノードの taint を削除してください。

次のステップ

Prometheus と Grafana が稼働したら、次に進みます。
  1. カスタムダッシュボードの作成 – 推論レイテンシ、QPS、アクセラレーター使用率など、SambaStack 固有のメトリクスのダッシュボードを構築します。
  2. ServiceMonitor の追加 – Prometheus メトリクスを公開する他の SambaStack コンポーネント用に、ServiceMonitor を作成します。
  3. アラートの有効化 – 本番の監視用に Alertmanager を設定します。values ファイルで alertmanager.enabled: true を設定してください。
  4. ログの探索 – OpenSearch と Fluent Bit がデプロイされている場合は、Grafana の Explore 機能で logs-7d インデックスをクエリできます。

クリーンアップ

クラスターからモニタリングスタックを削除するには、以下を実行します。 Helm リリースをアンインストールします。
Grafana 認証情報の Secret を削除します。
ストレージを解放するために、Prometheus の PersistentVolumeClaim を削除します。
ServiceMonitor を削除します。
PVC を削除すると、保存されているメトリクスデータがすべて完全に削除されます。事前に、重要なメトリクスをエクスポート済みであることを確認してください。
OpenSearch や Fluent Bit を含むモニタリングスタック全体を削除する場合は、名前空間ごと削除できます: kubectl delete namespace monitoring。これによりすべてのリソースが削除され、元に戻すことはできません。