管理及監控 AlloyDB Omni

本頁面說明如何管理 AlloyDB Omni 使用者角色、監控 AlloyDB Omni 伺服器的活動,以及更新或移除 AlloyDB Omni 安裝。

管理使用者角色

AlloyDB Omni 使用下列角色:

  • AlloyDB Omni 包含名為 alloydbadmin 的超級使用者角色,以及名為 alloydbmetadata 的非超級使用者角色。

  • 預設的 postgres 使用者具有超級使用者角色。

  • 其他預先定義的使用者角色則沒有任何權限。保留供日後使用。

設定 AlloyDB Omni 資料庫

設定 AlloyDB Omni 資料庫時,建議您按照下列步驟操作:

  1. 使用 postgres 使用者角色定義或匯入資料庫。在新安裝中,這個角色具有超級使用者權限。

  2. 再次使用 postgres 使用者角色,建立新的使用者角色,並授予應用程式資料表的正確存取層級。

  3. 設定應用程式,使用這些新的受限存取權角色連線至資料庫。

您可以視需要建立及定義任意數量的新使用者角色。請勿修改或刪除 AlloyDB Omni 隨附的任何使用者角色。

詳情請參閱「管理 AlloyDB Omni 使用者和角色」。

監控 AlloyDB Omni

監控 AlloyDB Omni 安裝作業,包括擷取及分析 AlloyDB Omni 指標。

在 Kubernetes 上執行的 AlloyDB Omni 提供一組基本指標,可做為 Prometheus 端點。如需可用指標清單,請參閱「AlloyDB Omni 指標」。

此外,在 Kubernetes 上執行的 AlloyDB Omni 會透過 kube-state-metrics (KSM) 公開自訂資源的指標。如要啟用自訂資源指標,請參閱「監控 AlloyDB Omni Kubernetes 運算子自訂資源」。

Kubernetes

尋找資料庫叢集記錄檔

postgresql.audit 和 postgresql.log 檔案位於資料庫 Pod 的檔案系統中。只有在啟用 pgaudit 時,才會顯示 postgresql.audit。

如要存取這些檔案,請按照下列步驟操作:

  1. 定義包含資料庫 Pod 名稱的環境變數。

    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}'`

    將 DB_CLUSTER_NAME 替換為資料庫叢集名稱。這與您建立資料庫叢集時宣告的名稱相同。

  2. 以 root 身分在資料庫 Pod 上執行殼層。

    kubectl exec ${DB_POD} -it -- /bin/bash
  3. 在 /obs/diagnostic/ 目錄中找出記錄檔:

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

列出監控服務

v1.0

建立資料庫叢集時,AlloyDB Omni 會在相同命名空間中,為資料庫叢集的每個執行個體 CR 建立下列監控服務:

al-INSTANCE_NAME-monitoring-system

如要列出監控服務,請執行下列指令。

kubectl get svc -n NAMESPACE | grep monitoring

將 NAMESPACE 替換為叢集所屬的命名空間。

以下範例回應顯示 al-1060-dbc-monitoring-system、al-3de6-dbc-monitoring-system 和 al-4bc0-dbc-monitoring-system 服務。每項服務對應一個執行個體。

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

1.0 以下版本

建立資料庫叢集時,AlloyDB Omni 會在資料庫叢集的命名空間中,建立下列監控服務:

  • DB_CLUSTER-monitoring-db

  • DB_CLUSTER-monitoring-system

如要列出監控服務,請執行下列指令。

kubectl get svc -n NAMESPACE | grep monitoring

將 NAMESPACE 替換為叢集所屬的命名空間。

以下範例回應顯示 al-2953-dbcluster-foo7-monitoring-system 和 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

透過指令列查看 Prometheus 指標

