Siga las instrucciones de esta sección para configurar su servidor de registros central.
Configurar un segmento de almacenamiento
Crea un segmento de almacenamiento para guardar los registros del dispositivo:
gcloud storage buckets create gs://BUCKET_NAME
Habilita la API IAM si aún no lo has hecho:
gcloud services enable iam.googleapis.com
Crea una cuenta de servicio para acceder al bucket:
gcloud iam service-accounts create GSA_NAME --description="DESCRIPTION" --display-name="DISPLAY_NAME"
Transferir datos de GDC a un segmento de almacenamiento
Transferir datos para exportar los datos a los segmentos de almacenamiento.
Copiar los gráficos de Helm de Grafana y Loki del dispositivo aislado de GDC a un ordenador local
En el bootstrapper del dispositivo GDC con air gap, los gráficos de Helm de Grafana y Loki se encuentran en RELEASE_DIR/appliance/observability
. Cópialos en el ordenador local en el que estés ejecutando 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
Configurar Grafana y Loki en un clúster de GKE
Crea un clúster de GKE: https://cloud.google.com/sdk/gcloud/reference/container/clusters/create. Si vas a usar un clúster que ya tengas para esta configuración, ve al siguiente paso.
Instala y configura kubectl para interactuar con el clúster: https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl
Habilita Workload Identity en el clúster: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster
Sigue las instrucciones de 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.
Sigue las instrucciones de https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#authentication para configurar el acceso a los contenedores de Cloud Storage mediante Workload Identity Federation for GKE. Elige
roles/storage.objectAdmin
al configurar el enlace de la política de gestión de identidades y accesos en el paso 5.Sigue las instrucciones de https://cloud.google.com/artifact-registry/docs/repositories/remote-repo para crear un repositorio remoto de Artifact Registry que actúe como proxy de Docker Hub, el registro externo que contiene las imágenes de contenedor que usan los gráficos de Helm de Grafana y Loki.
Descarga y descomprime los gráficos de Helm de Grafana y Loki:
tar -xzf WORKING_DIR/grafana.tgz tar -xzf WORKING_DIR/loki.tgz
Defina los valores del gráfico de Helm de Loki en WORKING_DIR/loki/values.yaml.in e instale el gráfico de Helm en el clúster:
helm install LOKI_RELEASE_NAME WORKING_DIR/loki --namespace NAMESPACE
Defina los valores del gráfico de Helm de Grafana en WORKING_DIR/grafana/values.yaml.in y instale 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
Acceder a la interfaz de usuario de Grafana
Accede a la interfaz de usuario de Grafana configurando el reenvío de puertos entre tu ordenador y el servicio de Grafana del 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 interfaz de usuario de Grafana. Si necesitas exponer la interfaz de usuario de Grafana a varios usuarios de tu organización, te recomendamos que configures GKE Ingress: https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer.
Exportar registros a un 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 indican los pasos para configurar un sumidero adicional que enrute y exporte registros a un almacenamiento externo. Proporciona instrucciones para los siguientes tipos de registros en función de su caso práctico:
Para ver una lista completa de los destinos de Fluent Bit admitidos, consulta https://docs.fluentbit.io/manual/pipeline/outputs.
Exportar registros operativos
Sigue estos pasos para exportar los registros operativos a un almacenamiento externo:
Crea un objeto
ConfigMap
en el espacio de nombresobs-system
con la etiquetalogmon: system_logs
. Añada la configuración de salida adicional en el archivooutput.conf
de la seccióndata
. Debe tener la misma sintaxis que los plugins de salida de Fluent Bit.Cuando crees el objeto
ConfigMap
, asegúrate de cumplir los siguientes requisitos:- Conserva el nombre que asignes al objeto
ConfigMap
, ya que debe coincidir con un valor especificado en un paso posterior. - Añada las configuraciones personalizadas 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
- Conserva el nombre que asignes al objeto
Abre tu
ObservabilityPipeline
recurso personalizado en un editor de línea de comandos:kubectl --kubeconfig=ROOT_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
Sustituye ORG_ADMIN_CLUSTER_KUBECONFIG por la ruta del archivo kubeconfig del clúster de administrador.
En el recurso personalizado
ObservabilityPipeline
, añade el arrayfluentbitConfigMaps
al campoadditionalSinks
del campo de registro de la sección spec. La entrada de la matrizfluentbitConfigMaps
debe coincidir con el nombre que hayas asignado 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: - ... - ...
Para aplicar los cambios al recurso personalizado
ObservabilityPipeline
, guarda y cierra el editor de línea de comandos.
Al completar estos pasos, se iniciará la implementación de los cambios y se reiniciará el anthos-log-forwarder
DaemonSet.
Exportar registros de auditoría
Sigue estos pasos para exportar los registros de auditoría a un almacenamiento externo:
Crea un objeto
ConfigMap
en el espacio de nombresobs-system
con la etiquetalogmon: audit_logs
. Añada la configuración de salida adicional en el archivooutput.conf
de la seccióndata
. Debe tener la misma sintaxis que los plugins de salida de Fluent Bit.Cuando crees el objeto
ConfigMap
, asegúrate de cumplir los siguientes requisitos:- Conserva el nombre que asignes al objeto
ConfigMap
, ya que debe coincidir con un valor especificado en un paso posterior. - Añada las configuraciones personalizadas 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
- Conserva el nombre que asignes al objeto
Abre tu
ObservabilityPipeline
recurso personalizado en un editor de línea de comandos:kubectl --kubeconfig=ORG_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
Sustituye ORG_ADMIN_CLUSTER_KUBECONFIG por la ruta del archivo kubeconfig del clúster de administrador.
En el recurso personalizado
ObservabilityPipeline
, añade el arrayfluentbitConfigMaps
al campoadditionalSinks
del campo de registro de la sección spec. La entrada de la matrizfluentbitConfigMaps
debe coincidir con el nombre que hayas asignado 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:
Para aplicar los cambios al recurso personalizado
ObservabilityPipeline
, guarda y cierra el editor de línea de comandos.
Al completar estos pasos, se iniciará la implementación de los cambios y se reiniciará el anthos-log-forwarder
DaemonSet.