Configura el servidor de registros centralizados

Sigue las instrucciones de esta sección para configurar tu servidor de registros central.

Configura un bucket de almacenamiento

  1. Crea un bucket de almacenamiento nuevo para almacenar los registros del dispositivo:

    gcloud storage buckets create gs://BUCKET_NAME
    
  2. Habilita la API de IAM si aún no lo hiciste:

    gcloud services enable iam.googleapis.com
    
  3. Crea una cuenta de servicio para acceder al bucket:

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

Transfiere datos del GDC a un bucket de almacenamiento

Transfer data para exportar los datos a buckets de almacenamiento

Copia los gráficos de Helm de Grafana y Loki del dispositivo aislado de GDC a una computadora local

En el programa de arranque del dispositivo aislado de GDC, los gráficos de Helm para Grafana y Loki se encuentran en RELEASE_DIR/appliance/observability. Cópialos en la computadora local en la que ejecutas esta configuración:

    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

Configura Grafana y Loki en un clúster de GKE

  1. Crea un clúster de GKE nuevo: https://cloud.google.com/sdk/gcloud/reference/container/clusters/create. Si usas un clúster existente para esta configuración, continúa con el siguiente paso.

  2. Instala y configura kubectl para interactuar con el clúster: https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl

  3. Habilita Workload Identity en el clúster: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster

  4. Sigue las instrucciones en https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#enable para habilitar el controlador de CSI de Cloud Storage FUSE en tu clúster de GKE.

  5. Sigue los pasos que se indican en https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#authentication para configurar el acceso a los buckets de Cloud Storage con la federación de identidades para cargas de trabajo de GKE para GKE. Elige roles/storage.objectAdmin cuando configures la vinculación de políticas de IAM en el paso 5.

  6. Sigue los pasos que se indican en https://cloud.google.com/artifact-registry/docs/repositories/remote-repo para crear un repositorio remoto de Artifact Registry que actuará como proxy para Dockerhub, el registro externo que contiene las imágenes de contenedor que usan los gráficos de Helm de Grafana y Loki.

  7. Descarga y descomprime los gráficos de Helm de Grafana y Loki:

     tar -xzf WORKING_DIR/grafana.tgz
     tar -xzf WORKING_DIR/loki.tgz
    
  8. Establece los valores del gráfico de Helm de Loki en WORKING_DIR/loki/values.yaml.in y, luego, instala el gráfico de Helm en el clúster:

    helm install LOKI_RELEASE_NAME WORKING_DIR/loki --namespace NAMESPACE
    
  9. Establece los valores del gráfico de Helm de Grafana en WORKING_DIR/grafana/values.yaml.in y, luego, instala el gráfico de Helm en el clúster:

    helm install GRAFANA_RELEASE_NAME WORKING_DIR/grafana --namespace NAMESPACE
    

    Por ejemplo:

      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 
    

Accede a la IU de Grafana

Accede a la IU de Grafana configurando la redirección de puertos entre tu computadora y el servicio de Grafana desde el clúster de Kubernetes:

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

Después de ejecutar el comando anterior, puedes acceder a la IU de Grafana. Si necesitas exponer la IU de Grafana a varios usuarios de tu organización, considera configurar la entrada de GKE: https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

Exporta registros al almacenamiento externo

De forma predeterminada, la instancia de Loki que se ejecuta en un clúster agrega y almacena todos los registros. Sin embargo, puedes configurar una salida adicional de Fluent Bit para exportar registros a otros destinos, además de esa instancia de Loki en el clúster de administrador raíz.

En esta sección, se incluyen los pasos para configurar un receptor adicional para enrutar y exportar registros al almacenamiento externo. Proporciona instrucciones para los siguientes tipos de registros según tu caso de uso:

Para obtener una lista completa de los destinos de Fluent Bit admitidos, consulta https://docs.fluentbit.io/manual/pipeline/outputs.

Exporta registros operativos

Sigue estos pasos para exportar registros operativos al almacenamiento externo:

  1. Crea un objeto ConfigMap en el espacio de nombres obs-system con la etiqueta logmon: system_logs. Agrega la configuración de salida adicional en el archivo output.conf de la sección data. Debe tener la misma sintaxis que los complementos de salida de Fluent Bit.

    Cuando crees el objeto ConfigMap, asegúrate de cumplir con los siguientes requisitos:

    • Conserva el nombre que asignes al objeto ConfigMap, ya que debe coincidir con un valor especificado en un paso futuro.
    • Agrega la configuración personalizada del complemento de salida de Fluent Bit en la sección Bloque de salida del objeto.

    En el siguiente archivo YAML, se muestra una plantilla del objeto ConfigMap para ilustrar los requisitos anteriores.

    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. Abre tu recurso personalizado de ObservabilityPipeline en un editor de línea de comandos:

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

    Reemplaza ORG_ADMIN_CLUSTER_KUBECONFIG por la ruta de acceso del archivo kubeconfig del clúster de administrador.

  3. En el recurso personalizado de ObservabilityPipeline, agrega el array fluentbitConfigMaps al campo additionalSinks en el campo de registro de la sección de especificaciones. La entrada en el array fluentbitConfigMaps debe coincidir con el nombre que asignaste anteriormente al objeto ConfigMap en el paso 1.

    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. Para aplicar los cambios al recurso personalizado de ObservabilityPipeline, guarda el editor de línea de comandos y sal de él.

Completar estos pasos inicia el lanzamiento de tus cambios y reinicia el DaemonSet anthos-log-forwarder.

Exporta registros de auditoría

Sigue estos pasos para exportar registros de auditoría a un almacenamiento externo:

  1. Crea un objeto ConfigMap en el espacio de nombres obs-system con la etiqueta logmon: audit_logs. Agrega la configuración de salida adicional en el archivo output.conf de la sección data. Debe tener la misma sintaxis que los complementos de salida de Fluent Bit.

    Cuando crees el objeto ConfigMap, asegúrate de cumplir con los siguientes requisitos:

    • Conserva el nombre que asignes al objeto ConfigMap, ya que debe coincidir con un valor especificado en un paso futuro.
    • Agrega la configuración personalizada del complemento de salida de Fluent Bit en la sección Bloque de salida del objeto.

    En el siguiente archivo YAML, se muestra una plantilla del objeto ConfigMap para ilustrar los requisitos anteriores.

    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. Abre tu recurso personalizado de ObservabilityPipeline en un editor de línea de comandos:

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

    Reemplaza ORG_ADMIN_CLUSTER_KUBECONFIG por la ruta de acceso del archivo kubeconfig del clúster de administrador.

  3. En el recurso personalizado de ObservabilityPipeline, agrega el array fluentbitConfigMaps al campo additionalSinks en el campo de registro de la sección de especificaciones. La entrada en el array fluentbitConfigMaps debe coincidir con el nombre que asignaste anteriormente al objeto ConfigMap en el paso 1.

    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. Para aplicar los cambios al recurso personalizado de ObservabilityPipeline, guarda el editor de línea de comandos y sal de él.

Completar estos pasos inicia el lanzamiento de tus cambios y reinicia el DaemonSet anthos-log-forwarder.