Gerenciar e monitorar o AlloyDB Omni

Selecione uma versão da documentação:

Nesta página, descrevemos como gerenciar as funções de usuário do AlloyDB Omni, monitorar a atividade do servidor do AlloyDB Omni e atualizar ou remover a instalação do AlloyDB Omni.

Gerenciar funções de usuário

O AlloyDB Omni usa o mesmo conjunto de papéis de usuário predefinidos do PostgreSQL que o AlloyDB para PostgreSQL inclui, com as seguintes diferenças:

  • O AlloyDB Omni inclui uma função de superusuário chamada alloydbadmin e uma função de não superusuário chamada alloydbmetadata.

  • O usuário postgres padrão tem uma função de superusuário.

  • Todos os outros papéis de usuário predefinidos não têm privilégios. Eles são reservados para possíveis usos no futuro.

Configurar um banco de dados do AlloyDB Omni

Assim como no AlloyDB para PostgreSQL, é uma prática recomendada seguir estas etapas ao configurar um banco de dados:

  1. Defina ou importe seus bancos de dados usando a função de usuário postgres. Em uma nova instalação, esse papel tem privilégios de superusuário e não exige senha.

  2. Crie novas funções de usuário com o nível correto de acesso às tabelas do aplicativo, usando novamente a função de usuário postgres.

  3. Configure o aplicativo para se conectar ao banco de dados usando essas novas funções de acesso limitado.

Você pode criar e definir quantas funções de usuário forem necessárias. Não modifique nem exclua nenhuma das funções de usuário fornecidas com o AlloyDB Omni.

Para mais informações, consulte Gerenciar usuários e papéis do AlloyDB Omni.

Monitorar o AlloyDB Omni

O monitoramento da instalação do AlloyDB Omni inclui a leitura e a análise dos arquivos de registro do AlloyDB Omni.

O AlloyDB Omni em execução no Kubernetes fornece um conjunto de métricas básicas disponíveis como endpoints do Prometheus. Para uma lista de métricas disponíveis, consulte Métricas do AlloyDB Omni.

Além disso, o AlloyDB Omni em execução no Kubernetes expõe métricas de recursos personalizados usando kube-state-metrics (KSM). Para ativar as métricas de recursos personalizados, consulte Monitorar recursos personalizados do operador do AlloyDB Omni no Kubernetes.

Servidor único

Por padrão, para recuperar registros do AlloyDB Omni, execute:

Docker

  docker logs CONTAINER_NAME

Substitua CONTAINER_NAME pelo nome do contêiner do AlloyDB Omni.

Para configurar o comportamento de geração de registros do AlloyDB Omni, consulte Personalizar a instalação do AlloyDB Omni.

Podman

  podman logs CONTAINER_NAME

Substitua CONTAINER_NAME pelo nome do contêiner do AlloyDB Omni.

Para configurar o comportamento de geração de registros do AlloyDB Omni, consulte Personalizar a instalação do AlloyDB Omni.

Kubernetes

Encontrar os arquivos de registro do cluster de banco de dados

Os arquivos postgresql.audit e postgresql.log estão localizados no sistema de arquivos do pod de banco de dados. postgresql.audit só aparece se você ativou o pgaudit.

Para acessar esses arquivos, siga estas etapas:

  1. Defina uma variável de ambiente que contenha o nome do pod do banco de dados.

    export DB_POD=`kubectl get pod -l alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`

    Substitua DB_CLUSTER_NAME pelo nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.

  2. Execute um shell no pod do banco de dados como raiz.

    kubectl exec ${DB_POD} -it -- /bin/bash
  3. Encontre os arquivos de registro no diretório /obs/diagnostic/:

    • /obs/diagnostic/postgresql.audit
    • /obs/diagnostic/postgresql.log

Listar serviços de monitoramento

v1.0

Ao criar um cluster de banco de dados, o AlloyDB Omni cria o seguinte serviço de monitoramento para cada CR de instância do cluster de banco de dados no mesmo namespace:

al-INSTANCE_NAME-monitoring-system

Para listar os serviços de monitoramento, execute o seguinte comando:

kubectl get svc -n NAMESPACE | grep monitoring

Substitua NAMESPACE por um namespace a que seu cluster pertence.

O exemplo de resposta a seguir mostra os serviços al-1060-dbc-monitoring-system, al-3de6-dbc-monitoring-system e al-4bc0-dbc-monitoring-system. Cada serviço corresponde a uma instância.

al-1060-dbc-monitoring-system   ClusterIP   10.0.15.227   <none>        9187/TCP   7d20h
al-3de6-dbc-monitoring-system   ClusterIP   10.0.5.205    <none>        9187/TCP   7d19h
al-4bc0-dbc-monitoring-system   ClusterIP   10.0.15.92    <none>        9187/TCP   7d19h

Versão < 1.0

