6.3.3. ログ転送 API を使用したログ転送の設定

ログ転送を設定するには、クラスターロギングの ClusterLogging (CR) を編集して、clusterlogging.openshift.io/logforwardingtechpreview: enabled アノテーションを追加し、LogForwarding カスタムリソースを作成して出力、パイプラインを指定し、ログ転送を有効にします。

ログ転送を有効にする場合、次の 3 つのソースタイプのすべててのパイプラインを定義する必要があります (logs.applogs.infra、および logs.audit)。未定義のソースタイプのログはすべてドロップされます。たとえば、logs.app および log-audit タイプのパイプラインを指定するものの、logs.infra タイプのパイプラインを指定していない場合、logs.infra ログがドロップされます。

手順

API を使用してログ転送を設定するには、以下を実行します。

  1. 以下のような LogForwarding CR YAML ファイルを作成します。

    apiVersion: "logging.openshift.io/v1alpha1"
    kind: "LogForwarding"
    metadata:
      name: instance 1
      namespace: openshift-logging 2
    spec:
      disableDefaultForwarding: true 3
      outputs: 4
       - name: elasticsearch
         type: "elasticsearch"
         endpoint: elasticsearch.openshift-logging.svc:9200
         secret:
            name: fluentd
       - name: elasticsearch-insecure
         type: "elasticsearch"
         endpoint: elasticsearch-insecure.messaging.svc.cluster.local
         insecure: true
       - name: secureforward-offcluster
         type: "forward"
         endpoint: https://secureforward.offcluster.com:24224
         secret:
            name: secureforward
      pipelines: 5
       - name: container-logs
         inputSource: logs.app
         outputRefs:
         - elasticsearch
         - secureforward-offcluster
       - name: infra-logs
         inputSource: logs.infra
         outputRefs:
         - elasticsearch-insecure
       - name: audit-logs
         inputSource: logs.audit
         outputRefs:
         - secureforward-offcluster
    1
    ログ転送 CR の名前は instance である必要があります。
    2
    ログ転送 CR の namespace は openshift-logging である必要があります。
    3
    true に設定されると、デフォルトのログ転送動作が無効になります。
    4
    1 つ以上のエンドポイントを追加するには、以下を実行します。
    • elasticsearch または forward のいずれかの出力タイプを指定します。
    • 出力の名前を入力します。
    • サーバー名、FQDN、または IP アドレスのいずれかのエンドポイントを入力します。CIDR アノテーションを使用するクラスター全体のプロキシーが有効になっている場合、エンドポイントは IP アドレスではなくサーバー名または FQDN である必要があります。内部 OpenShift Container Platform Elasticsearch インスタンスの場合は、elasticsearch.openshift-logging.svc:9200 を指定します。
    • オプション: TLS 通信のエンドポイントに必要なシークレットの名前を入力します。シークレットは openshift-logging プロジェクトに存在する必要があります。
    • エンドポイントがシークレットを使用しない場合に insecure: true を指定します (これにより、非セキュアな通信が発生します)。
    5
    1 つ以上のパイプラインを追加します。
    • パイプラインの名前を入力します。
    • ソースタイプ (logs.applogs.infra、または logs.audit) を指定します。
    • CR に設定された 1 つ以上の出力の名前を指定します。

      注記

      disableDefaultForwarding: true を設定する場合、アプリケーション、インフラストラクチャーおよび監査の 3 つの種類のログすべてのパイプラインおよび出力を設定する必要があります。ログの種類に対応するパイプラインおよび出力を指定しない場合、それらのログは保存されず、失われます。

  2. CR オブジェクトを作成します。

    $ oc create -f <file-name>.yaml

6.3.3.1. ログ転送カスタムリソースのサンプル

通常のログ転送設定は以下の例のようになります。

以下のログ転送カスタムリソースは、すべてのログをセキュアな Elasticsearch ログストアに送信します。

Elasticsearch ログストアに転送するカスタムリソースのサンプル

apiVersion: logging.openshift.io/v1alpha1
kind: LogForwarding
metadata:
  name: instance
  namespace: openshift-logging
spec:
  disableDefaultForwarding: true
  outputs:
    - name: user-created-es
      type: elasticsearch
      endpoint: 'elasticsearch-server.openshift-logging.svc:9200'
      secret:
        name: piplinesecret
  pipelines:
    - name: app-pipeline
      inputSource: logs.app
      outputRefs:
        - user-created-es
    - name: infra-pipeline
      inputSource: logs.infra
      outputRefs:
        - user-created-es
    - name: audit-pipeline
      inputSource: logs.audit
      outputRefs:
        - user-created-es

以下のログ転送カスタムリソースは、Fluentd forward プロトコルを使用してすべてのログをセキュアな Fluentd インスタンスに送信します。

forward プロトコルを使用するためのサンプルカスタムリソース

apiVersion: logging.openshift.io/v1alpha1
kind: LogForwarding
metadata:
  name: instance
  namespace: openshift-logging
spec:
  disableDefaultForwarding: true
  outputs:
    - name: fluentd-created-by-user
      type: forward
      endpoint: 'fluentdserver.openshift-logging.svc:24224'
      secret:
        name: fluentdserver
  pipelines:
    - name: app-pipeline
      inputSource: logs.app
      outputRefs:
        - fluentd-created-by-user
    - name: infra-pipeline
      inputSource: logs.infra
      outputRefs:
        - fluentd-created-by-user
    - name: clo-default-audit-pipeline
      inputSource: logs.audit
      outputRefs:
        - fluentd-created-by-user