Configure o servidor de registos central

Siga as instruções nesta secção para configurar o servidor de registos central.

Configure o contentor de armazenamento

  1. Crie um novo contentor de armazenamento para armazenar os registos do dispositivo:

    gcloud storage buckets create gs://BUCKET_NAME
    
  2. Ative a API IAM, se ainda não estiver ativada:

    gcloud services enable iam.googleapis.com
    
  3. Crie uma conta de serviço para aceder ao contentor:

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

Transfira dados do GDC para um contentor de armazenamento

Transfira dados para exportar os dados para contentores de armazenamento.

Copie os gráficos Helm do Grafana e Loki do dispositivo isolado do GDC para um computador local

No programa de arranque do dispositivo isolado por ar da GDC, os gráficos Helm para o Grafana e o Loki encontram-se em RELEASE_DIR/appliance/observability. Copie-os para o computador local no qual está a executar esta configuração:

    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

Configure o Grafana e o Loki num cluster do GKE

  1. Crie um novo cluster do GKE: https://cloud.google.com/sdk/gcloud/reference/container/clusters/create. Se estiver a usar um cluster existente para esta configuração, avance para o passo seguinte.

  2. Instale e configure o kubectl para interagir com o cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl

  3. Ative o Workload Identity no cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster

  4. Siga as instruções em https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#enable para ativar o controlador CSI do Cloud Storage FUSE no seu cluster do GKE.

  5. Siga as instruções em https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#authentication para configurar o acesso a contentores do Cloud Storage através da federação de identidade da força de trabalho do GKE para o GKE. Escolha roles/storage.objectAdmin quando configurar a associação da política de IAM no passo 5.

  6. Siga as instruções em https://cloud.google.com/artifact-registry/docs/repositories/remote-repo para criar um repositório remoto do Artifact Registry que funciona como um proxy para o Dockerhub, o registo externo que contém as imagens de contentores usadas pelos gráficos Helm do Grafana e Loki.

  7. Transfira e descompacte os gráficos Helm do Grafana e Loki:

     tar -xzf WORKING_DIR/grafana.tgz
     tar -xzf WORKING_DIR/loki.tgz
    
  8. Defina os valores do gráfico Helm do Loki em WORKING_DIR/loki/values.yaml.in e instale o gráfico Helm no cluster:

    helm install LOKI_RELEASE_NAME WORKING_DIR/loki --namespace NAMESPACE
    
  9. Defina os valores do gráfico Helm do Grafana em WORKING_DIR/grafana/values.yaml.in e instale o gráfico Helm no cluster:

    helm install GRAFANA_RELEASE_NAME WORKING_DIR/grafana --namespace NAMESPACE
    

    Por exemplo:

      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 
    

Aceda à IU do Grafana

Aceda à IU do Grafana configurando o encaminhamento de portas entre o seu computador e o serviço Grafana a partir do cluster do Kubernetes:

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

Depois de executar o comando anterior, pode aceder à IU do Grafana. Se precisar de expor a IU do Grafana a vários utilizadores na sua organização, considere configurar o GKE Ingress: https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

Exporte registos para armazenamento externo

Por predefinição, a instância do Loki em execução num cluster agrega e armazena todos os registos. No entanto, pode configurar uma saída do Fluent Bit adicional para exportar registos para outros destinos, além dessa instância do Loki no cluster de administrador raiz.

Esta secção contém os passos para configurar um destino adicional para encaminhar e exportar registos para armazenamento externo. Fornece instruções para os seguintes tipos de registos de acordo com o seu exemplo de utilização:

Para ver uma lista completa dos destinos do Fluent Bit suportados, consulte https://docs.fluentbit.io/manual/pipeline/outputs.

Exporte registos operacionais

Siga os passos abaixo para exportar registos operacionais para armazenamento externo:

  1. Crie um objeto ConfigMap no espaço de nomes obs-system com a etiqueta logmon: system_logs. Adicione a configuração de saída adicional no ficheiro output.conf da secção data. Tem de ter a mesma sintaxe que os plug-ins de saída do Fluent Bit.

    Ao criar o objeto ConfigMap, certifique-se de que cumpre os seguintes requisitos:

    • Mantenha o nome que atribui ao objeto ConfigMap, uma vez que tem de corresponder a um valor especificado num passo futuro.
    • Adicione as configurações do plug-in de saída do Fluent Bit personalizadas na secção Bloco de saída do objeto.

    O ficheiro YAML seguinte mostra um modelo do objeto ConfigMap para ilustrar os 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. Abra o ObservabilityPipeline recurso personalizado num editor de linha de comandos:

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

    Substitua ORG_ADMIN_CLUSTER_KUBECONFIG pelo caminho do ficheiro kubeconfig para o cluster de administrador.

  3. No recurso personalizado ObservabilityPipeline, adicione a matriz fluentbitConfigMaps ao campo additionalSinks no campo de registo da secção de especificação. A entrada na matriz fluentbitConfigMaps tem de corresponder ao nome que atribuiu anteriormente ao objeto ConfigMap no passo 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 as alterações ao recurso personalizado ObservabilityPipeline, guarde e saia do editor de linha de comandos.

A conclusão destes passos inicia uma implementação das suas alterações e reinicia o anthos-log-forwarder DaemonSet.

Exporte registos de auditoria

Siga os passos abaixo para exportar registos de auditoria para armazenamento externo:

  1. Crie um objeto ConfigMap no espaço de nomes obs-system com a etiqueta logmon: audit_logs. Adicione a configuração de saída adicional no ficheiro output.conf da secção data. Tem de ter a mesma sintaxe que os plug-ins de saída do Fluent Bit.

    Ao criar o objeto ConfigMap, certifique-se de que cumpre os seguintes requisitos:

    • Mantenha o nome que atribui ao objeto ConfigMap, uma vez que tem de corresponder a um valor especificado num passo futuro.
    • Adicione as configurações do plug-in de saída do Fluent Bit personalizadas na secção Bloco de saída do objeto.

    O ficheiro YAML seguinte mostra um modelo do objeto ConfigMap para ilustrar os 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. Abra o ObservabilityPipeline recurso personalizado num editor de linha de comandos:

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

    Substitua ORG_ADMIN_CLUSTER_KUBECONFIG pelo caminho do ficheiro kubeconfig para o cluster de administrador.

  3. No recurso personalizado ObservabilityPipeline, adicione a matriz fluentbitConfigMaps ao campo additionalSinks no campo de registo da secção de especificação. A entrada na matriz fluentbitConfigMaps tem de corresponder ao nome que atribuiu anteriormente ao objeto ConfigMap no passo 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 as alterações ao recurso personalizado ObservabilityPipeline, guarde e saia do editor de linha de comandos.

A conclusão destes passos inicia uma implementação das suas alterações e reinicia o anthos-log-forwarder DaemonSet.