Fluentdのカスタマイズ
Fluentd SELinuxコンテキスト・タイプの構成
複数のログ・ストリームがあるコンポーネント、またはstdoutにログを出力できないコンポーネントについては、Verrazzanoはログ・ストリームを解析および変換するFluentdサイドカーをデプロイします。結果のログは、サイドカー・コンテナのstdoutに送信され、kubeletサービスによって/var/log/containersに書き込まれます。
たとえば、WebLogicデプロイメントでは、AdminServer.logが使用されて変換され、Fluentdサイドカーによってstdoutに書き込まれます。これらのログは、fluentd-stdout-sidecarという名前のコンテナでkubectlを使用して表示できます。
$ kubectl logs tododomain-adminserver \
   -n todo-list \
   -c fluentd-stdout-sidecar
Verrazzano Fluentd Dockerイメージには、次のプラグインが付属しています:
Verrazzano Fluentd Dockerイメージには、2つのローカル・デフォルト・プラグインkubernetes_parserとkubernetes_multiline_parserもあります。これらのプラグインは、Kubernetes管理ログ・ファイルの解析に役立ちます。
次の例では、これらのプラグインのユースケースを示します:
# ---- fluentd.conf ----
# kubernetes parser
<source>
  @type tail
  path ./kubelet.log
  read_from_head yes
  tag kubelet
  <parse>
     @type multiline_kubernetes
  </parse>
</source>
# kubernetes multi-line parser
<source>
  @type tail
  path ./kubelet.log
  read_from_head yes
  tag kubelet
  <parse>
     @type multiline_kubernetes
  </parse>
</source>
# ----   EOF      ----
Verrazzanoは、verrazzano-systemネームスペース内のノードごとに1つのFluentdレプリカを実行するFluentd DaemonSetをデプロイします。各インスタンスは、ノードの/var/log/containersディレクトリからログを取得し、それをターゲットのOpenSearchデータ・ストリームに書き込みます。Verrazzanoシステム・アプリケーションは、特別な処理を受け取り、ログをverrazzano-systemデータ・ストリームに書き込みます。Verrazzanoアプリケーション・ログは、アプリケーションのネームスペースに基づいてデータ・ストリームにエクスポートされます(verrazzano-application-<application namespace>の形式)。
たとえば、/var/log/containersに書き込まれたvmi-system-osdログは、Fluentdによって取得され、OpenSearchに書き込まれます。vmi-system-osdはVerrazzanoシステム・アプリケーションであるため、ログはverrazzano-systemデータ・ストリームにエクスポートされます。システム以外のアプリケーションの場合、それがmyappネームスペースにあれば、ログはverrazzano-application-myappデータ・ストリームにエクスポートされます。
Fluentd SELinuxコンテキスト・タイプの構成