PostgreSQL

本文說明如何設定 Google Kubernetes Engine 部署作業,以便使用 Google Cloud Managed Service for Prometheus 從 PostgreSQL 收集指標。本文將說明如何執行下列操作:

  • 設定 PostgreSQL 的匯出工具,以回報指標。
  • 在 Cloud Monitoring 中存取預先定義的資訊主頁,即可查看指標。
  • 設定快訊規則,監控指標。

只有在使用 Managed Service for Prometheus 的 代管收集作業時,才適用這些操作說明。如果您使用自行部署的收集器,請參閱 PostgreSQL 匯出工具的來源存放區,瞭解安裝資訊。

這些操作說明僅供參考,適用於大多數 Kubernetes 環境。 如果因嚴格的安全或機構政策而無法安裝應用程式或匯出工具,建議您參閱開放原始碼文件尋求支援。

如要瞭解 PostgreSQL,請參閱 PostgreSQL

必要條件

如要使用 Managed Service for Prometheus 和代管收集作業,從 PostgreSQL 收集指標,部署作業必須符合下列規定:

  • 叢集必須執行 Google Kubernetes Engine 1.28.15-gke.2475000 以上版本。
  • 您必須執行 Managed Service for Prometheus,並啟用代管收集作業。詳情請參閱「 開始使用代管集合」一文。

  • 如要使用 Cloud Monitoring 中適用於 PostgreSQL 整合的資訊主頁,請務必使用 postgres_exporter v0.11.1 以上版本。

    如要進一步瞭解可用的資訊主頁,請參閱「查看資訊主頁」。

如要瞭解如何建立最低權限使用者,請參閱「以非超級使用者身分執行」。

安裝 PostgreSQL 匯出工具

建議您將 PostgreSQL 匯出工具 postgres_exporter 安裝為 PostgreSQL 工作負載的 Sidecar。如要瞭解如何使用補充資訊,請參閱「在 Kubernetes 上使用多容器 Pod 擴充應用程式」。

如要將 postgres_exporter 安裝為 PostgreSQL 的 Sidecar,請修改 PostgreSQL 設定,如下列範例所示:

# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.  apiVersion: apps/v1 kind: StatefulSet metadata:   name: postgresql spec:   serviceName: postgresql   selector:     matchLabels: +     app.kubernetes.io/name: postgresql   template:     metadata:       labels: +       app.kubernetes.io/name: postgresql     spec:       containers:       - image: postgres:15.3         name: postgresql         env:         - name: POSTGRES_USER           value: root         - name: POSTGRES_PASSWORD           value: password         - name: POSTGRES_DB           value: dev +     - name: exporter +       image: quay.io/prometheuscommunity/postgres-exporter:v0.14.0 +       args: +         - --collector.stat_statements +       env: +       - name: DATA_SOURCE_NAME +         value: postgresql://root:password@localhost:5432/dev?sslmode=disable +       ports: +       - containerPort: 9187 +         name: prometheus 

您必須將以 + 符號開頭的任何行新增至設定。

使用適用於 PostgreSQL 執行個體的憑證更新 DATA_SOURCE_NAME 環境變數。

如要套用本機檔案的設定變更,請執行下列指令:

 kubectl apply -n NAMESPACE_NAME -f FILE_NAME 

您也可以使用 Terraform 管理設定。

定義 PodMonitoring 資源

如要探索目標,Managed Service for Prometheus Operator 需要與相同命名空間中的 PostgreSQL 匯出工具對應的 PodMonitoring 資源。

您可以使用下列 PodMonitoring 設定:

# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.  apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata:   name: postgresql   labels:     app.kubernetes.io/name: postgresql     app.kubernetes.io/part-of: google-cloud-managed-prometheus spec:   endpoints:   - port: prometheus     scheme: http     interval: 30s     path: /metrics   selector:     matchLabels:       app.kubernetes.io/name: postgresql 

確認標籤選取器和通訊埠與「安裝 PostgreSQL 匯出工具」中使用的選取器和通訊埠相符。

如要套用本機檔案的設定變更,請執行下列指令:

 kubectl apply -n NAMESPACE_NAME -f FILE_NAME 

您也可以使用 Terraform 管理設定。

定義規則和快訊

您可以使用下列 Rules 設定,針對 PostgreSQL 指標定義快訊:

# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.  apiVersion: monitoring.googleapis.com/v1 kind: Rules metadata:   name: postgresql-rules   labels:     app.kubernetes.io/component: rules     app.kubernetes.io/name: postgresql-rules     app.kubernetes.io/part-of: google-cloud-managed-prometheus spec:   groups:   - name: postgresql     interval: 30s     rules:     - alert: PostgreSQLDatabaseSizeTooLarge       annotations:         description: |-           PostgreSQL database size too large             VALUE = {{ $value }}             LABELS: {{ $labels }}         summary: PostgreSQL database size too large (instance {{ $labels.instance }})       expr: pg_database_size_bytes > 100000000000       for: 5m       labels:         severity: warning 

如要套用本機檔案的設定變更,請執行下列指令:

 kubectl apply -n NAMESPACE_NAME -f FILE_NAME 

您也可以使用 Terraform 管理設定。

如要進一步瞭解如何將規則套用至叢集,請參閱「受管理規則評估和快訊」。

您可以根據應用程式調整快訊閾值。

驗證設定

您可以使用 Metrics Explorer 確認是否已正確設定 PostgreSQL 匯出工具。Cloud Monitoring 可能需要一到兩分鐘才能擷取指標。

如要確認指標已擷取,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「Metrics Explorer」頁面:

    前往 Metrics Explorer

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在查詢建構工具窗格的工具列中,選取名稱為  MQL PromQL 的按鈕。
  3. 確認已在「Language」(語言) 切換按鈕中選取「PromQL」。語言切換按鈕位於同一工具列,可供你設定查詢格式。
  4. 輸入並執行下列查詢:
    up{job="postgresql", cluster="CLUSTER_NAME", namespace="NAMESPACE_NAME"}

查看資訊主頁

Cloud Monitoring 整合功能包含 PostgreSQL Prometheus 總覽資訊主頁。設定整合作業後,系統會自動安裝資訊主頁。 您也可以查看資訊主頁的靜態預覽畫面,不需安裝整合功能。

如要查看已安裝的資訊主頁,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Dashboards」(資訊主頁) 頁面:

    前往「Dashboards」(資訊主頁)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 選取「資訊主頁清單」分頁標籤。
  3. 選擇「整合」類別。
  4. 按一下資訊主頁的名稱,例如「PostgreSQL Prometheus Overview」

如要查看資訊主頁的靜態預覽畫面,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「Integrations」(整合) 頁面

    前往「整合」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 按一下「Kubernetes Engine」部署平台篩選器。
  3. 找到 PostgreSQL 整合功能,然後按一下「查看詳細資料」
  4. 選取「資訊主頁」分頁標籤。

疑難排解

如要瞭解如何排解指標擷取問題,請參閱「 排解擷取端問題」中的「 無法從匯出工具收集資料」。