Despliegue de Servicios de Monitoreo en Kubernetes

Este tema describe cómo utilizar Prometheus para desplegar servicios de monitorización para un clúster Milvus en Kubernetes.

Monitorización de métricas con Prometheus

Las métricas son indicadores que proporcionan información sobre el estado de ejecución de su sistema. Por ejemplo, con las métricas, puede comprender cuánta memoria o recursos de CPU consume un nodo de datos en Milvus. Conocer el rendimiento y el estado de los componentes de su clúster Milvus le permite estar bien informado y, por tanto, tomar mejores decisiones y ajustar la asignación de recursos de forma más oportuna.

Generalmente, las métricas se almacenan en una base de datos de series temporales (TSDB), como Prometheus, y las métricas se registran con una marca de tiempo. En el caso de la supervisión de los servicios de Milvus, puede utilizar Prometheus para extraer datos de los puntos finales establecidos por los exportadores. A continuación, Prometheus exporta las métricas de cada componente de Milvus en http://<component-host>:9091/metrics.

Sin embargo, puede tener varias réplicas para un componente, lo que complica demasiado la configuración manual de Prometheus. Por lo tanto, puede utilizar Prometheus Operator, una extensión de Kubernetes, para una gestión automatizada y eficaz de las instancias de supervisión de Prometheus. El uso de Prometheus Operator le ahorra la molestia de añadir manualmente objetivos de métricas y proveedores de servicios.

La definición personalizada de recursos (CRD) de ServiceMonitor le permite definir de forma declarativa cómo se supervisa un conjunto dinámico de servicios. También permite seleccionar qué servicios supervisar con la configuración deseada mediante selecciones de etiquetas. Con Prometheus Operator, puede introducir convenciones que especifiquen cómo se exponen las métricas. Los nuevos servicios pueden descubrirse automáticamente siguiendo la convención que establezca sin necesidad de reconfiguración manual.

La siguiente imagen ilustra el flujo de trabajo de Prometheus.

Prometheus_architecture Arquitectura_de_Prometeo

Requisitos previos

Este tutorial utiliza kube-prometheus para ahorrarle la molestia de instalar y configurar manualmente cada componente de monitorización y alerta.

Kube-prometheus recopila manifiestos de Kubernetes, paneles de control de Grafana y reglas de Prometheus combinadas con documentación y scripts.

Antes de desplegar los servicios de monitorización, debe crear una pila de monitorización utilizando la configuración del directorio de manifiestos de kube-prometheus.

$ 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/
El clusterrole prometheus-k8s por defecto no puede capturar las métricas de milvus, necesita parchearlo:
kubectl patch clusterrole prometheus-k8s --type=json -p='[{"op": "add", "path": "/rules/-", "value": {"apiGroups": [""], "resources": ["pods", "services", "endpoints"], "verbs": ["get", "watch", "list"]}}]'

Para eliminar una pila, ejecute kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup.

Despliegue de servicios de monitorización en Kubernetes

1. Acceda a los cuadros de mando

Reenvíe el servicio Prometheus al puerto 9090, y el servicio Grafana al puerto 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. Habilitar ServiceMonitor

El ServiceMonitor no está habilitado para Milvus Helm de forma predeterminada. Después de instalar el Operador Prometheus en el clúster Kubernetes, puede habilitarlo añadiendo el parámetro metrics.serviceMonitor.enabled=true.

Con Helm

Puede habilitar el ServiceMonitor configurando el parámetro metrics.serviceMonitor.enabled=true de la siguiente manera si ha instalado la tabla Milvus Helm.

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

Cuando finalice la instalación, utilice kubectl para comprobar el recurso ServiceMonitor.

Con Milvus Operator

Puede habilitar el ServiceMonitor de la siguiente manera si ha instalado Milvus utilizando el Milvus Operator.

  1. Ejecute el siguiente comando para editar el recurso personalizado MIlvus. El siguiente comando asume que el recurso personalizado se llama my-release.

    $ kubectl edit milvus my-release
    
  2. Edite el campo spec.components.disableMetric a false.

    ...
    spec:
      components:
        disableMetric: false # set to true to disable metrics
    ...
    
  3. Guarde y salga del editor.

  4. Espera a que el operador reconcilie los cambios. Puede comprobar el estado del recurso personalizado Milvus ejecutando el siguiente comando.

    $ kubectl get milvus my-release -o yaml
    

El campo status.components.metrics.serviceMonitor.enabled debería ser true.

3. Compruebe las métricas

Tras habilitar ServiceMonitor, puede acceder al panel de Prometheus en http://localhost:9090/.

Haga clic en la pestaña Status y, a continuación, en Targets. Debería ver los objetivos de los componentes de Milvus.

Prometheus_targets Prometheus_targets

Haga clic en la pestaña Graph e introduzca la expresión up{job="default/my-release"} en el cuadro de entrada de expresiones. Debería ver las métricas de los componentes Milvus.

Prometheus_graph Prometheus_graph

4. Compruebe el ServiceMonitor

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

Siguiente paso