Sigue las instrucciones de esta sección para configurar tu servidor de registros central.
Configura un bucket de almacenamiento
Crea un bucket de almacenamiento nuevo para almacenar los registros del dispositivo:
gcloud storage buckets create gs://BUCKET_NAME
Habilita la API de IAM si aún no lo hiciste:
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"
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
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.
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 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.
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.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.
Descarga y descomprime los gráficos de Helm de Grafana y Loki:
tar -xzf WORKING_DIR/grafana.tgz tar -xzf WORKING_DIR/loki.tgz
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
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:
Crea un objeto
ConfigMap
en el espacio de nombresobs-system
con la etiquetalogmon: system_logs
. Agrega la configuración de salida adicional en el archivooutput.conf
de la seccióndata
. 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
- Conserva el nombre que asignes al objeto
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.
En el recurso personalizado de
ObservabilityPipeline
, agrega el arrayfluentbitConfigMaps
al campoadditionalSinks
en el campo de registro de la sección de especificaciones. La entrada en el arrayfluentbitConfigMaps
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: - ... - ...
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:
Crea un objeto
ConfigMap
en el espacio de nombresobs-system
con la etiquetalogmon: audit_logs
. Agrega la configuración de salida adicional en el archivooutput.conf
de la seccióndata
. 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
- Conserva el nombre que asignes al objeto
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.
En el recurso personalizado de
ObservabilityPipeline
, agrega el arrayfluentbitConfigMaps
al campoadditionalSinks
en el campo de registro de la sección de especificaciones. La entrada en el arrayfluentbitConfigMaps
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:
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
.