milvus-logo
LFAI
首页
  • 管理指南

在 Kubernetes 上部署监控服务

本主题介绍如何使用 Prometheus 为 Kubernetes 上的 Milvus 集群部署监控服务。

使用 Prometheus 监控指标

指标是提供系统运行状态信息的指示器。例如,通过度量指标,您可以了解 Milvus 中数据节点消耗了多少内存或 CPU 资源。了解 Milvus 集群中各组件的性能和状态,能让你心中有数,从而做出更好的决策,更及时地调整资源分配。

一般来说,度量指标存储在时间序列数据库(TSDB)中,如Prometheus,度量指标记录有时间戳。在监控 Milvus 服务的情况下,可以使用 Prometheus 从出口程序设置的端点提取数据。然后,Prometheus 在http://<component-host>:9091/metrics 上导出每个 Milvus 组件的指标。

不过,一个组件可能有多个副本,这使得 Prometheus 的手动配置过于复杂。因此,您可以使用 PrometheusOperator(Kubernetes 的扩展)来自动有效地管理 Prometheus 监控实例。使用 Prometheus Operator 可以省去手动添加度量目标和服务提供商的麻烦。

通过 ServiceMonitor 自定义资源(CRD),您可以声明式地定义如何监控一组动态服务。它还允许使用标签选择以所需配置监控哪些服务。使用 Prometheus 操作符,您可以引入约定,指定如何暴露度量。新服务可以按照您设置的约定自动发现,而无需手动重新配置。

下图说明了 Prometheus 工作流程。

Prometheus_architecture 普罗米修斯架构

前提条件

本教程使用Kube-prometheus,省去了安装和手动配置每个监控和警报组件的麻烦。

Kube-prometheus Collections 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.启用服务监控器

Milvus Helm 默认未启用 ServiceMonitor。在 Kubernetes 集群中安装 Prometheus 操作符后,可以通过添加参数metrics.serviceMonitor.enabled=true 来启用它。

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

安装完成后,使用kubectl 检查 ServiceMonitor 资源。

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

下一步

翻译自DeepLogo

想要更快、更简单、更好用的 Milvus SaaS服务 ?

Zilliz Cloud是基于Milvus的全托管向量数据库,拥有更高性能,更易扩展,以及卓越性价比

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?