Siga as instruções nesta secção para configurar o servidor de registos central.
Configure o contentor de armazenamento
Crie um novo contentor de armazenamento para armazenar os registos do dispositivo:
gcloud storage buckets create gs://BUCKET_NAME
Ative a API IAM, se ainda não estiver ativada:
gcloud services enable iam.googleapis.com
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
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.
Instale e configure o kubectl para interagir com o cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl
Ative o Workload Identity no cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster
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.
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.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.
Transfira e descompacte os gráficos Helm do Grafana e Loki:
tar -xzf WORKING_DIR/grafana.tgz tar -xzf WORKING_DIR/loki.tgz
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
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:
Crie um objeto
ConfigMap
no espaço de nomesobs-system
com a etiquetalogmon: system_logs
. Adicione a configuração de saída adicional no ficheirooutput.conf
da secçãodata
. 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
- Mantenha o nome que atribui ao objeto
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.
No recurso personalizado
ObservabilityPipeline
, adicione a matrizfluentbitConfigMaps
ao campoadditionalSinks
no campo de registo da secção de especificação. A entrada na matrizfluentbitConfigMaps
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: - ... - ...
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:
Crie um objeto
ConfigMap
no espaço de nomesobs-system
com a etiquetalogmon: audit_logs
. Adicione a configuração de saída adicional no ficheirooutput.conf
da secçãodata
. 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
- Mantenha o nome que atribui ao objeto
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.
No recurso personalizado
ObservabilityPipeline
, adicione a matrizfluentbitConfigMaps
ao campoadditionalSinks
no campo de registo da secção de especificação. A entrada na matrizfluentbitConfigMaps
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:
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.