Siga as instruções nesta seção para configurar o servidor de registros central.
Configurar bucket de armazenamento
Crie um bucket de armazenamento para armazenar os registros do appliance:
gcloud storage buckets create gs://BUCKET_NAME
Ative a API IAM, se ainda não tiver feito isso:
gcloud services enable iam.googleapis.com
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
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.
Instale e configure o kubectl para interagir com o cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl
Ative a Identidade da carga de trabalho no cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster
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.
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.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.
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
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 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:
Crie um objeto
ConfigMap
no namespaceobs-system
com o rótulologmon: system_logs
. Adicione a configuração de saída extra no arquivooutput.conf
da seçãodata
. 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
- Mantenha o nome atribuído ao objeto
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.
No recurso personalizado
ObservabilityPipeline
, adicione a matrizfluentbitConfigMaps
ao campoadditionalSinks
na seção "spec". A entrada na matrizfluentbitConfigMaps
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: - ... - ...
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:
Crie um objeto
ConfigMap
no namespaceobs-system
com o rótulologmon: audit_logs
. Adicione a configuração de saída extra no arquivooutput.conf
da seçãodata
. 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
- Mantenha o nome atribuído ao objeto
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.
No recurso personalizado
ObservabilityPipeline
, adicione a matrizfluentbitConfigMaps
ao campoadditionalSinks
na seção "spec". A entrada na matrizfluentbitConfigMaps
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:
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
.