リファレンスアーキテクチャに関する注意: このセットアップではサードパーティ製コンポーネントを使用しています。バージョン、デフォルト値、コマンド構文は変更される可能性があります。SambaStack に固有でない問題については、該当コンポーネントを所有するベンダーまたはプロジェクトにお問い合わせください。
前提条件
Fluent Bit をデプロイする前に、以下の環境を準備してください。- Kubernetes クラスター – SambaStack がインストール済みの稼働中クラスター
- OpenSearch –
monitoring名前空間にデプロイ済みであること。詳細は ログストレージ - OpenSearch をご参照ください - OpenSearch の管理者パスワード – OpenSearch のデプロイ時に設定したパスワード
- Helm(最新バージョン) – Fluent Bit チャートのデプロイに使用
- kubectl – 対象の Kubernetes クラスターへのアクセスが設定済みであること
リソース要件
以下は、Fluent Bit の最小リソース推奨値です。Fluent Bit は DaemonSet として動作し、ノードごとに 1 つの Pod が起動します。クラスター全体のリソース消費は、ノード数に比例して増加します。
アーキテクチャ概要
SambaStack のモニタリングリファレンスアーキテクチャでは、次のように動作します。- Fluent Bit は DaemonSet として動作し、Kubernetes ノードごとに 1 つのログフォワーダーが確実に配置されます
/var/log/pods/を通じて、すべての Pod とコンテナからログを収集します- Lua フィルターを使用して、ログに名前空間、Pod、コンテナのメタデータを付与します
- ポート 9200 のセキュアな TLS 接続で、OpenSearch にログを転送します
Fluent Bit のログ収集の仕組み:
- Kubernetes は、各ノードの
/var/log/pods/にコンテナログを自動的に書き込みます - Fluent Bit は、DaemonSet を通じてホストのファイルシステムからこれらのログを直接読み取ります
- CRI と Docker の両方のログ形式に対応するため、複数のパーサーが設定されています
- Fluent Bit は、実行時に適切なパーサーを自動的に選択します
- ログは Kubernetes メタデータで拡充され、OpenSearch に転送されます
デプロイ手順
ステップ 1: Helm リポジトリの追加
ステップ 2: OpenSearch パスワードの取得
OpenSearch のデプロイ 時に作成した OpenSearch の管理者パスワードを取得します。ステップ 3: Lua スクリプトの作成
以下の内容を~/.sambastack-observability/fluentbit/append_tags.lua として保存します。
Lua コードを別ファイルとして用意する方が、設定ファイルにインラインで埋め込むよりもエラーが起こりにくくなります。
ステップ 4: 設定ファイルの作成
以下の内容を~/.sambastack-observability/fluentbit/fluentbit-conf.conf として保存します。
ステップ 5: 設定用 Secret の作成
ステップ 6: Helm values ファイルの作成
以下の内容を~/.sambastack-observability/fluentbit/fluentbit-values.yml として保存します。
ステップ 7: Fluent Bit のインストール
動作確認
Pod ステータスの確認
各ノードで Fluent Bit の Pod が稼働していることを確認します。ログが OpenSearch に届いていることの確認
OpenSearch サービスにポートフォワードします。logs-7d インデックスが存在し、docs.count が 0 以外であれば、Fluent Bit による OpenSearch へのログ送信は成功しています。
ポートフォワードのプロセスを停止するには、次を実行します。
サンプルログのクエリ
サンプルクエリでログの内容を確認します。namespace、pod、container の各フィールドが設定されたログエントリが表示されるはずです。
成功基準
以下の条件を満たしていれば、デプロイは成功です。- Fluent Bit の DaemonSet Pod が、すべてのノードで
Running状態である - OpenSearch に
logs-7dインデックスが存在し、ドキュメントが登録されている - サンプルログのクエリで、namespace/pod/container のメタデータが付与されたエントリが返される
設定リファレンス
トラブルシューティング
Pod が起動しない (ImagePullBackOff)
症状: Fluent Bit の Pod にImagePullBackOff または ErrImagePull と表示される。
対処方法: クラスターがコンテナレジストリに到達できることを確認してください。ネットワークポリシーやプロキシ要件も確認してください。
OpenSearch にログが表示されない
症状:logs-7d インデックスが存在しない、またはドキュメント数が 0 である。
考えられる原因と対処方法:
-
OpenSearch に到達できない:
-
パスワードの誤り:
fluentbit-values.ymlのパスワードが、OpenSearch の管理者パスワードと一致していることを確認してください。 -
Secret がマウントされていない:
ログにメタデータフィールドがない
症状: OpenSearch にログは表示されるが、namespace、pod、container フィールドが欠落している。
原因: Lua フィルターがログファイルのパスを解析できていません。
対処方法: ログが想定どおりのパスパターン (/var/log/pods/*/*/*.log) から取得されていることを確認してください。
メモリ使用量が多い
症状: Fluent Bit の Pod が OOMKilled になる、またはメモリ消費が多い。 対処方法: 設定でバッファサイズを削減します。次のステップ
Fluent Bit によるログ転送が始まったら、次に進みます。- Prometheus と Grafana のデプロイ – ログの可視化ダッシュボードを追加します。詳細は Prometheus と Grafana による監視 をご参照ください。
- Grafana でのログ探索 – OpenSearch データソースを含む Grafana をデプロイすると、Explore 機能でログのクエリと可視化ができるようになります。
クリーンアップ
クラスターから Fluent Bit を削除するには、以下を実行します。 Helm リリースをアンインストールします。Fluent Bit を削除するとログ転送は停止しますが、OpenSearch 内の既存ログは削除されません。過去のログを削除するには、OpenSearch でインデックスを直接削除するか、インデックスライフサイクルポリシーによってデータが失効するのを待ちます。