所有監控服務的通訊埠 9187 都命名為 metricsalloydbomni。

  1. 設定從本機環境到監控服務的通訊埠轉送。

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

    更改下列內容:

    • MONITORING_SERVICE:要轉送的監控服務名稱,例如 al-1060-dbc-monitoring-system。

    • NAMESPACE:叢集所屬的命名空間。

    • MONITORING_METRICS_PORT:本機可用的 TCP 通訊埠。

    下列回應顯示服務正在轉送。

    Forwarding from 127.0.0.1:9187 -> 9187
    Forwarding from [::1]:9187 -> 9187
    
  2. 執行上述指令時,您可以透過 HTTP 在指定的通訊埠上存取監控指標。舉例來說,您可以使用 curl,以純文字格式查看所有指標:

    curl http://localhost:MONITORING_METRICS_PORT/metrics
    

    您也可以在 AlloyDB Omni 網頁使用者介面的「System Insights」(系統深入分析) 頁面中,以圖表呈現這些 Prometheus 指標。當 Prometheus 執行個體抓取監控服務端點 (通訊埠 9187) 時,網頁 UI 會查詢 Prometheus,顯示即時 CPU、記憶體、儲存空間和磁碟 I/O 圖表。詳情請參閱「使用 System Insights 查看系統指標」。

使用 Prometheus API 查看指標

AlloyDB Omni 的所有監控服務預設提供 alloydbomni.internal.dbadmin.goog/task-type 標籤鍵和 metricsalloydbomni 通訊埠。您可以搭配使用這些項目和單一 serviceMonitor 自訂資源,選取資料庫叢集中所有命名空間的所有服務。

將 Prometheus 設為使用 Prometheus API 擷取 metricsalloydbomni 通訊埠後,您可以將 Prometheus 端點連結至 AlloyDB Omni 網頁使用者介面,在「系統深入分析」 (/system-insights) 中監控主機和執行個體資源使用率。在「系統深入分析」中,您可以使用「篩選依據:執行個體」選單,篩選已擷取執行個體的指標,並調整觀測時間範圍 (「1 小時」、「6 小時」、「1 天」或「7 天」),檢查 CPU 用量、記憶體用量、可用記憶體、記憶體限制、儲存空間用量,以及磁碟 I/O 讀取和寫入處理量。詳情請參閱「使用 System Insights 查看系統指標」。

如要進一步瞭解如何使用 Prometheus API,請參閱 Prometheus Operator 說明文件。

以下是 serviceMonitor 自訂資源的 spec 欄位範例,其中包含 alloydbomni.internal.dbadmin.gdc.goog/task-type 標籤鍵和 metricsalloydbomni 通訊埠。serviceMonitor 自訂資源會監控及收集所有命名空間中的所有 Kubernetes 服務

如要進一步瞭解完整的 ServiceMonitor 定義,請參閱 ServiceMonitor 自訂資源定義 。

v1.0

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

1.0 以下版本

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

使用 Grafana 查看指標

如要以圖表呈現 AlloyDB Omni on Kubernetes 的指標,請使用監控資訊主頁。監控資訊主頁仰賴由 Prometheus 和 Grafana 組成的基本觀測能力堆疊。如要設定監控資訊主頁,收集 AlloyDB Omni 的指標,請按照下列步驟操作:

  1. 如要下載 Grafana 資訊主頁,請使用 wget 指令:

    wget https://raw.githubusercontent.com/GoogleCloudPlatform/alloydb-omni-samples/refs/heads/main/monitoring-dashboards/grafana/alloydbomni_dashboard.yaml
    
  2. 您必須先下載並安裝 grafana-operator,才能在 Kubernetes 中部署 Grafana。如需詳細操作說明,請參閱「安裝」。

  3. 在安裝資訊主頁的 Grafana 執行個體中,新增 monitoring.dashboard/product=alloydb-omni 標籤:

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

    更改下列內容:

    • GRAFANA_INSTANCE_NAME:放置資訊主頁的 Grafana 執行個體名稱。
    • NAMESPACE:部署 Grafana 運算子的命名空間。
  4. 如要將 Grafana 資訊主頁設定套用至 Kubernetes 上的 AlloyDB Omni 叢集,請使用下列指令:

    kubectl apply -f alloydbomni_dashboard.yaml -n NAMESPACE
    

    如要瞭解如何使用 Grafana 運算子,請參閱 Grafana 運算子說明文件。

  5. 如要設定 Grafana 使用 Prometheus 做為資料來源,請參閱「資料來源」。

  6. 如要確認 Grafana 設定正確無誤,請執行下列任一操作:

    • 在 AlloyDB Omni 資訊主頁查看 Grafana 面板集合。
    • 擷取 Kubernetes 叢集中 Grafana 資訊主頁的相關資訊:

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

      如果指令傳回 True,表示 alloydb-omni-dashboard 已成功部署至 Grafana 執行個體。

