ログ収集用のFluentdの構成

Fluentdサイドカー

複数のログ・ストリームがあるコンポーネント、または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_parserkubernetes_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      ----

Fluentd DaemonSet

Verrazzanoは、verrazzano-systemネームスペース内のノードごとに1つのFluentdレプリカを実行するFluentd DaemonSetをデプロイします。各インスタンスは、ノードの/var/log/containersディレクトリからログを取得し、それをターゲットのOpenSearchデータ・ストリームに書き込みます。Verrazzanoシステム・アプリケーションは、特別な処理を受け取り、ログをverrazzano-systemデータ・ストリームに書き込みます。Verrazzanoアプリケーション・ログは、アプリケーションのネームスペースに基づいてデータ・ストリームにエクスポートされます(verrazzano-application-<application namespace>の形式)。

たとえば、/var/log/containersに書き込まれたopensearch-dashboardsログは、Fluentdによって取得され、OpenSearchに書き込まれます。opensearch-dashboardsはVerrazzanoシステム・アプリケーションであるため、ログはverrazzano-systemデータ・ストリームにエクスポートされます。システム以外のアプリケーションの場合、それがmyappネームスペースにあれば、ログはverrazzano-application-myappデータ・ストリームにエクスポートされます。


Fluentdのカスタマイズ

Fluentd SELinuxコンテキスト・タイプの構成