このセクションの手順に沿って、中央ログサーバーを設定します。
Storage バケットを設定する
アプライアンス ログを保存する新しいストレージ バケットを作成します。
gcloud storage buckets create gs://BUCKET_NAME
IAM API が有効になっていない場合は、有効にします。
gcloud services enable iam.googleapis.com
バケットにアクセスするためのサービス アカウントを作成します。
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 を設定する
新しい GKE クラスタを作成します。https://cloud.google.com/sdk/gcloud/reference/container/clusters/create をご覧ください。この設定に既存のクラスタを使用する場合は、次の手順に進みます。
クラスタを操作するように kubectl をインストールして構成します。https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl
クラスタで Workload Identity を有効にします。https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster
https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#enable に沿って、GKE クラスタで Cloud Storage FUSE CSI ドライバを有効にします。
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
を選択します。https://cloud.google.com/artifact-registry/docs/repositories/remote-repo に沿って、Artifact Registry のリモート リポジトリを作成します。これは、Grafana と Loki の Helm チャートで使用されるコンテナ イメージを含む外部レジストリである Dockerhub のプロキシとして機能します。
Grafana と Loki の Helm チャートをダウンロードして解凍します。
tar -xzf WORKING_DIR/grafana.tgz tar -xzf WORKING_DIR/loki.tgz
WORKING_DIR/loki/values.yaml.in で Loki Helm チャートの値を設定し、クラスタに Helm チャートをインストールします。
helm install LOKI_RELEASE_NAME WORKING_DIR/loki --namespace NAMESPACE
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 をご覧ください。
オペレーション ログをエクスポートする
オペレーション ログを外部ストレージにエクスポートする手順は次のとおりです。
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
コマンドライン エディタで
ObservabilityPipeline
カスタム リソースを開きます。kubectl --kubeconfig=ROOT_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
ORG_ADMIN_CLUSTER_KUBECONFIG は、管理クラスタ用 kubeconfig ファイルのパスに置き換えます。
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: - ... - ...
ObservabilityPipeline
カスタム リソースに対する変更を適用するには、保存してコマンドライン エディタを終了します。
これらの手順を完了すると、変更のロールアウトが開始され、anthos-log-forwarder
DaemonSet が再起動されます。
監査ログのエクスポート
監査ログを外部ストレージにエクスポートする手順は次のとおりです。
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
コマンドライン エディタで
ObservabilityPipeline
カスタム リソースを開きます。kubectl --kubeconfig=ORG_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
ORG_ADMIN_CLUSTER_KUBECONFIG は、管理クラスタ用 kubeconfig ファイルのパスに置き換えます。
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:
ObservabilityPipeline
カスタム リソースに対する変更を適用するには、保存してコマンドライン エディタを終了します。
これらの手順を完了すると、変更のロールアウトが開始され、anthos-log-forwarder
DaemonSet が再起動されます。