Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

kube-prometheus-stack

Presentación

kube-prometheus-stack utiliza Prometheus-operator y Prometheus para proporcionar capacidades de monitoreo de clúster de Kubernetes de extremo a extremo fáciles de usar.

Con este complemento, puede conectarse a Container Intelligent Analysis (CIA) para ver los datos de monitoreo y configurar alarmas.

Comunidad de código abierto: https://github.com/prometheus/prometheus

Restricciones

De forma predeterminada, el componente kube-state-metrics del complemento no recopila etiquetas ni anotaciones de recursos de Kubernetes. Para recopilar estas etiquetas y anotaciones, debe habilitar manualmente la función de recopilación en los parámetros de inicio y comprobar si las métricas correspondientes se agregan a la lista blanca de recopilación de ServiceMonitor denominada kube-state-metrics. Para obtener más información, véase Recopilación de todas las etiquetas y anotaciones de un pod.

Instalación del complemento

  1. Inicie sesión en la consola de CCE y acceda a la consola del clúster. Elija Add-ons en el panel de navegación, localice kube-prometheus-stack a la derecha y haga clic en Install.
  2. En la página Install Add-on, configure las especificaciones.

    • Containers: instancia de componente creada por el complemento. Para obtener más información, véase Componentes. Puede seleccionar o personalizar una especificación según sea necesario.

  3. Configuración de los parámetros relacionados.

    • Connect to Third Party: Para informar los datos de Prometheus a un sistema de monitoreo de terceros, debe introducir la dirección y el token del sistema de monitoreo de terceros y determinar si se omite la autenticación de certificado.
    • Prometheus HA: Los componentes de Prometheus-server, Prometheus-operator, thanos-query, custom-metrics-apiserver y alertmanager se despliegan en modo de varias instancias en el clúster.
    • Install Grafana: Use Grafana para visualizar los datos de monitoreo. Grafana crea un volumen de almacenamiento de 5 GiB por defecto. Desinstalar el complemento no eliminará este volumen. El nombre de usuario y la contraseña predeterminados para el primer inicio de sesión es admin. Se le pedirá que cambie la contraseña inmediatamente después de iniciar sesión.
    • Collection Period: período de recogida de datos de seguimiento.
    • Data Retention: período de conservación de los datos de seguimiento.
    • Storage: seleccione el tipo y el tamaño del disco para almacenar los datos de supervisión. La desinstalación del complemento no eliminará este volumen.

      Existe un PVC disponible llamado pvc-prometheus-server en el espacio de nombres monitoring y se utilizará como fuente de almacenamiento.

  4. Haga clic en Install.

Adición de reglas de métrica personalizadas

El complemento kube-prometheus-stack de la nueva versión no proporciona métricas personalizadas. Es decir, las reglas de recopilación de métricas ya no se configuran en el ConfigMap de configuración de adaptador de usuario (adapter-config en versiones anteriores). Necesita agregar reglas de recopilación de métricas. Para obtener más información sobre cómo agregar reglas, consulte Descubrimiento de métricas y configuración de presentación. Si actualiza el complemento de una versión anterior a la nueva, las configuraciones originales se heredan y utilizan.

Para usar prometheus para monitorear las métricas personalizadas, la aplicación debe proporcionar una API de monitorización de métricas. Para obtener más información, véase Recopilación de datos de monitorización de Prometheus.

  1. Inicie sesión en la consola de CCE y acceda a la consola del clúster. En el panel de navegación, elija ConfigMaps and Secrets.
  2. Cambie al espacio de nombres monitoring, busque el ConfigMap user-adapter-config (adapter-config en las versiones anteriores) en la página de fichas ConfigMaps y haga clic en Update.

  3. En Data, haga clic en Edit para el archivo config.yaml para agregar una regla de recopilación de métricas personalizada bajo el campo rules. Haga clic en OK.

    Puede agregar varias reglas de recopilación agregando varias configuraciones en el campo rules. Para obtener más información, consulte Descubrimiento de métricas y configuración de presentación.

    Ejemplo de regla de métrica personalizada:
    rules:
    # The rule matches the accumulated cAdvisor metric in seconds.
    - seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}'
      resources:
        # Specify pod and namespace resources.
        overrides:
          namespace:
            resource: namespace
          pod:
            resource: pod
      name:
        # Delete the container_ prefix and _seconds_total suffix, and use the content captured in .* as the metric name.
        matches: "^container_(.*)_seconds_total$"
      # Query metrics. .Series and .LabelMatchers are available in the Go language. Use separators << and >> to avoid conflicts with the Prometheus query language.
      metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[2m])) by (<<.GroupBy>>)'

    En el ejemplo anterior, solo se recopilan métricas básicas de pod. Para recopilar métricas personalizadas, consulta la guía oficial para agregar o modificar reglas.

  4. Redistribuya la carga de trabajo custom-metrics-apiserver en el espacio de nombres monitoring.

Componentes

Todos los recursos de Kubernetes creados durante la instalación del complemento kube-prometheus-stack se crean en el espacio de nombres monitoring.

Tabla 1 componentes kube-prometheus-stack

Componente del contenedor

Descripción

Tipo de recurso

prometheusOperator

(nombre de la carga de trabajo: prometheus-operator)

Despliega y gestiona el Prometheus Server basado en CRD (CustomResourceDefinitions), y monitorea y procesa los eventos relacionados con estos CRD. Es el centro de control de todo el sistema.

Deployment

prometheus

(nombre de la carga de trabajo: prometheus-server)

