{"id":21063,"date":"2020-05-27T08:04:35","date_gmt":"2020-05-27T06:04:35","guid":{"rendered":"https:\/\/www.teldat.com\/sin-categorizar\/21063\/grafana-prometheus-monitorizacion-kubernets-clusters\/"},"modified":"2022-12-19T13:18:34","modified_gmt":"2022-12-19T11:18:34","slug":"grafana-prometheus-monitorizacion-kubernets-clusters","status":"publish","type":"post","link":"https:\/\/www.teldat.com\/es\/blog\/grafana-prometheus-monitorizacion-kubernets-clusters\/","title":{"rendered":"Grafana y Prometheus para monitorizar clusters de Kubernetes"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignleft wp-image-5459 size-medium\" src=\"https:\/\/www.teldat.com\/wp-content\/uploads\/2022\/06\/jorge-montero-mayo2020-300x200.jpg\" alt=\"Grafana\" width=\"300\" height=\"200\" title=\"\">Uno de los problemas m\u00e1s comunes a los que nos enfrentamos en IT es la <strong>motorizaci\u00f3n de los sistemas inform\u00e1ticos,<\/strong> as\u00ed como el sistema de alertas que nos avisa si algo no funciona como debe.<\/p>\n<p><!--more--><\/p>\n<p>En el mundo de los <strong><em>microservicios y DevOps,<\/em><\/strong> tambi\u00e9n encontramos este problema, ya que, sea bien un servicio web administrado por la nube,\u00a0 una m\u00e1quina virtual, o un <a href=\"https:\/\/www.teldat.com\/es\/blog\/kubernetes-microservicios-metodologias-agiles\/\"><strong>cluster\u00a0 de kubernetes<\/strong><\/a>,\u00a0 tenemos la necesidad de <strong>monitorizar en tiempo real toda la infraestructura. <\/strong>Para solucionar este problema se desarroll\u00f3 la <a href=\"https:\/\/grafana.com\/\" target=\"_blank\" rel=\"nofollow noopener\">herramienta de Grafana<\/a>,<\/p>\n<h2><\/h2>\n<h2>\u00bfQu\u00e9 es Grafana?<\/h2>\n<p>Se trata de un <strong><em>software libre<\/em> basado en<\/strong> licencia de Apache 2.0, que nos permite <strong>visualizar datos recogidos de diversas fuentes como Graphite, InfluxDB o Prometheus,<\/strong> herramientas que recopilan datos de nuestra infraestructura, como el uso de CPU, de memoria, o el tr\u00e1fico de red de una m\u00e1quina virtual, de un cluster de Kubernetes, o de cada uno de sus contenedores.<\/p>\n<p>Sin embargo, <strong>la verdadera potencia de Grafana reside en la flexibilidad para crear todos los paneles que queramos<\/strong> con gr\u00e1ficas donde podemos formatear estos datos y representarlos como m\u00e1s nos interese. Por ejemplo, podemos mostrar el dato actual de uso CPU de un contenedor o pod dentro de kubernetes en tiempo real, o podemos mostrar una gr\u00e1fica con los distintos valores en progresi\u00f3n temporal\u00a0.<\/p>\n<p>Adem\u00e1s Grafana tiene un <strong>repositorio completo de paneles predefinidos y plugins totalmente gratis,<\/strong> que podemos utilizar para mostrar informaci\u00f3n de distintas fuentes.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_5457\" style=\"width: 610px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" aria-describedby=\"caption-attachment-5457\" class=\"wp-image-5457\" src=\"https:\/\/www.teldat.com\/wp-content\/uploads\/2022\/06\/jorge-montero1-300x187.png\" alt=\"Grafana panel\" width=\"600\" height=\"375\" title=\"\"><p id=\"caption-attachment-5457\" class=\"wp-caption-text\">Figura 1: Grafana panel<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>Todos estos valores se muestran lanzando <em>querys<\/em> a la herramienta que recoge los datos. En este art\u00edculo recomendamos el uso de <a href=\"https:\/\/prometheus.io\/\" target=\"_blank\" rel=\"nofollow noopener\"><strong>Prometheus<\/strong><\/a>,\u00a0 un software <em>de c\u00f3digo abierto<\/em> que permite la <strong>recolecci\u00f3n de datos mediante extensiones, <\/strong>ya sean estas desarrolladas por el propio equipo de Prometheus, por la comunidad, o por terceros. La recomendamos como <strong>herramienta encargada de recopilar los datos<\/strong> por la <strong><em>f\u00e1cil<\/em><\/strong><em> instalaci\u00f3n,<\/em> y por la <strong><em>facilidad de uso,<\/em><\/strong> ya sea para recabar informaci\u00f3n mediante extensiones como <strong>Prometheus Node Exporter<\/strong> para m\u00e1quinas virtuales, o mediante extesiones de terceros como <a href=\"https:\/\/github.com\/kubernetes\/kube-state-metrics\" target=\"_blank\" rel=\"nofollow noopener\">Kube-State-Metrics<\/a>\u00a0 para recopilar informaci\u00f3n en un cluster de Kubernetes.<\/p>\n<p>Tambi\u00e9n es recomendable por su <strong>potencia<\/strong> a la hora de interpretar los datos seg\u00fan hagamos la llamada a las querys desde Grafana, ya que nos posibilita hacer cosas como calcular datos directamente como la suma total de la memoria usada por todos los pods de un cluster de Kubernetes, e incluso tiene <strong>funciones incluidas que nos permiten ir m\u00e1s all\u00e1,<\/strong> calculando por ejemplo, datos basados en rangos de tiempo, como el n\u00famero de paquetes de red que han entrado nuestro entorno en los \u00faltimos 10 minutos.<\/p>\n<p>Por \u00faltimo, Prometheus \u201crasca\u201d la informaci\u00f3n, es decir, se le dice en la configuraci\u00f3n qu\u00e9 datos tiene que buscar y d\u00f3nde lo tiene que hacer.<\/p>\n<h2>Monitorizaci\u00f3n de Clusters de Kubernetes<\/h2>\n<p>Una vez explicadas las herramientas que vamos a utilizar, ahora toca hablar sobre la <strong>arquitectura necesaria para poder monitorizar varios clusters de Kubernetes<\/strong>.<\/p>\n<ol>\n<li>En primer lugar, necesitamos un <strong>servidor de Grafana,<\/strong> corriendo, por ejemplo, como servicio en una <strong>m\u00e1quina virtual con Ubuntu server.<\/strong><\/li>\n<li>En segundo lugar, necesitamos que en el mismo servidor donde se encuentre Grafana haya un <strong>servidor de Prometheus<\/strong> corriendo como servicio de <strong>Linux,<\/strong> al que llamaremos <strong><em>Prometheus global.<\/em><\/strong><\/li>\n<li>Por \u00faltimo, necesitamos que haya <strong>un servidor Prometheus en cada uno de los clusters de Kubernetes,<\/strong> es f\u00e1cil encontrar por Interntet paqueter\u00eda predefinida de Prometheus para Kubernetes, ya sea mediante <em>deployments,<\/em> o mediante repositorios de<em> Charts de Helm<\/em>, donde solo tenemos que configurarlo y lanzarlo en nuestros clusters de Kubernetes, a este pod de Prometheus le llamaremos <strong><em>Prometheus local.<\/em><\/strong><\/li>\n<\/ol>\n<p>El <strong>Grafana mostrar\u00e1 los datos del Prometheus global, <\/strong>este tendr\u00e1 en su configuraci\u00f3n como <em>targets<\/em> a todos los <strong>Prometheus locales<\/strong> de los diferentes clusters de Kubernetes, que normalmente escuchan por el puerto 9090, e ir\u00e1 a recoger la informaci\u00f3n que a su vez haya recopilado cada uno de los Prometheus locales.<\/p>\n<p>Cada Prometheus local se encargar\u00e1 de recopilar toda la informaci\u00f3n de su cluster de kubernetes utilizando extensiones como <strong>Node Esporter<\/strong> para los nodos y <strong>Kube-State_Metrics<\/strong> para los pods.<\/p>\n<p>Para cada Prometheus local debemos <strong>configurar un tag o etiqueta,<\/strong> con un valor distinto en cada cluster de Kubernetes; por ejemplo utilizar un tag <em>\u201ccluster_name\u201d<\/em> con un valor distinto en cada cluster. De esta forma, podremos <strong>distinguir entre clusters<\/strong> cuando hagamos la llamada a la query del Prometheus global en el Grafana a\u00f1adiendo a la query: <em>cluster_name=\u201dkube_cluster_uno\u201d o cluster_name=\u201dkube_cluster_dos\u201d<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_5458\" style=\"width: 610px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" aria-describedby=\"caption-attachment-5458\" class=\"wp-image-5458\" src=\"https:\/\/www.teldat.com\/wp-content\/uploads\/2022\/06\/jorge-montero2-300x226.png\" alt=\"Monitor Server with Kubernetes Clusters\" width=\"600\" height=\"452\" title=\"\"><p id=\"caption-attachment-5458\" class=\"wp-caption-text\">Figura 2: Monitor Server with Kubernetes Clusters<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>Con esto, ya tendr\u00edamos la forma de <strong>monitorizar varios clusters de kubernetes con Grafana y Prometheus.<\/strong><\/p>\n<p>Existen otras herramientas y arquitecturas para hacer esto, pero a <strong>Teldat<\/strong> esta es la forma que mejores resultados nos ha dado hasta la fecha en la nuestras<strong> soluciones SDN,<\/strong> como por ejemplo <a href=\"https:\/\/www.teldat.com\/es\/soluciones\/networking-avanzado\/cnm-sd-wan-redes-hibridas\/\"><strong>SD-WAN<\/strong><\/a>, del que podemos <strong>monitorizar todos los par\u00e1metros en tiempo real<\/strong> y estar seguros en todo momento de que funciona correctamente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uno de los problemas m\u00e1s comunes a los que nos enfrentamos en IT es la motorizaci\u00f3n de los sistemas inform\u00e1ticos, as\u00ed como el sistema de alertas que nos avisa si algo no funciona como debe.<\/p>\n","protected":false},"author":214,"featured_media":19930,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[1168],"tags":[1090],"class_list":["post-21063","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tecnologia-sd-wan","tag-analisis-de-datos"],"acf":[],"wpml_current_locale":"es_ES","wpml_translations":[{"locale":"en_US","id":19927,"slug":"monitor-kubernets-clusters-grafana-prometheus","post_title":"Monitoring Kubernetes Clusters with Grafana and Prometheus","href":"https:\/\/www.teldat.com\/monitor-kubernets-clusters-grafana-prometheus\/"}],"_links":{"self":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/posts\/21063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/users\/214"}],"replies":[{"embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/comments?post=21063"}],"version-history":[{"count":0,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/posts\/21063\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/media\/19930"}],"wp:attachment":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/media?parent=21063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/categories?post=21063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/tags?post=21063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}