Ao criar um cluster de banco de dados, o AlloyDB Omni cria os seguintes serviços de monitoramento no mesmo namespace do cluster de banco de dados:

  • DB_CLUSTER-monitoring-db

  • DB_CLUSTER-monitoring-system

Para listar os serviços de monitoramento, execute o seguinte comando:

kubectl get svc -n NAMESPACE | grep monitoring

Substitua NAMESPACE por um namespace a que seu cluster pertence.

O exemplo de resposta a seguir mostra o al-2953-dbcluster-foo7-monitoring-system e o serviço al-2953-dbcluster-foo7-monitoring-db.

al-2953-dbcluster-foo7-monitoring-db           ClusterIP   10.36.3.243    <none>        9187/TCP   44m
al-2953-dbcluster-foo7-monitoring-system       ClusterIP   10.36.7.72     <none>        9187/TCP   44m

Conferir métricas do Prometheus na linha de comando

A porta 9187 é chamada de metricsalloydbomni para todos os serviços de monitoramento.

  1. Configure o encaminhamento de portas do seu ambiente local para o serviço de monitoramento.

    kubectl port-forward service/MONITORING_SERVICE -n NAMESPACE MONITORING_METRICS_PORT:metricsalloydbomni
    

    Substitua:

    • MONITORING_SERVICE: o nome do serviço de monitoramento que você quer encaminhar. Por exemplo, al-1060-dbc-monitoring-system.

    • NAMESPACE: o namespace a que seu cluster pertence.

    • MONITORING_METRICS_PORT: uma porta TCP local disponível.

    A resposta a seguir mostra que os serviços estão sendo encaminhados.

    Forwarding from 127.0.0.1:9187 -> 9187
    Forwarding from [::1]:9187 -> 9187
    
  2. Enquanto o comando anterior é executado, você pode acessar as métricas de monitoramento por HTTP na porta especificada. Por exemplo, use curl para ver todas as métricas como texto simples:

    curl http://localhost:MONITORING_METRICS_PORT/metrics
    

Ver métricas usando a API Prometheus

A chave de rótulo alloydbomni.internal.dbadmin.goog/task-type e a porta metricsalloydbomni estão disponíveis como padrão para todos os serviços de monitoramento no AlloyDB Omni. É possível usá-los com um único recurso personalizado serviceMonitor para selecionar todos os serviços de todos os namespaces no cluster de banco de dados.

Para mais informações sobre como usar a API Prometheus, consulte a documentação do operador do Prometheus.

Confira a seguir um exemplo de campo spec do recurso personalizado serviceMonitor que inclui a chave de rótulo alloydbomni.internal.dbadmin.gdc.goog/task-type e a porta metricsalloydbomni. O recurso personalizado serviceMonitor monitora e coleta todos os serviços do Kubernetes em todos os namespaces.

Para mais informações sobre a definição completa de ServiceMonitor, consulte a definição de recurso personalizado ServiceMonitor .

v1.0

    spec:
      selector:
        matchLabels:
          alloydbomni.internal.dbadmin.goog/task-type: monitoring
      namespaceSelector:
        any: true
      endpoints:
        - port: metricsalloydbomni

Versão < 1.0

    spec:
      selector:
        matchExpressions:
        - key: alloydbomni.internal.dbadmin.gdc.goog/task-type
          operator: Exists
          values: []
      namespaceSelector:
        any: true
      endpoints:
      - port: metricsalloydbomni

Conferir métricas usando o Grafana

Para uma representação visual das métricas no AlloyDB Omni no Kubernetes, use o painel de monitoramento. O painel de monitoramento depende de uma pilha de observabilidade básica que consiste no Prometheus e no Grafana. Para configurar o painel de monitoramento e coletar métricas do AlloyDB Omni, siga estas etapas:

  1. Para fazer o download do painel do Grafana, use o comando wget:

    wget https://raw.githubusercontent.com/GoogleCloudPlatform/alloydb-omni-samples/refs/heads/main/monitoring-dashboards/grafana/alloydbomni_dashboard.yaml
    
  2. É preciso fazer o download e instalar o grafana-operator antes de implantar o Grafana no Kubernetes. Para instruções detalhadas, consulte Instalação.

  3. Adicione o rótulo monitoring.dashboard/product=alloydb-omni à instância do Grafana em que você instala o painel:

    kubectl label grafana/GRAFANA_INSTANCE_NAME monitoring.dashboard/product=alloydb-omni -n NAMESPACE
    

    Substitua:

    • GRAFANA_INSTANCE_NAME: o nome da instância do Grafana em que você colocou o painel.
    • NAMESPACE: o namespace em que você implantou o operador do Grafana.
  4. Para aplicar a configuração do painel do Grafana ao cluster do AlloyDB Omni no Kubernetes, use o seguinte comando:

    kubectl apply -f alloydbomni_dashboard.yaml -n NAMESPACE
    

    Consulte a documentação do operador do Grafana para saber como usar esse operador.

  5. Para configurar o Grafana para usar o Prometheus como uma fonte de dados, consulte Fontes de dados.

  6. Para verificar se o Grafana está configurado corretamente, faça o seguinte:

    • Confira a coleção de painéis do Grafana no painel do AlloyDB Omni.
    • Recupere informações sobre o painel do Grafana em um cluster do Kubernetes:

      kubectl get grafanadashboard alloydb-omni-dashboard -n NAMESPACE -o jsonpath='{.status.conditions[?(@.type=="DashboardSynchronized")].status}'
      

      Se o comando retornar True, o alloydb-omni-dashboard será implantado na instância do Grafana.