使用 System Insights 查看系統指標

您可以在 AlloyDB Omni 網頁使用者介面中,使用 System Insights 監控 AlloyDB Omni 執行個體的即時和歷來基礎架構指標。系統深入分析會查詢 AlloyDB Omni 監控代理程式匯出的 Prometheus 指標,顯示資源使用率圖表。

如要在網頁 UI 中查看系統指標,請完成下列步驟:

  1. 連線至網頁 UI,然後選取叢集。
  2. 在導覽選單中,點選「系統深入分析」。
  3. 選用:在多節點叢集中,使用「Filter by: Instances」(篩選依據:執行個體) 清單,選取特定執行個體端點 (例如 localhost:9187)。
  4. 選取時間範圍 (「1 小時」、「6 小時」、「1 天」或「7 天」),調整所有圖表的觀察期。
  5. 查看系統遙測圖表:
    • CPU 使用率:顯示一段時間內的 CPU 使用率百分比。
    • 記憶體用量:顯示已分配記憶體的使用率變化。
    • 可用記憶體:顯示一段時間內的可用記憶體百分比。
    • 記憶體限制:顯示執行個體設定的記憶體配額 (以 GB 為單位)。
    • 儲存空間和磁碟 I/O:顯示另外六個圖表,追蹤儲存空間用量、儲存空間上限、磁碟讀取次數、讀取位元組數、磁碟寫入次數和寫入位元組數。

解除安裝 AlloyDB Omni

Kubernetes

刪除資料庫叢集

如要刪除資料庫叢集,請在資訊清單中將 isDeleted 設為 true。您可以使用下列指令完成這項操作。

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

將 DB_CLUSTER_NAME 替換為資料庫叢集名稱。這與您建立資料庫叢集時宣告的名稱相同。

解除安裝 AlloyDB Omni operator

如要從 Kubernetes 叢集解除安裝 AlloyDB Omni Kubernetes 運算子,請按照下列步驟操作:

  1. 刪除所有資料庫叢集:

    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. 等待 AlloyDB Omni Kubernetes 運算子刪除所有資料庫叢集。使用下列指令,檢查是否還有任何資料庫資源:

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  3. 刪除 AlloyDB Omni 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. 解除安裝 AlloyDB Omni Kubernetes 運算子:

    helm uninstall alloydbomni-operator --namespace alloydb-omni-system
  5. 清除與 AlloyDB Omni 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

調整 Kubernetes 資料庫叢集的大小

如要調整 Kubernetes 資料庫叢集的 CPU、記憶體或儲存空間大小,請更新定義 Pod 的資訊清單 resources 欄位。AlloyDB Omni operator 會立即將新規格套用至資料庫 Pod。

如要進一步瞭解 AlloyDB Omni operator 資訊清單語法,請參閱「建立資料庫叢集」。

修改執行中資料庫叢集的資源時,須遵守下列限制:

  • 只有在指定的 storageClass 支援磁碟區擴充時,才能增加磁碟大小。
  • 您無法縮減磁碟大小。