跳至主要内容

監控

自 v1.2.0 起可用

監控功能現已透過附加元件(addon)實作,並且在全新安裝中預設為停用。

使用者可以在安裝後從 Harvester WebUI 啟用或停用 rancher-monitoring 附加元件。

使用者也可以透過自定義 harvester-configuration 檔案,在 Harvester 安裝過程中啟用或停用 rancher-monitoring 附加元件。

對於從 v1.1.x 版本升級的 Harvester 叢集,監控功能會自動轉換為附加元件,並保持啟用狀態。

儀表板指標 (Dashboard Metrics)​

Harvester 提供了使用 Prometheus 的內建監控整合。監控功能會在 Harvester 安裝期間自動啟用。

在 Dashboard(儀表板)頁面上,使用者可以分別查看叢集指標和前 10 名最常使用的 VM 指標。 此外,使用者可以點擊 Grafana 儀表板連結,在 Grafana UI 上查看更多儀表板。

備註

只有管理員使用者(admin users)可以查看叢集儀表板指標。

此外,Grafana 是由 rancher-monitoring 提供的,因此預設的管理員密碼為:prom-operator

參考資料:values.yaml

VM 詳細指標 (VM Detail Metrics)​

對於虛擬機器(VM),您可以透過點擊 VM details page > VM Metrics(VM 詳細資訊頁面 > VM 指標)來查看 VM 指標。

備註

目前的 Memory Usage(記憶體使用量)是基於 (1 - free/total) * 100% 計算的,而不是 (used/total) * 100%。

例如,在 Linux 作業系統中,free -h 指令輸出的目前記憶體統計資料如下:

$ free -h
total used free shared buff/cache available
Mem: 7.7Gi 166Mi 4.6Gi 1.0Mi 2.9Gi 7.2Gi
Swap: 0B 0B 0B

對應的 Memory Usage 為 (1 - 4.6/7.7) * 100%,大約是 40%。

線上遷移狀態與指標 (Live Migration Status and Metrics)​

自 v1.6.0 起可用

線上遷移(Live migration)是確保工作負載正常運作時間的關鍵功能。您可以透過 rancher-monitoring 附加元件,直接從 Harvester UI 監控虛擬機器線上遷移的進度。

  1. 啟用 rancher-monitoring 附加元件。
  2. 前往 Virtual Machines(虛擬機器)。
  3. 在清單中找到該虛擬機器,然後點擊名稱以查看其詳細資訊。
  4. 前往 Migration(遷移)頁籤。

Migration 頁籤分為以下幾個部分:

  • 一般資訊:此部分顯示目前的遷移階段、來源與目標節點,以及遷移的開始和結束時間。

  • 即時指標:這些指標由 Prometheus 產生,並保留五天。

    指標 (Metric)說明
    Migration Data Remaining Bytes客體作業系統(guest OS)尚未遷移的資料量
    Migration Data Processed Bytes客體作業系統已經遷移的資料量
    Migration Memory Transfer Rate記憶體傳輸的速率
    Migration Dirty Memory Rate客體記憶體中資料變更但尚未同步到磁碟的速率

    如果 Migration Data Remaining Bytes 的數值隨著 Migration Data Processed Bytes 數值的增加而穩定下降,表示資料正成功遷移至目的地。

    如果 Migration Data Remaining Bytes 的數值波動不定,同時 Migration Dirty Memory Rate 維持在很高的水準,表示虛擬機器正處於高負載狀態。在某些情況下,這可能會導致遷移無法完成。

  • 遷移事件:這些虛擬機器特定的事件記錄由 Kubernetes API server (kube-apiserver) 產生,並保留 一小時。

如何配置監控設定​

自 v1.0.2 起可用

監控功能包含數個元件,用於協助從所有節點 (Nodes)/Pod/VM 收集並聚合指標數據。監控所需的資源取決於您的工作負載和硬體資源。Harvester 會根據一般使用案例設定預設值,您可以根據需求進行更改。

目前,可以針對以下元件配置 Resources Settings(資源設定):

  • Prometheus
  • Prometheus Node Exporter

透過 UI​

