中央ログサーバーを設定する

このセクションの手順に沿って、中央ログサーバーを設定します。

Storage バケットを設定する

  1. アプライアンス ログを保存する新しいストレージ バケットを作成します。

    gcloud storage buckets create gs://BUCKET_NAME
    
  2. IAM API が有効になっていない場合は、有効にします。

    gcloud services enable iam.googleapis.com
    
  3. バケットにアクセスするためのサービス アカウントを作成します。

    gcloud iam service-accounts create GSA_NAME --description="DESCRIPTION" --display-name="DISPLAY_NAME"
    

GDC からストレージ バケットにデータを転送する

[データを転送] をクリックして、データをストレージ バケットにエクスポートします。

Grafana と Loki の Helm チャートを GDC のエアギャップ アプライアンスからローカル コンピュータにコピーする

GDC エアギャップ アプライアンスのブートストラップでは、Grafana と Loki の Helm チャートは RELEASE_DIR/appliance/observability にあります。このセットアップを実行しているローカル コンピュータにコピーします。

    scp
    USERNAME@BOOTSTRAPPER:/RELEASE_DIR/appliance/observability/grafana.tgz WORKING_DIR/grafana.tgz

    scp
    USERNAME@BOOTSTRAPPER:/RELEASE_DIR/appliance/observability/loki.tgz WORKING_DIR/loki.tgz

GKE クラスタに Grafana と Loki を設定する

  1. 新しい GKE クラスタを作成します。https://cloud.google.com/sdk/gcloud/reference/container/clusters/create をご覧ください。この設定に既存のクラスタを使用する場合は、次の手順に進みます。

  2. クラスタを操作するように kubectl をインストールして構成します。https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl

  3. クラスタで Workload Identity を有効にします。https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster

  4. https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#enable に沿って、GKE クラスタで Cloud Storage FUSE CSI ドライバを有効にします。

  5. https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#authentication に沿って、GKE 用 Workload Identity 連携を使用して Cloud Storage バケットへのアクセスを構成します。ステップ 5 で IAM ポリシー バインディングを設定するときに、roles/storage.objectAdmin を選択します。

  6. https://cloud.google.com/artifact-registry/docs/repositories/remote-repo に沿って、Artifact Registry のリモート リポジトリを作成します。これは、Grafana と Loki の Helm チャートで使用されるコンテナ イメージを含む外部レジストリである Dockerhub のプロキシとして機能します。

  7. Grafana と Loki の Helm チャートをダウンロードして解凍します。

     tar -xzf WORKING_DIR/grafana.tgz
     tar -xzf WORKING_DIR/loki.tgz
    
  8. WORKING_DIR/loki/values.yaml.in で Loki Helm チャートの値を設定し、クラスタに Helm チャートをインストールします。

    helm install LOKI_RELEASE_NAME WORKING_DIR/loki --namespace NAMESPACE
    
  9. WORKING_DIR/grafana/values.yaml.in で Grafana Helm チャートの値を設定し、クラスタに Helm チャートをインストールします。

    helm install GRAFANA_RELEASE_NAME WORKING_DIR/grafana --namespace NAMESPACE
    

    次に例を示します。

      app:
        # name is the name that will used for creating kubernetes resources
        # like deployment, service, etc. associated with this grafana app.
        name: grafana
        # artifactRegistryRepository is the full name of the artifact registry remote
        # repository that proxies dockerhub.
        artifactRegistryRepository: us-east1-docker.pkg.dev/my-gcp-project/dockerhub
        loki:
        # serviceName is the name of the kubernetes service that exposes
        # the loki server.
        serviceName: loki
        # serviceNamespace is the namespace in which the loki service is present
        serviceNamespace: my-loki-namespace
        # tenantID is the tenant ID of the logs.
        tenantID: infra-obs 
    

Grafana UI にアクセスする

コンピュータと Kubernetes クラスタの Grafana サービス間のポート転送を設定して、Grafana UI にアクセスします。

kubectl port-forward service/GRAFANA_APP_NAME
-n NAMESPACE 3000:3000

上記のコマンドを実行すると、Grafana UI にアクセスできます。組織内の複数のユーザーに Grafana UI を公開する必要がある場合は、GKE Ingress の設定をご検討ください。https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

ログを外部ストレージにエクスポートする

デフォルトでは、クラスタで実行されている Loki インスタンスはすべてのログを集約して保存します。ただし、追加の Fluent Bit 出力を構成して、ルート管理者クラスタの Loki インスタンス以外の宛先にログをエクスポートできます。

このセクションでは、ログを外部ストレージに転送してエクスポートするための追加のシンクを構成する手順について説明します。ユースケースに応じて、次のログタイプの手順が提供されます。

サポートされている Fluent Bit の宛先の完全なリストについては、https://docs.fluentbit.io/manual/pipeline/outputs をご覧ください。

オペレーション ログをエクスポートする