Un clúster de Prometheus Server desplegado por el operador basado en los CRD de Prometheus que puede considerarse StatefulSets.

StatefulSet

alertmanager

(nombre de la carga de trabajo: alertmanager-alertmanager)

Centro de alarma del complemento. Recibe alarmas enviadas por Prometheus y gestiona la información de alarmas deduplicando, agrupando y distribuyendo.

StatefulSet

thanosSidecar

Disponible solo en modo HA. Se ejecuta con prometheus-server en el mismo pod para implementar el almacenamiento persistente de datos métricos de Prometheus.

Container

thanosQuery

Disponible solo en modo HA. Entrada para la consulta de PromQL cuando Prometheus está en escenarios de HA. Puede eliminar métricas duplicadas de Store o Prometheus.

Deployment

adapter

(nobre de carga de trabajo: custom-metrics-apiserver)

Agrega métricas personalizadas al servidor nativo de la API de Kubernetes.

Deployment

kubeStateMetrics

(nombre de la carga de trabajo: kube-state-metrics)

Convierte los datos de métricas de Prometheus en un formato que las API de Kubernetes pueden identificar. De forma predeterminada, el componente kube-state-metrics no recopila todas las etiquetas y anotaciones de los recursos de Kubernetes. Para recopilar todas las etiquetas y anotaciones, consulte Recopilación de todas las etiquetas y anotaciones de un pod.

Deployment

nodeExporter

(nombre de la carga de trabajo: node-exporter)

Se despliega en cada nodo para recopilar datos de monitoreo de nodo.

DaemonSet

grafana

(nombre de la carga de trabajo: grafana)

Visualiza los datos de monitoreo. grafana crea un volumen de almacenamiento de 5 GiB por defecto. La desinstalación del complemento no eliminará este volumen.

Deployment

clusterProblemDetector

(nombre de la carga de trabajo: cluster-problem-detector)

Supervisa las excepciones del clúster.

Deployment

Acceso a Grafana

Si Grafana se instala durante la instalación del complemento, puede acceder al nodo a través del Service llamado grafana que es un Service de NodePort. Si se accede al nodo desde una red externa, puede vincular una EIP al nodo y acceder al nodo a través del puerto del nodo.

Como se muestra en la siguiente figura, la dirección de acceso es http://{{Node IP address}}:30913.

Recopilación de todas las etiquetas y anotaciones de un pod

  1. Inicie sesión en la consola de CCE y acceda a la consola del clúster. En el panel de navegación, elija Workloads.
  2. Cambie al espacio de nombres monitoring, busque la carga de trabajo kube-state-metrics en la página de ficha Deployments y haga clic en Upgrade en la columna Operation.
  3. En el área Lifecycle de la configuración del contenedor, edite el comando de inicio.

    Agregue la siguiente información al final del parámetro original de inicio kube-state-metrics:
    --metric-labels-allowlist=pods=[*],nodes=[node,failure-domain.beta.kubernetes.io/zone,topology.kubernetes.io/zone]
    Para recopilar anotaciones, agregue parámetros en los parámetros de inicio de la misma manera.
    --metric-annotations-allowlist=pods=[*],nodes=[node,failure-domain.beta.kubernetes.io/zone,topology.kubernetes.io/zone]

    Al editar el comando de inicio, no modifique otros parámetros de inicio originales. De lo contrario, el componente puede ser anormal.

  4. kube-state-metrics comienza a recopilar las etiquetas/anotaciones de pods y nodos y comprueba si kube_pod_labels/kube_pod_annotations está en la tarea de recopilación de CloudScope.

    kubectl get servicemonitor kube-state-metrics -nmonitoring -oyaml | kube_pod_labels

Para obtener más parámetros de inicio de kube-state-metrics, consulte kube-state-metrics/cli-arguments.

Proporcionar métricas de recursos

Las métricas de recursos de contenedores y nodos, como el uso de CPU y memoria, se pueden obtener con la API de métricas de Kubernetes. Se puede acceder directamente a las métricas de recursos, por ejemplo, mediante el comando kubectl top, o utilizar las políticas HPA o CustomedHPA personalizadas para el ajuste automático.

El complemento puede proporcionar la API de Kubernetes Metrics que está deshabilitada de forma predeterminada. Para habilitar la API, cree el siguiente objeto de APIService:

apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  labels:
    app: custom-metrics-apiserver
    release: cceaddon-prometheus
  name: v1beta1.metrics.k8s.io
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: custom-metrics-apiserver
    namespace: monitoring
    port: 443
  version: v1beta1
  versionPriority: 100

Puede guardar el objeto como un archivo, nombrarlo metrics-apiservice.yaml y ejecutar el siguiente comando:

kubectl create -f metrics-apiservice.yaml

Ejecute el comando kubectl top. Si se muestra la siguiente información, se puede acceder a la API de métricas:

# kubectl top pod -n monitoring
NAME                                                      CPU(cores)   MEMORY(bytes)
......
custom-metrics-apiserver-d4f556ff9-l2j2m                  38m          44Mi
......

Para desinstalar el complemento, ejecute el siguiente comando kubectl y elimine el objeto APIService. De lo contrario, el complemento de metrics-server no se puede instalar debido a los recursos APIService residuales.

kubectl delete APIService v1beta1.metrics.k8s.io

Historial de cambios

Tabla 2 Versiones de complementos de CCE

Versión del complemento

Versión de clúster admitida

Versión de la comunidad (solo para clústeres de v1.17 y posteriores)

3.5.1

/v1.(19|21|23).*/

2.35.0

3.5.0

/v1.(19|21|23).*/

2.35.0