在 Advanced(進階)頁面上,您可以查看並變更資源設定,步驟如下:

  1. 前往 Advanced > Addons 頁面,並選擇 rancher-monitoring。
  2. 從 Prometheus 頁籤中,變更資源的 requests(請求)和 limits(限制)。
  3. 完成 rancher-monitoring 附加元件的設定配置後,選擇 Save(儲存)。Monitoring 部署將會在幾秒鐘內重新啟動。請注意,重啟可能需要一些時間來重新載入先前的資料。

備註

UI 設定僅在 rancher-monitoring 附加元件啟用時可見。

最常使用的選項是記憶體設定:

  • Requested Memory 是 Monitoring 資源所需的最小記憶體。建議值約為單一管理節點系統記憶體的 5% 到 10%。小於 500Mi 的值將會被拒絕。

  • Memory Limit 是可以分配給 Monitoring 資源的最大記憶體。建議值約為單一管理節點系統記憶體的 30%。當 Monitoring 達到此閾值時,它將會自動重新啟動。

根據可用的硬體資源和系統負載,您可以相應地更改上述設定。

備註

如果您有多個硬體資源不同的管理節點,請根據較小的節點來設定 Prometheus 的值。

警告

當單一節點上部署的 VM 數量增加時,prometheus-node-exporter pod 可能會因為 OOM(記憶體不足)而被終止。在這種情況下,您應該增加 limits.memory 的值。

透過 CLI​

您可以使用以下 kubectl 指令來變更 rancher-monitoring 附加元件的資源配置:kubectl edit addons.harvesterhci.io -n cattle-monitoring-system rancher-monitoring。

資源路徑和預設值如下:

apiVersion: harvesterhci.io/v1beta1
kind: Addon
metadata:
name: rancher-monitoring
namespace: cattle-monitoring-system
spec:
valuesContent: |
prometheus:
prometheusSpec:
resources:
limits:
cpu: 1000m
memory: 2500Mi
requests:
cpu: 850m
memory: 1750Mi
備註

您仍然可以在附加元件停用時進行配置調整。但是,這些變更僅在您重新啟用附加元件時才會生效。

Alertmanager (警報管理器)​

Harvester 使用 Alertmanager 來收集和管理叢集中發生或正在發生的所有警報。

Alertmanager 配置​

啟用/停用 Alertmanager​

Alertmanager 預設為啟用。您可以從以下配置路徑將其停用。

變更資源設定​

您也可以如上圖所示變更 Alertmanager 的資源設定。

從 WebUI 配置 AlertmanagerConfig​

要將警報發送到第三方伺服器,您需要配置 AlertmanagerConfig。

在 WebUI 上,導航至 Monitoring & Logging -> Monitoring -> Alertmanager Configs。

在 Alertmanager Config: Create 頁面上,點擊 Namespace 從下拉選單中選擇目標命名空間並設定 Name(名稱)。之後,點擊右下角的 Create(建立)。

點擊您剛剛建立的 Alertmanager Configs 以繼續配置。

點擊 Add Receiver(新增接收器)。

為接收器設定 Name。之後,選擇接收器類型,例如 Webhook,然後點擊 Add Webhook。

填寫所需的參數並點擊 Create。

要設定 Microsoft Teams 或 SMS webhook,請先使用以下指令安裝 rancher-alerting-drivers 應用程式:

helm repo add rancher-charts [https://charts.rancher.io/](https://charts.rancher.io/)
helm repo update
helm install rancher-charts/rancher-alerting-drivers \
--set sachet.enabled=false \ # 如果您想要使用 SMS Webhook,請設為 true
--set prom2teams.enabled=true \ # 如果您想要使用 MS Teams Webhook,請設為 true
--namespace cattle-monitoring-system \
--generate-name

有關詳細的配置說明,請參閱 Rancher 文件中的 Rancher Monitoring Receiver Configuration。

如果您的環境無法直接存取網際網路(實體隔離 air-gapped),您必須手動下載 Helm chart 和相關的容器映像檔,然後將它們上傳到 Harvester 叢集。

  1. 下載 rancher-alerting-drivers Helm chart 並將其打包。

    helm pull rancher-charts/rancher-alerting-drivers --version <VERSION>
  2. 下載所需的映像檔。

    docker save -o sachet.tar rancher/mirrored-messagebird-sachet:<VERSION>
    docker save -o prom2teams.tar rancher/mirrored-idealista-prom2teams:<VERSION>
  3. 將 chart 和映像檔上傳到 Harvester 叢集。

  4. 在所有 Harvester 節點上載入映像檔。

    docker load -i sachet.tar
    docker load -i prom2teams.tar
  5. 在 Harvester 叢集上安裝 rancher-alerting-drivers。

important

Harvester 不管理 rancher-alerting-drivers 應用程式的升級,這不屬於 Harvester 專案的一部分。您必須手動升級該應用程式。

從 CLI 配置 AlertmanagerConfig​

您也可以從 CLI 新增 AlertmanagerConfig。

範例:在 default 命名空間中的 Webhook 接收器。

cat << EOF > a-single-receiver.yaml
apiVersion: [monitoring.coreos.com/v1alpha1](https://monitoring.coreos.com/v1alpha1)
kind: AlertmanagerConfig
metadata:
name: amc-example
# namespace: your value
labels:
alertmanagerConfig: example
spec:
route:
continue: true
groupBy:
- cluster
- alertname
receiver: "amc-webhook-receiver"
receivers:
- name: "amc-webhook-receiver"
webhookConfigs:
- sendResolved: true
url: "[http://192.168.122.159:8090/](http://192.168.122.159:8090/)"
EOF

# kubectl apply -f a-single-receiver.yaml
[alertmanagerconfig.monitoring.coreos.com/amc-example](https://alertmanagerconfig.monitoring.coreos.com/amc-example) created

# kubectl get alertmanagerconfig -A
NAMESPACE NAME AGE
default amc-example 27s

Webhook 接收到的警報範例​

發送到 webhook 伺服器的警報將採用以下格式:

{
'receiver': 'longhorn-system-amc-example-amc-webhook-receiver',
'status': 'firing',
'alerts': [],
'groupLabels': {},
'commonLabels': {'alertname': 'LonghornVolumeStatusWarning', 'container': 'longhorn-manager', 'endpoint': 'manager', 'instance': '10.52.0.83:9500', 'issue': 'Longhorn volume is Degraded.',
'job': 'longhorn-backend', 'namespace': 'longhorn-system', 'node': 'harv2', 'pod': 'longhorn-manager-r5bgm', 'prometheus': 'cattle-monitoring-system/rancher-monitoring-prometheus',
'service': 'longhorn-backend', 'severity': 'warning'},
'commonAnnotations': {'description': 'Longhorn volume is Degraded for more than 5 minutes.', 'runbook_url': '[https://longhorn.io/docs/1.3.0/monitoring/metrics/](https://longhorn.io/docs/1.3.0/monitoring/metrics/)',
'summary': 'Longhorn volume is Degraded'},
'externalURL': '[https://192.168.122.200/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-alertmanager:9093/proxy](https://192.168.122.200/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-alertmanager:9093/proxy)',
'version': '4',
'groupKey': '{}/{namespace="longhorn-system"}:{}',
'truncatedAlerts': 0
}
備註

不同的接收器可能會以不同的格式呈現警報。詳情請參閱相關文件。

已知限制​

AlertmanagerConfig 是由 namespace 強制執行的。不支援沒有命名空間的全域層級(Global-level)AlertmanagerConfig。

我們已經建立了一個 GitHub issue 來追蹤上游的變更。一旦功能可用,Harvester 將會採用它。

查看和管理警報​

從 Alertmanager 儀表板​

您可以從以下連結造訪 Alertmanager 的原始儀表板。請注意,您需要將 the-cluster-vip 替換為實際的 cluster-vip:

https://the-cluster-vip/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-alertmanager:9093/proxy/#/alerts

Alertmanager 儀表板的整體視圖如下所示。

您可以查看警報的詳細資訊:

從 Prometheus 儀表板​

您可以從以下連結造訪 Prometheus 的原始儀表板。請注意,您需要將 the-cluster-vip 替換為實際的 cluster-vip:

https://the-cluster-vip/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-prometheus:9090/proxy/

頂部導覽列中的 Alerts 選單顯示 Prometheus 中所有定義的規則。您可以使用 Inactive、Pending 和 Firing 篩選器來快速找到您需要的資訊。

疑難排解 (Troubleshooting)​

有關監控的支援和疑難排解,請參閱 疑難排解頁面。