Fazer upgrade do AlloyDB Omni

Para fazer upgrade do AlloyDB Omni 15.5.2 ou versões anteriores para a 15.5.4, siga as instruções em Migrar de uma versão anterior do AlloyDB Omni para a mais recente.

Para fazer upgrade da versão 15.5.4 e mais recentes:

  1. Reinicie o AlloyDB Omni usando uma nova versão da imagem.

  2. Especifique o diretório de dados para corresponder ao mesmo caminho usado em versões anteriores do AlloyDB Omni.

Desinstalar o AlloyDB Omni

Servidor único

Para desinstalar o AlloyDB Omni, pare e exclua o contêiner do AlloyDB Omni usando o seguinte comando:

Docker

 docker container stop CONTAINER_NAME
   docker container rm CONTAINER_NAME

Substitua CONTAINER_NAME pelo nome do contêiner do AlloyDB Omni.

Podman

 podman container stop CONTAINER_NAME
   podman container rm CONTAINER_NAME

Substitua CONTAINER_NAME pelo nome do contêiner do AlloyDB Omni.

Podman

 podman container stop CONTAINER_NAME
   podman container rm CONTAINER_NAME

Substitua CONTAINER_NAME pelo nome do contêiner do AlloyDB Omni.

É possível mover, arquivar ou excluir um diretório de dados externos, dependendo de como você quer preservar os dados após desinstalar o AlloyDB Omni.

Kubernetes

Excluir o cluster de banco de dados

Para excluir o cluster de banco de dados, defina isDeleted como true no manifesto dele. Faça isso com o seguinte comando.

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"isDeleted":true}}' --type=merge

Substitua DB_CLUSTER_NAME pelo nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.

Desinstalar o operador do AlloyDB Omni

Para desinstalar o operador do AlloyDB Omni Kubernetes do cluster do Kubernetes, siga estas etapas:

  1. Exclua todos os clusters de banco de dados:

    for ns in $(kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.namespace}{"\n"}{end}'); do
    for cr in $(kubectl get dbclusters.alloydbomni.dbadmin.goog -n $ns -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'); do
    kubectl patch dbclusters.alloydbomni.dbadmin.goog $cr -n $ns --type=merge -p '{"spec":{"isDeleted":true}}'
    done
    done
  2. Aguarde até que o operador do AlloyDB Omni no Kubernetes exclua todos os clusters de banco de dados. Use o comando a seguir para verificar se há recursos de banco de dados restantes:

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  3. Exclua outros recursos criados pelo operador do AlloyDB Omni no Kubernetes:

    kubectl delete failovers.alloydbomni.dbadmin.goog --all --all-namespaces
    kubectl delete restores.alloydbomni.dbadmin.goog --all --all-namespaces
    kubectl delete switchovers.alloydbomni.dbadmin.goog --all --all-namespaces
  4. Desinstale o operador do AlloyDB Omni no Kubernetes:

    helm uninstall alloydbomni-operator --namespace alloydb-omni-system
  5. Limpe os secrets, as descrições de recursos personalizados e os namespaces relacionados ao operador do AlloyDB Omni no Kubernetes:

    kubectl delete certificate -n alloydb-omni-system --all
    kubectl get secrets --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,ANNOTATION:.metadata.annotations.cert-manager\.io/issuer-name | grep -E 'alloydbomni|dbs-al' | awk '{print $1 " " $2}' | xargs -n 2 kubectl delete secret -n
    kubectl delete crd -l alloydb-omni=true
    kubectl delete ns alloydb-omni-system

Redimensionar o cluster de banco de dados baseado no Kubernetes

Para redimensionar a CPU, a memória ou o armazenamento do cluster de banco de dados baseado no Kubernetes, atualize o campo resources dos manifestos que definem o pod. O operador do AlloyDB Omni aplica as novas especificações ao pod do banco de dados imediatamente.

Para mais informações sobre a sintaxe do manifesto do operador do AlloyDB Omni, consulte Criar um cluster de banco de dados.

As restrições a seguir se aplicam à modificação dos recursos de um cluster de banco de dados em execução:

  • Só é possível aumentar o tamanho de um disco se o storageClass especificado for compatível com a expansão de volume.
  • Não é possível diminuir o tamanho de um disco.