Configurar o servidor de registros centralizados

Siga as instruções nesta seção para configurar o servidor de registros central.

Configurar bucket de armazenamento

  1. Crie um bucket de armazenamento para armazenar os registros do appliance:

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

    gcloud services enable iam.googleapis.com
    
  3. Crie uma conta de serviço para acessar o bucket:

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

Transferir dados do GDC para um bucket de armazenamento

Transfira dados para exportar os dados para buckets de armazenamento.

Copiar gráficos do Helm do Grafana e do Loki do appliance isolado do GDC para um computador local

No bootstrap do appliance com isolamento físico do GDC, os gráficos do Helm para Grafana e Loki estão localizados em RELEASE_DIR/appliance/observability. Copie-os para o computador local em que você está executando 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

Configurar o Grafana e o Loki em um cluster do GKE

  1. Crie um cluster do GKE: https://cloud.google.com/sdk/gcloud/reference/container/clusters/create. Se você estiver usando um cluster para esta configuração, siga para a próxima etapa.

  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 a Identidade da carga de trabalho no cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster

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

  5. Siga https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#authentication para configurar o acesso aos buckets do Cloud Storage usando a Federação de Identidade da Carga de Trabalho para GKE. Escolha roles/storage.objectAdmin ao configurar a vinculação de política do IAM na etapa 5.

  6. Siga https://cloud.google.com/artifact-registry/docs/repositories/remote-repo para criar um repositório remoto do Artifact Registry que vai atuar como um proxy para o Dockerhub, o registro externo que contém as imagens de contêiner usadas pelos gráficos do Helm do Grafana e do Loki.

  7. Faça o download e descompacte os gráficos do Helm do Grafana e do 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 do Helm do Grafana em WORKING_DIR/grafana/values.yaml.in e instale o gráfico do Helm no cluster:

    helm install GRAFANA_RELEASE_NAME WORKING_DIR/grafana --namespace NAMESPACE
    

    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 
    

Acessar a interface do Grafana

Acesse a interface do Grafana configurando o encaminhamento de portas entre seu computador e o serviço do Grafana no cluster do Kubernetes:

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

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

Exportar registros para armazenamento externo

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

Esta seção contém as etapas para configurar um gravador adicional e exportar registros para um armazenamento externo. Ele fornece instruções para os seguintes tipos de registros de acordo com seu caso de uso:

Para conferir uma lista completa dos destinos compatíveis com o Fluent Bit, acesse https://docs.fluentbit.io/manual/pipeline/outputs.

Exportar registros operacionais

Siga estas etapas para exportar registros operacionais para um armazenamento externo:

  1. Crie um objeto ConfigMap no namespace obs-system com o rótulo logmon: system_logs. Adicione a configuração de saída extra no arquivo output.conf da seção data. Ela precisa ter a mesma sintaxe dos plug-ins de saída do Fluent Bit.

    Ao criar o objeto ConfigMap, verifique se você atende aos seguintes requisitos:

    • Mantenha o nome atribuído ao objeto ConfigMap porque ele precisa corresponder a um valor especificado em uma etapa futura.
    • Adicione as configurações personalizadas do plug-in de saída do Fluent Bit na seção Bloco de saída do objeto.

    O arquivo YAML a seguir 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 recurso personalizado ObservabilityPipeline em um editor de linha de comando:

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

    Substitua ORG_ADMIN_CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de administrador.

  3. No recurso personalizado ObservabilityPipeline, adicione a matriz fluentbitConfigMaps ao campo additionalSinks na seção "spec". A entrada na matriz fluentbitConfigMaps precisa corresponder ao nome atribuído ao objeto ConfigMap na etapa 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 mudanças ao recurso personalizado ObservabilityPipeline, salve e saia do editor de linha de comando.

Concluir essas etapas inicia um lançamento das suas mudanças e reinicia o DaemonSet anthos-log-forwarder.

Exporte os registros de auditoria

Siga estas etapas para exportar registros de auditoria para um armazenamento externo:

  1. Crie um objeto ConfigMap no namespace obs-system com o rótulo logmon: audit_logs. Adicione a configuração de saída extra no arquivo output.conf da seção data. Ela precisa ter a mesma sintaxe dos plug-ins de saída do Fluent Bit.

    Ao criar o objeto ConfigMap, verifique se você atende aos seguintes requisitos:

    • Mantenha o nome atribuído ao objeto ConfigMap porque ele precisa corresponder a um valor especificado em uma etapa futura.
    • Adicione as configurações personalizadas do plug-in de saída do Fluent Bit na seção Bloco de saída do objeto.

    O arquivo YAML a seguir 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 recurso personalizado ObservabilityPipeline em um editor de linha de comando:

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

    Substitua ORG_ADMIN_CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de administrador.

  3. No recurso personalizado ObservabilityPipeline, adicione a matriz fluentbitConfigMaps ao campo additionalSinks na seção "spec". A entrada na matriz fluentbitConfigMaps precisa corresponder ao nome atribuído ao objeto ConfigMap na etapa 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 mudanças ao recurso personalizado ObservabilityPipeline, salve e saia do editor de linha de comando.

Concluir essas etapas inicia um lançamento das suas mudanças e reinicia o DaemonSet anthos-log-forwarder.