es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agregar un objetivo de raspado de Kubernetes a una instancia de Prometheus que NO está en Kubernetes.

Ejecuto prometheus localmente como http://localhost:9090/targets con

docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus

y quiero conectarlo a varias instancias de Kubernetes (clúster) que tenemos.
Verificar que el raspado funcione, probar tableros de Grafana, etc.

Y luego haré lo mismo en un servidor dedicado que será especialmente para monitoreo.
Sin embargo, todas las búsquedas en Google me dan diferentes formas de configurar prometheus que ya está dentro de una instancia de Kubernetes, y no hay forma de leer métricas de un Kubernetes externo.

¿Cómo agregar un objetivo de raspado de Kubernetes a una instancia de Prometheus que NO está en Kubernetes?


He leído De dónde provienen las métricas de Kubernetes y verifiqué que mi (primer) clúster de Kubernetes tenga el Servidor de Métricas.

kubectl get pods --all-namespaces | grep metrics-server 

Definitivamente no tiene sentido agregar una instancia de Prometheus a cada instancia de Kubernetes (clúster). Un Prometheus debe poder leer métricas de muchos clústeres de Kubernetes y de cada nodo dentro de ellos.

P.D. Alguna pregunta antigua tiene respuesta para instalar Prometheus en cada Kubernetes y luego usar federación, que es justo lo contrario de lo que estoy buscando.

P.P.D. También me resulta extraño que Kubernetes y Prometheus, que son los proyectos número 1 y 2 de la Cloud Native Foundation, no tengan un simple “agregar objetivo de Kubernetes en Prometheus” o un simple paso.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar un objetivo de escrapeo de Kubernetes a una instancia de Prometheus que NO está en Kubernetes, puedes seguir estos pasos:

    1. Obtén la dirección del servidor API del clúster de Kubernetes.
      kubectl config view --minify -o jsonpath={.clusters[0].cluster.server}
      
    2. Edita el archivo de configuración de Prometheus prometheus.yml y agrega lo siguiente:
      - job_name: 'kubernetes-cluster'
       scrape_interval: 30s
       kubernetes_sd_configs:
       - api_server: <dirección del="" servidor="" api="" de="" kubernetes="">
         role: node
       scheme: https
       tls_config:
           ca_file: <ruta al="" certificado="" de="" ca="">
           cert_file: <ruta al="" certificado="" de="" cliente="">
           key_file: <ruta a="" la="" clave="" de="" cliente="">
      

      Reemplaza <dirección del="" servidor="" api="" de="" kubernetes=""> con la dirección obtenida en el paso 1. Si el servidor API no está asegurado con TLS, elimina la sección tls_config. Si el servidor API está asegurado con un certificado autofirmado, proporciona la ruta al certificado de CA en el campo ca_file, y el certificado y la clave de cliente en los campos cert_file y key_file, respectivamente.

    3. Reinicia la instancia de Prometheus para cargar la nueva configuración.

    4. Verifica que el objetivo de escrapeo de Kubernetes esté funcionando accediendo a la página de destinos del servidor Prometheus (http://localhost:9090/targets`) y verificando que el trabajokubernetes-cluster` esté presente y tenga objetivos saludables.

    Ahora puedes utilizar paneles de Grafana para visualizar las métricas de Kubernetes recopiladas por Prometheus. Asegúrate de configurar Grafana para usar el punto de conexión de Prometheus (`http://localhost:9090`) como su origen de datos.</dirección></dirección>

Comments are closed.