Skip to main content
OpenSearch は、SambaStack のモニタリングリファレンスアーキテクチャで使用される、デフォルトのログ保存・検索エンジンです。Fluent Bit から転送されたログと監査情報を保存し、Grafana または直接の API アクセスによる可視化とクエリを可能にします。
リファレンスアーキテクチャに関する注意: このセットアップではサードパーティ製コンポーネントを使用しています。バージョン、デフォルト値、コマンド構文は変更される可能性があります。SambaStack に固有でない問題については、該当コンポーネントを所有するベンダーまたはプロジェクトにお問い合わせください。

前提条件

作業を始める前に、以下の環境を準備してください。
  • kubectl – 対象の Kubernetes クラスターへのアクセスが設定済みであること
  • Helm(最新バージョン) – OpenSearch チャートのデプロイに使用
  • jq – 動作確認時の JSON 出力の解析に使用
  • ストレージクラス – 永続ボリュームのプロビジョニングに使用できる有効なストレージクラスが Kubernetes 環境に存在すること
デプロイ順序: Grafana でログを可視化する場合は、Fluent Bit および Prometheus/Grafana よりも先に OpenSearch をデプロイしてください。

リソース要件

以下は、OpenSearch の最小リソース推奨値です。
OpenSearch はメモリを大量に消費します。本番ワークロードでは、利用可能なメモリの 50% 以上(最大 32 GB)を JVM ヒープに割り当ててください。これらの値は、opensearch-values.yaml ファイルの esJavaOpts パラメータで設定します(例: esJavaOpts: "-Xmx16g -Xms16g")。

アーキテクチャ概要

SambaStack のモニタリングスタックにおいて、OpenSearch は中央のログリポジトリとして機能します。
  • Fluent Bit から HTTPS(ポート 9200)でログを受信します
  • 時間ベースのインデックス(デフォルト: logs-7d)にログを保存します
  • Grafana ダッシュボードや直接クエリ向けの検索 API を提供します
  • 永続ストレージを持つ StatefulSet として動作します

デプロイ手順

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

まず、すべての監視コンポーネント用の専用名前空間を作成します。この名前空間は、OpenSearch、Fluent Bit、Prometheus、Grafana で共有されます。 monitoring-namespace.yaml という名前のファイルを作成します。
名前空間を適用します。

ステップ 2: 管理者パスワード用 Secret の作成

OpenSearch は、インストール時に初期管理者パスワードを必要とします。パスワードは Kubernetes の Secret 経由で注入されます。 まず、base64 エンコードしたパスワードを生成します。
パスワード要件:
  • 8 文字以上
  • 大文字、小文字、数字、特殊文字を組み合わせること
  • 使用可能な特殊文字: # @ % _ - + = .
  • ! と $ は問題を引き起こす可能性があるため、使用しないでください
平文のパスワードは安全に保管してください。後続のステップで Fluent Bit と Grafana を設定する際に必要になります。
opensearch-initial-admin-password-secret.yaml という名前のファイルを作成し、プレースホルダをエンコード済みのパスワードに置き換えます。
Secret を適用します。

ステップ 3: Helm values の設定

デプロイをカスタマイズするために、opensearch-values.yaml という名前のファイルを作成します。<your-storage-class> は、クラスターのストレージクラス名に置き換えてください。
クラスターで利用可能なストレージクラスを確認するには、kubectl get storageclass を実行します。

