在 Kubernetes 上部署監控服務

本主題描述如何使用 Prometheus 為 Kubernetes 上的 Milvus 叢集部署監控服務。

使用 Prometheus 監控指標

度量指標是提供系統運行狀態資訊的指標。例如,透過度量指標,您可以瞭解 Milvus 的資料節點消耗了多少記憶體或 CPU 資源。瞭解 Milvus 叢集中各元件的效能和狀態,可以讓您充分掌握資訊,從而做出更好的決策,並更及時地調整資源分配。

一般而言,度量指標會儲存於時間序列資料庫(TSDB),例如Prometheus,並記錄有時間戳記的度量指標。在監控 Milvus 服務的情況下,您可以使用 Prometheus 從出口商設定的端點抽取資料。然後,Prometheus 在http://<component-host>:9091/metrics 匯出每個 Milvus 元件的度量指標。

但是,您可能會為一個元件設置多個副本,這使得 Prometheus 的手動設定變得過於複雜。因此,您可以使用 Kubernetes 的擴充套件Prometheus Operator,自動且有效地管理 Prometheus 監控實體。使用 Prometheus Operator 可省去手動新增度量目標和服務提供者的麻煩。

ServiceMonitor 自訂資源定義 (CRD) 可讓您宣告性地定義如何監控動態服務集。它還允許使用標籤選擇使用所需的組態來監控哪些服務。使用 Prometheus Operator,您可以引入慣例,指定如何暴露度量。新服務可以按照您設定的慣例自動發現,而不需要手動重新配置。

下圖說明 Prometheus 工作流程。

Prometheus_architecture Prometheus 架構

先決條件

本教程使用Kube-prometheus,以省去您安裝和手動設定每個監控和警示元件的麻煩。

Kube-prometheus 收集 Kubernetes 清单、Grafana面板和Prometheus 规则,并结合文档和脚本。

在部署監控服務之前,您需要使用 kube-prometheus manifests 目錄中的組態來建立監控堆疊。

$ git clone https://github.com/prometheus-operator/kube-prometheus.git
$ cd kube-prometheus
$ kubectl apply --server-side -f manifests/setup
$ kubectl wait \
        --for condition=Established \
        --all CustomResourceDefinition \
        --namespace=monitoring
$ kubectl apply -f manifests/
預設的 prometheus-k8s clusterrole 無法捕捉 milvus 的指標,需要修補:
kubectl patch clusterrole prometheus-k8s --type=json -p='[{"op": "add", "path": "/rules/-", "value": {"apiGroups": [""], "resources": ["pods", "services", "endpoints"], "verbs": ["get", "watch", "list"]}}]'

要刪除堆疊,請執行kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup

在 Kubernetes 上部署監控服務

1.存取儀表板

將 Prometheus 服務轉發至9090 連接埠,並將 Grafana 服務轉發至3000 連接埠。

$ kubectl --namespace monitoring --address 0.0.0.0 port-forward svc/prometheus-k8s 9090
$ kubectl --namespace monitoring --address 0.0.0.0 port-forward svc/grafana 3000

2.啟用 ServiceMonitor

Milvus Helm 預設未啟用 ServiceMonitor。在 Kubernetes 群集中安裝 Prometheus Operator 之後,您可以透過新增參數metrics.serviceMonitor.enabled=true 來啟用它。

使用 Helm

如果您已經安裝 Milvus Helm 圖表,您可以透過設定參數metrics.serviceMonitor.enabled=true 來啟用 ServiceMonitor,如下所示。

```
$ helm upgrade my-release milvus/milvus --set metrics.serviceMonitor.enabled=true --reuse-values
```

安裝完成後,使用kubectl 檢查 ServiceMonitor 資源。

使用 Milvus Operator

如果您使用 Milvus Operator 安裝了 Milvus,您可以如下方式啟用 ServiceMonitor。

  1. 執行下列指令編輯 Milvus 自訂資源。以下命令假設自訂資源的名稱為my-release

    $ kubectl edit milvus my-release
    
  2. 編輯spec.components.disableMetric 欄位為false

    ...
    spec:
      components:
        disableMetric: false # set to true to disable metrics
    ...
    
  3. 保存並退出編輯器。

  4. 等待操作員核對變更。您可以執行以下指令檢查 Milvus 自訂資源的狀態。

    $ kubectl get milvus my-release -o yaml
    

status.components.metrics.serviceMonitor.enabled 欄位應為true

3.檢查指標

啟用 ServiceMonitor 後,您可以存取 Prometheus 面板,網址是http://localhost:9090/

按一下Status 索引標籤,然後按一下Targets 。您應該可以看到 Milvus 元件的目標。

Prometheus_targets Prometheus_targets

按一下Graph 索引標籤,然後在表達式輸入方塊中輸入表達式up{job="default/my-release"} 。您應該會看到 Milvus 元件的度量。

Prometheus_graph Prometheus_graph

4.檢查 ServiceMonitor

$ kubectl get servicemonitor
NAME                           AGE
my-release-milvus              54s

接下來

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?