オペレーション ログを外部ストレージにエクスポートする手順は次のとおりです。

  1. logmon: system_logs ラベルを使用して、obs-system Namespace に ConfigMap オブジェクトを作成します。data セクションの output.conf ファイルに追加の出力構成を追加します。Fluent Bit 出力プラグインと同じ構文にする必要があります。

    ConfigMap オブジェクトを作成する際は、次の要件を満たしていることを確認してください。

    • ConfigMap オブジェクトに割り当てる名前は、後の手順で指定する値と一致する必要があるため、そのままにします。
    • カスタマイズした Fluent Bit 出力プラグインの構成をオブジェクトの Output ブロック セクションに追加します。

    次の YAML ファイルは、上記の要件を示す ConfigMap オブジェクトのテンプレートを示しています。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      # The name should match the configmap name specified in step 3.
      name: <descriptive configmap name>
      namespace: obs-system
      labels:
        # This label is required and must be system_logs for system logs
        logmon: system_logs
    data:
      # The file name must be output.conf
    output.conf: 
      # ===== Output block =====
        ### Add customized fluent-bit output plugin configurations here
    
  2. コマンドライン エディタで ObservabilityPipeline カスタム リソースを開きます。

    kubectl --kubeconfig=ROOT_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
    

    ORG_ADMIN_CLUSTER_KUBECONFIG は、管理クラスタ用 kubeconfig ファイルのパスに置き換えます。

  3. ObservabilityPipeline カスタム リソースで、fluentbitConfigMaps 配列を additionalSinks フィールドに追加して、spec セクションのロギング フィールドにします。fluentbitConfigMaps 配列のエントリは、手順 1 で ConfigMap オブジェクトに割り当てた名前と一致する必要があります。

    apiVersion: observability.gdc.goog/v1alpha1
    kind: ObservabilityPipeline
    metadata:
      # Don't change anything in this section
      ...
    spec:
      logging:
        # This section is for system logs and only needs to be edited if system logs have a custom output. 
        additionalSink:
          fluentbitConfigMaps:
          # The name should match the configmap name created in step 1.
          - "<system logs output configmap name>"
          # Scheme: []v1.VolumeMount. Add volumeMounts if necessary
          volumeMounts:
          - ...
          - ...
          # Scheme: []v1.Volume. Add volumes if necessary
          volumes:
          - ...
          - ...
    
  4. ObservabilityPipeline カスタム リソースに対する変更を適用するには、保存してコマンドライン エディタを終了します。

これらの手順を完了すると、変更のロールアウトが開始され、anthos-log-forwarder DaemonSet が再起動されます。

監査ログのエクスポート

監査ログを外部ストレージにエクスポートする手順は次のとおりです。

  1. logmon: audit_logs ラベルを使用して、obs-system Namespace に ConfigMap オブジェクトを作成します。data セクションの output.conf ファイルに追加の出力構成を追加します。Fluent Bit 出力プラグインと同じ構文にする必要があります。

    ConfigMap オブジェクトを作成する際は、次の要件を満たしていることを確認してください。

    • ConfigMap オブジェクトに割り当てる名前は、後の手順で指定する値と一致する必要があるため、そのままにします。
    • カスタマイズした Fluent Bit 出力プラグインの構成をオブジェクトの Output ブロック セクションに追加します。

    次の YAML ファイルは、上記の要件を示す ConfigMap オブジェクトのテンプレートを示しています。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      # The name should match the configmap name specified in step 3.
      name: <descriptive configmap name>
      namespace: obs-system
      labels:
        # This label is required and must be audit_logs for audit logs
        logmon: audit_logs
    data:
      # The file name must be output.conf
      output.conf: |
        # ===== Output block =====
        ### Add a customized fluent-bit output plugin configuration here
    
    
  2. コマンドライン エディタで ObservabilityPipeline カスタム リソースを開きます。

    kubectl --kubeconfig=ORG_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
    

    ORG_ADMIN_CLUSTER_KUBECONFIG は、管理クラスタ用 kubeconfig ファイルのパスに置き換えます。

  3. ObservabilityPipeline カスタム リソースで、fluentbitConfigMaps 配列を additionalSinks フィールドに追加して、spec セクションのロギング フィールドにします。fluentbitConfigMaps 配列のエントリは、手順 1 で ConfigMap オブジェクトに割り当てた名前と一致する必要があります。

    apiVersion: observability.gdc.goog/v1alpha1
    kind: ObservabilityPipeline
    metadata:
      # Don't change anything in this section
      ...
    spec:
      auditLogging:
        # This section is for audit logs and only needs to be edited if audit logs have a custom output.
        additionalSink:
          fluentbitConfigMaps:
          # The name should match the configmap name created in step 1.
          - "<audit logs output configmap name>"
          # Scheme: []v1.VolumeMount. Add volumeMounts if necessary
          volumeMounts:
          - ...
          - ...
          # Scheme: []v1.Volume. Add volumes if necessary
          volumes:
    
  4. ObservabilityPipeline カスタム リソースに対する変更を適用するには、保存してコマンドライン エディタを終了します。

これらの手順を完了すると、変更のロールアウトが開始され、anthos-log-forwarder DaemonSet が再起動されます。