設定リファレンス

  • replicas - この値を 1 に設定するのは、開発およびテスト用途に適しています。本番の高可用性デプロイでは、レプリカ数を 3 以上に増やし、ストレージクラスがマルチ AZ プロビジョニングに対応していることを確認してください。
  • singleNode - この値を true に設定するのは、replicas が 1 の場合(同じく開発・テスト用途)に限定してください。replicas が 1 より大きい本番の高可用性デプロイでは、false に設定するか、この行自体を削除してください。
    • 注: 既存のデプロイでこの値を変更すると、イミュータブルなフィールドが変更されるため、StatefulSet の再作成が必要になります。
  • opensearchJavaOpts - OpenSearch JVM の最小・最大 Java ヒープサイズを制御します。"-Xms2g -Xmx2g" に設定すると、ヒープはちょうど 2 GiB に固定されます。目安として、ヒープはコンテナのメモリ上限の約 50% とし、約 31 GiB を超えないようにしてください。チャートのデフォルト値である 512 MiB は、OpenSearch にバンドルされたプラグイン(Security、Security Analytics、ML Commons、Query Insights)が読み込まれると小さすぎるため、通常の使用でも OOM エラーが発生します。
  • resources - Pod の CPU およびメモリのリクエスト(保証される割り当て)とリミット(上限)を制御します。
    • limits.memory は、Lucene やダイレクトバッファが使用するオフヒープメモリの余地を残すため、opensearchJavaOpts のヒープサイズの約 2 倍に設定してください。
    • requests.memory は、limits.memory と同じ値に設定してください。これにより Pod が Guaranteed QoS クラスに配置され、ノードのメモリ逼迫時の退避 (eviction) を防げます。
    • requests.cpu は、インデックス操作時のベースライン性能を確保するために 1 コア以上に設定し、limits.cpu は、マージストーム、インデックス処理のスパイク、検索負荷の際にバーストできるよう、より高い値(例: 2 コア)に設定してください。

ステップ 4: OpenSearch のインストール

OpenSearch 公式の Helm リポジトリを追加し、チャートをインストールします。

動作確認

インストールが完了したら、OpenSearch が正常に動作していることを確認します。

Pod ステータスの確認

期待される出力:

API 接続のテスト

OpenSearch API にローカルからアクセスするために、ポートフォワードを設定します。
管理者パスワードを取得します。
API エンドポイントをテストします。
成功した場合のレスポンスは、次のようになります。
作業が終わったら、ポートフォワードのプロセスを停止します。

成功基準

以下の条件を満たしていれば、OpenSearch のインストールは完了です。
  • opensearch-cluster-master-0 Pod が Running 状態で、READY が 1/1 と表示される
  • OpenSearch API が curl に対して有効なクラスター情報を返す
  • monitoring 名前空間に opensearch-initial-admin-password Secret が存在する

設定リファレンス

トラブルシューティング

Pod が Pending 状態のまま進まない

症状: opensearch-cluster-master-0 が Pending 状態のまま進まない。 原因: 通常、PersistentVolumeClaim (PVC) を満たせないことを示します。 対処方法:
ストレージクラスが存在し、利用可能な容量があることを確認してください。

Pod が CrashLoopBackOff になる

症状: Pod がクラッシュと再起動を繰り返す。 原因: メモリ不足またはパスワード Secret の欠落が原因であることが多いです。 対処方法:

ポート 9200 で接続が拒否される

症状: ポートフォワードが有効な状態でも、curl が「Connection refused」を返す。 対処方法:

次のステップ

OpenSearch が稼働したら、次に進みます。
  1. Fluent Bit のデプロイ – ログ転送をセットアップし、クラスターのログを OpenSearch に取り込みます。詳細は Fluent Bit によるログ転送 をご参照ください。
  2. Prometheus と Grafana のデプロイ – メトリクスの収集と可視化を追加します。Grafana のデプロイには、ログ探索用の OpenSearch データソースが含まれます。詳細は Prometheus と Grafana による監視 をご参照ください。

クリーンアップ

クラスターから OpenSearch と関連リソースをすべて削除するには、以下のコマンドを実行します。 Helm リリースをアンインストールします。
管理者パスワードの Secret を削除します。
ストレージを解放するために、PersistentVolumeClaim を削除します。
PVC を削除すると、保存されているログデータがすべて完全に削除されます。事前に、重要なログをバックアップ済みであることを確認してください。
モニタリングスタック全体を削除する場合で、他のコンポーネントが残っていないときは、名前空間を削除します。
名前空間を削除すると、その中のすべてのリソース(デプロイ済みであれば Fluent Bit、Prometheus、Grafana を含む)が削除されます。モニタリングスタック全体を削除する場合にのみ実行してください。