{"id":31864,"date":"2019-10-31T21:43:33","date_gmt":"2019-10-31T18:43:33","guid":{"rendered":"https:\/\/prohoster.info\/blog\/monitoring-myortv-da-zdravstvuet-monitoring\/"},"modified":"2019-10-31T21:43:33","modified_gmt":"2019-10-31T18:43:33","slug":"monitoring-myortv-da-zdravstvuet-monitoring","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring","title":{"rendered":"\u00bfLa monitorizaci\u00f3n ha muerto? \u2014 Viva la monitorizaci\u00f3n","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u00bfLa monitorizaci\u00f3n ha muerto? \u2014 Viva la monitorizaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/04\/13453bb7025a6bf3d1c7a3dc6d038d16.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNuestra empresa se dedica desde 2008 principalmente a la gesti\u00f3n de infraestructuras y al soporte t\u00e9cnico 24\/7 de proyectos web: tenemos m\u00e1s de 400 clientes, alrededor del 15% del comercio electr\u00f3nico en Rusia. Por lo tanto, el soporte implica una arquitectura muy diversa. Si algo falla, tenemos la obligaci\u00f3n de repararlo en 15 minutos. Pero para entender que ha ocurrido una aver\u00eda, es necesario monitorear el proyecto y reaccionar ante los incidentes. \u00bfY c\u00f3mo se hace esto? <\/p>\n<p>Considero que en la organizaci\u00f3n de un sistema de monitoreo adecuado se producen problemas. Si no hubiera problemas, entonces mi discurso consistir\u00eda en un solo punto: \u00abPor favor, instalen Prometheus + Grafana y los complementos 1, 2, 3\u00bb. Desafortunadamente, ahora no funciona as\u00ed. Y el principal problema es que todos siguen creyendo en algo que exist\u00eda en 2008, desde el punto de vista de los componentes de software. <\/p>\n<p>En relaci\u00f3n con la organizaci\u00f3n del sistema de monitoreo, me atrever\u00eda a decir que... no existen proyectos con un monitoreo adecuado. La situaci\u00f3n es tan mala que si algo cae, existe el riesgo de que pase desapercibido; todos creen que \u00abtodo est\u00e1 siendo monitoreado\u00bb.<br \/>\nPuede que todo est\u00e9 siendo monitoreado. Pero, \u00bfc\u00f3mo? <\/p>\n<p>Todos hemos enfrentado una historia similar a la siguiente: trabaja un devops, un admin, y llega el equipo de desarrolladores y dice: \u00abHemos lanzado, ahora monitores\u00bb. \u00bfQu\u00e9 monitorar? \u00bfC\u00f3mo funciona esto?<\/p>\n<p>Est\u00e1 bien. Monitorizamos a la antigua. Pero ya ha cambiado y resulta que estabas monitoreando el servicio A, que se convirti\u00f3 en el servicio B, que interact\u00faa con el servicio C. Pero el equipo de desarrolladores te dice: \u00abInstala el software, \u00a1se supone que debe monitorearlo todo!\u00bb<\/p>\n<p>\u00bfEntonces, qu\u00e9 ha cambiado? \u2014 \u00a1Todo ha cambiado!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>A\u00f1o 2008. Todo es perfecto.<\/h4>\n<p>\nHay un par de desarrolladores, un servidor, un servidor de base de datos. Todo comienza aqu\u00ed. Tenemos cierta informaci\u00f3n, instalamos zabbix, Nagios, cacti. Y luego configuramos alertas claras para la CPU, el funcionamiento de los discos, el espacio en los discos. Tambi\u00e9n hacemos un par de comprobaciones manuales para asegurarnos de que el sitio responde, que los pedidos llegan a la base de datos. Y eso es todo: estamos m\u00e1s o menos protegidos. <\/p>\n<p>Si comparamos la cantidad de trabajo que hac\u00eda el administrador para asegurar el monitoreo, el 98% era autom\u00e1tico: la persona encargada del monitoreo debe entender c\u00f3mo instalar Zabbix, configurarlo y ajustar las alertas. Y el 2% son verificaciones externas: que el sitio responde y hace consultas a la base de datos, que han llegado nuevos pedidos.<\/p>\n<p><img decoding=\"async\" alt=\"\u00bfLa monitorizaci\u00f3n ha muerto? \u2014 Viva la monitorizaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/04\/3563dda4d025fd18200d6410d7d065ed.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h4>A\u00f1o 2010. Aumenta la carga<\/h4>\n<p>\nComenzamos a escalar los webs, agregamos un motor de b\u00fasqueda. Queremos estar seguros de que el cat\u00e1logo de productos incluye todos los art\u00edculos. Y que la b\u00fasqueda de productos funciona. Que la base de datos est\u00e1 operativa, que se est\u00e1n realizando pedidos, que el sitio responde externamente y responde desde dos <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/es\/server\/\"   title=\"servidores\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1314\">servidores<\/a> y el usuario no es expulsado del sitio mientras se rebalancea en otro servidor, etc. Las entidades est\u00e1n aumentando. <\/p>\n<p>Y la entidad relacionada con la infraestructura sigue siendo la m\u00e1s importante en la mente del gerente. A\u00fan persiste la idea de que la persona encargada del monitoreo es quien instala Zabbix y puede configurarlo.<\/p>\n<p>Sin embargo, surgen tareas relacionadas con la realizaci\u00f3n de verificaciones externas, la creaci\u00f3n de un conjunto de scripts para las consultas del indexador de b\u00fasqueda, un conjunto de scripts para verificar que la b\u00fasqueda cambia durante el proceso de indexaci\u00f3n, un conjunto de scripts que comprueban que los productos se entregan al servicio, etc.<\/p>\n<p><img decoding=\"async\" alt=\"\u00bfLa monitorizaci\u00f3n ha muerto? \u2014 Viva la monitorizaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/04\/afa94a3156a24a81ab359b430341f27d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNota: he escrito \"conjunto de scripts\" tres veces. Es decir, la persona responsable del monitoreo ya no es solo quien instala Zabbix. Es alguien que comienza a programar. Pero en la mente del equipo, nada a\u00fan ha cambiado. <\/p>\n<p>Sin embargo, el mundo cambia, volvi\u00e9ndose cada vez m\u00e1s complejo. Se agrega una capa de virtualizaci\u00f3n, varios nuevos sistemas. Comienzan a interactuar entre s\u00ed. \u00bfQui\u00e9n dijo \"huele a microservicios?\" Pero cada servicio, a\u00fan por separado, se ve como un sitio. Podemos acceder a \u00e9l y entender que proporciona la informaci\u00f3n necesaria y funciona por s\u00ed mismo. Y si eres un administrador que ha estado trabajando en un proyecto que ha evolucionado 5-7-10 a\u00f1os, este conocimiento se acumula: aparece un nuevo nivel, lo asimilas, aparece otro nivel, lo asimilas\u2026 <\/p>\n<p><img decoding=\"async\" alt=\"\u00bfLa monitorizaci\u00f3n ha muerto? \u2014 Viva la monitorizaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/04\/3578182594d012732afde7849b75322a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPero rara vez alguien mantiene un proyecto durante 10 a\u00f1os.<\/p>\n<h3>Resumen del monitor de sistema<\/h3>\n<p>\nSupongamos que llegaste a una nueva startup que r\u00e1pidamente reuni\u00f3 a 20 desarrolladores y escribi\u00f3 15 microservicios, y t\u00fa eres el administrador al que le dicen: \"Construye CI\/CD. Por favor\". Construiste CI\/CD y de repente oyes: \"Es dif\u00edcil trabajar con producci\u00f3n en el 'cubo', sin entender c\u00f3mo funcionar\u00e1 la aplicaci\u00f3n all\u00ed. Haznos una sandbox en este mismo 'cubo'.<br \/>\n Creas una sandbox en este cubo. Te dicen de inmediato: \"Queremos una base de datos de staging que se actualice todos los d\u00edas desde producci\u00f3n, para entender que funciona en esa base de datos, pero sin estropear la base de datos de producci\u00f3n\".<\/p>\n<p>Vives en todo esto. Quedan 2 semanas para el lanzamiento y te dicen: \"Ahora debemos monitorear todo esto\u2026\" Es decir, monitorear la infraestructura en cl\u00faster, monitorear la arquitectura de microservicios, monitorear la interacci\u00f3n con servicios externos\u2026 <\/p>\n<p>Y los colegas sacan de la cabeza un esquema familiar y dicen: \"\u00a1Pero aqu\u00ed todo es claro! Instala un programa que lo monitoree todo\". S\u00ed, s\u00ed: Prometheus + Grafana + plugins. <br \/>\nY a\u00f1aden: \"Tienes un par de semanas, haz que todo sea confiable\".<\/p>\n<p>En un mont\u00f3n de proyectos que vemos, se asigna a una persona para el monitoreo. Imagina que queremos contratar a alguien por 2 semanas para que se ocupe del monitoreo, y le estamos armando su curr\u00edculum. \u00bfQu\u00e9 habilidades deber\u00eda tener esta persona, considerando todo lo que hemos dicho antes?<\/p>\n<ul>\n<li>Deber\u00eda entender el monitoreo y la especificidad del funcionamiento de la infraestructura f\u00edsica.<\/li>\n<li>Deber\u00eda comprender la especificidad del monitoreo de Kubernetes (todo el mundo quiere estar en el 'cubo', porque se puede abstraer de todo, esconderse, ya que el administrador se encargar\u00e1 del resto), entender su infraestructura y saber c\u00f3mo monitorear aplicaciones dentro de ella.<\/li>\n<li>Deber\u00eda entender que los servicios se comunican entre s\u00ed de maneras particulares, y conocer las especificidades de la interacci\u00f3n entre servicios. Es bastante posible ver un proyecto donde parte de los servicios se comunican de manera sincr\u00f3nica, porque de otra forma no funciona. Por ejemplo, el backend accede a REST, a gRPC en el servicio de cat\u00e1logo, obtiene la lista de productos y devuelve. Aqu\u00ed no se puede esperar. Y con otros servicios trabaja de manera asincr\u00f3nica. Pasar un pedido al servicio de entrega, enviar un correo, etc.<br \/>\n\u00bfYa te has perdido con todo esto? Pues el administrador que necesita monitorearlo se ha perdido a\u00fan m\u00e1s. <\/li>\n<li>Debe ser capaz de planificar y hacerlo correctamente, ya que el trabajo est\u00e1 aumentando cada vez m\u00e1s. <\/li>\n<li>Por lo tanto, debe crear una estrategia a partir del servicio creado para entender c\u00f3mo se puede monitorizar espec\u00edficamente. Necesita comprender la arquitectura del proyecto y su desarrollo, adem\u00e1s de conocer las tecnolog\u00edas utilizadas en el desarrollo. <\/li>\n<\/ul>\n<p>\nRecordemos un caso completamente normal: parte de los servicios en PHP, parte en Go, parte en JS. Trabajan de alguna manera entre s\u00ed. De ah\u00ed proviene el t\u00e9rmino \"microservicio\": se han vuelto tantas las sistemas individuales que los desarrolladores no pueden entender el proyecto en su conjunto. Una parte del equipo crea servicios en JS, que funcionan por s\u00ed solos y no saben c\u00f3mo funciona el resto del sistema. Otra parte desarrolla servicios en Python y no se involucra en c\u00f3mo funcionan otros servicios, est\u00e1n aislados en su \u00e1rea. Tercera parte: desarrolla servicios en PHP o en algo m\u00e1s. <br \/>\nEstas 20 personas est\u00e1n divididas en 15 servicios, y solo hay un administrador que debe entender todo esto. \u00a1Espera! Acabamos de dividir el sistema en 15 microservicios, porque 20 personas no pueden comprender todo el sistema. <\/p>\n<p>Sin embargo, hay que monitorizarlo de alguna manera...<\/p>\n<p>\u00bfCu\u00e1l es el resultado? Al final, hay una persona que comprende todo lo que no puede entender un equipo entero de desarrolladores, y adem\u00e1s debe conocer y manejar lo que hemos se\u00f1alado antes: la infraestructura del hardware, la infraestructura de Kubernetes, etc.<\/p>\n<p>\u00bfQu\u00e9 se puede decir aqu\u00ed... Houston, tenemos un problema.<\/p>\n<h3>La monitorizaci\u00f3n de un proyecto de software moderno es, en s\u00ed misma, un proyecto de software.<\/h3>\n<p>\nDe la falsa confianza de que la monitorizaci\u00f3n es solo software, surge la creencia en los milagros. Y los milagros, lamentablemente, no ocurren. No se puede instalar Zabbix y esperar que todo funcione. No tiene sentido poner Grafana y esperar que todo est\u00e9 bien. La mayor parte del tiempo se dedicar\u00e1 a organizar las verificaciones del funcionamiento de los servicios y su interacci\u00f3n entre s\u00ed, adem\u00e1s de las verificaciones de c\u00f3mo funcionan los sistemas externos. De hecho, el 90% del tiempo no se dedicar\u00e1 a escribir scripts, sino al desarrollo de software. Y esto debe hacerlo un equipo que comprenda el funcionamiento del proyecto. <br \/>\nSi en esta situaci\u00f3n se deja a una sola persona a cargo de la monitorizaci\u00f3n, habr\u00e1 problemas. Y eso es lo que sucede en todas partes.<\/p>\n<p>Por ejemplo, hay varios servicios que se comunican entre s\u00ed a trav\u00e9s de Kafka. Llega un pedido, enviamos un mensaje sobre el pedido a Kafka. Hay un servicio que escucha la informaci\u00f3n sobre el pedido y lleva a cabo la entrega del producto. Hay otro servicio que escucha la informaci\u00f3n sobre el pedido y env\u00eda un correo al usuario. Luego surgen otros muchos servicios y comenzamos a confundirnos.<\/p>\n<p>Y si adem\u00e1s se lo entregas al administrador y a los desarrolladores en una etapa en la que queda poco tiempo para el lanzamiento, la persona tendr\u00e1 que entender todo este protocolo. Es decir, un proyecto de tal magnitud toma un tiempo considerable, y esto debe estar contemplado en el desarrollo del sistema. <br \/>\nSin embargo, muy a menudo, especialmente en las startups, vemos c\u00f3mo se pospone la monitorizaci\u00f3n. \"Ahora haremos una prueba de concepto, la lanzaremos, que se caiga \u2013 estamos dispuestos a sacrificar. Y luego monitorizaremos todo esto\". Cuando (o si) el proyecto comienza a generar ingresos, el negocio quiere desarrollar a\u00fan m\u00e1s funciones, \u00a1porque ha comenzado a funcionar, as\u00ed que hay que seguir avanzando! Y t\u00fa te encuentras en un punto en el que al principio necesitas monitorizar todo lo anterior, lo cual no toma el 1% del tiempo, sino significativamente m\u00e1s. Y, por cierto, para la monitorizaci\u00f3n necesitar\u00e1s desarrolladores, y es m\u00e1s f\u00e1cil dedicarles a nuevas funciones. Al final, se desarrollan nuevas funciones, todo se complica, y te encuentras en un deadlock infinito.<\/p>\n<p>Entonces, \u00bfc\u00f3mo monitorizar un proyecto desde el principio, y qu\u00e9 hacer si te encuentras con un proyecto que necesita ser monitorizado y no sabes por d\u00f3nde empezar?<\/p>\n<p>En primer lugar, es necesario planificar. <\/p>\n<p><i>Una digresi\u00f3n l\u00edrica: a menudo se comienza con la monitorizaci\u00f3n de la infraestructura. Por ejemplo, tenemos Kubernetes. Empezamos instalando Prometheus con Grafana, implementamos complementos para monitorizar los 'cubos'. No solo los desarrolladores, sino tambi\u00e9n los administradores tienen la lamentable pr\u00e1ctica: \"Instalamos este complemento y probablemente el complemento sepa c\u00f3mo hacerlo\". A la gente le gusta comenzar con acciones simples y comprensibles, en lugar de con acciones importantes. Y la monitorizaci\u00f3n de la infraestructura es simplemente eso.<\/i><\/p>\n<p>Primero, decide qu\u00e9 y c\u00f3mo quieres monitorear, y luego elige la herramienta, porque otras personas no pueden pensar por ti. \u00bfY deber\u00edan? Otras personas pensaron en s\u00ed mismas, en un sistema universal, o ni siquiera pensaron cuando escribieron este plugin. Y que este plugin tenga 5000 usuarios no significa que ofrezca alg\u00fan beneficio. Es posible que t\u00fa seas el 5001, simplemente porque ya hab\u00eda 5000 personas antes que t\u00fa. <\/p>\n<p>Si comenzaste a monitorear la infraestructura y el backend de tu aplicaci\u00f3n dej\u00f3 de responder, todos los usuarios perder\u00e1n la conexi\u00f3n con la aplicaci\u00f3n m\u00f3vil. Aparecer\u00e1 un error. Vendr\u00e1n a ti y dir\u00e1n: \u201cLa aplicaci\u00f3n no funciona, \u00bfqu\u00e9 est\u00e1n haciendo aqu\u00ed?\u201d \u2014 \u201cEstamos monitoreando.\u201d \u2014 \u201c\u00bfC\u00f3mo monitorean si no ven que la aplicaci\u00f3n no funciona?!\u201d <\/p>\n<ol>\n<li>Creo que se debe comenzar a monitorear desde el punto de entrada del usuario. Si el usuario no ve que la aplicaci\u00f3n funciona, eso es un fracaso. Y el sistema de monitoreo debe alertar de esto en primer lugar. <\/li>\n<li>Solo entonces podemos monitorear la infraestructura. O hacerlo en paralelo. Con la infraestructura es m\u00e1s sencillo; aqu\u00ed, finalmente, podemos simplemente instalar Zabbix. <\/li>\n<li>Ahora necesitamos profundizar en las ra\u00edces de la aplicaci\u00f3n para entender qu\u00e9 no est\u00e1 funcionando.<\/li>\n<\/ol>\n<p>\nMi idea principal es que el monitoreo debe ir en paralelo con el proceso de desarrollo. Si separas al equipo de monitoreo para otras tareas (creaci\u00f3n de CI\/CD, sandbox, reorganizaci\u00f3n de la infraestructura), el monitoreo comenzar\u00e1 a quedarse atr\u00e1s y tal vez nunca alcances el desarrollo (o tarde o temprano tendr\u00e1s que detenerlo).<\/p>\n<h3>Todo por niveles<\/h3>\n<p>\nAs\u00ed es como veo la organizaci\u00f3n del sistema de monitoreo.<\/p>\n<p>1) Nivel de la aplicaci\u00f3n:<\/p>\n<ul>\n<li>monitoreo de la l\u00f3gica empresarial de la aplicaci\u00f3n;<\/li>\n<li>monitoreo de m\u00e9tricas de salud de los servicios;<\/li>\n<li>monitoreo de integraci\u00f3n.<\/li>\n<\/ul>\n<p>\n2) Nivel de infraestructura:<\/p>\n<ul>\n<li>monitoreo del nivel de orquestaci\u00f3n;<\/li>\n<li>monitoreo del software del sistema;<\/li>\n<li>monitoreo del nivel de hardware.<\/li>\n<\/ul>\n<p>\n3) Nuevamente el nivel de la aplicaci\u00f3n, pero ya como producto ingenieril:<\/p>\n<ul>\n<li>recopilaci\u00f3n y observaci\u00f3n de registros de la aplicaci\u00f3n;<\/li>\n<li>APM;<\/li>\n<li>trazado.<\/li>\n<\/ul>\n<p>\n4) Alertas:<\/p>\n<ul>\n<li>organizaci\u00f3n del sistema de notificaci\u00f3n;<\/li>\n<li>organizaci\u00f3n del sistema de turnos;<\/li>\n<li>organizaci\u00f3n de la 'base de conocimientos' y el flujo de trabajo para el manejo de incidentes.<\/li>\n<\/ul>\n<p>\n<b>Importante<\/b>: \u00a1Llegamos al alerting no despu\u00e9s, sino de inmediato! No hay que iniciar el monitoreo y luego pensar \u00aben alg\u00fan momento\u00bb a qui\u00e9n se le enviar\u00e1n las alertas. La tarea del monitoreo es entender d\u00f3nde hay problemas en el sistema y hacer que las personas adecuadas lo sepan. Si se deja para el final, las personas adecuadas solo se dar\u00e1n cuenta de que algo no va bien cuando reciban la llamada de \u00abnada est\u00e1 funcionando en nuestra parte\u00bb.<\/p>\n<h3>Nivel de la aplicaci\u00f3n \u2014 monitoreo de la l\u00f3gica del negocio<\/h3>\n<p>\nAqu\u00ed se trata de verificar el funcionamiento del aplicativo para el usuario.<\/p>\n<p>Este nivel debe implementarse en la etapa de desarrollo. Por ejemplo, tenemos un Prometheus hipot\u00e9tico: se conecta al servidor que realiza las verificaciones, llama a un endpoint, y ese endpoint verifica el API.<\/p>\n<p>Cuando a menudo se solicita monitorear la p\u00e1gina principal para asegurarse de que el sitio est\u00e1 funcionando, los programadores proporcionan un handle que se puede llamar cada vez que se necesita verificar que el API est\u00e1 funcionando. Y en ese momento, los programadores tambi\u00e9n crean \/api\/test\/helloworld. <br \/>\n\u00bfLa \u00fanica forma de asegurarse de que todo funciona? \u2014 \u00a1No!<\/p>\n<ul>\n<li>Crear estas verificaciones es, en esencia, tarea de los desarrolladores. Las pruebas unitarias deben ser redactadas por los programadores que escriben el c\u00f3digo. Porque, si se lo delegas al administrador con \u00abOye, aqu\u00ed tienes la lista de protocolos API de todas las 25 funciones, \u00a1por favor, monitorea todo!\u00bb \u2014 no funcionar\u00e1. <\/li>\n<li>Si haces print \u201chello world\u201d, nadie se enterar\u00e1 nunca de que el API deber\u00eda y realmente funciona. Cada cambio en el API debe conllevar un cambio en las verificaciones. <\/li>\n<li>Si ya tienes ese problema \u2014 det\u00e9n las caracter\u00edsticas y asigna desarrolladores para que escriban estas verificaciones, o acepta las p\u00e9rdidas, resign\u00e1ndote a que nada se est\u00e1 chequeando y que se caer\u00e1.<\/li>\n<\/ul>\n<p>\nConsejos t\u00e9cnicos:<\/p>\n<ul>\n<li>Aseg\u00farate de organizar un servidor externo para las verificaciones \u2014 debes estar seguro de que tu proyecto es accesible para el mundo exterior.<\/li>\n<li>Organiza la verificaci\u00f3n a trav\u00e9s de todo el protocolo API, y no solo en endpoints individuales.<\/li>\n<li>Crea un endpoint de Prometheus con los resultados de las verificaciones.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Nivel de la aplicaci\u00f3n \u2014 monitoreo de m\u00e9tricas de salud<\/h3>\n<p>\nAhora se trata de m\u00e9tricas de salud externas de los servicios. <\/p>\n<p>Decidimos que todos los \"puntos\" de la aplicaci\u00f3n se monitorean mediante comprobaciones externas que invocamos desde un sistema de monitoreo externo. Pero estos son precisamente los \"puntos\" que \"ve\" el usuario. Queremos asegurarnos de que nuestros servicios est\u00e9n funcionando. Aqu\u00ed la historia es mejor: en K8s hay verificaciones de salud para que al menos el mismo \"cubito\" se convenza de que el servicio funciona. Pero la mitad de las comprobaciones que he visto son simplemente un `print` de \"hola mundo\". Es decir, \u00e9l lo invoca una vez despu\u00e9s del despliegue, recibe la respuesta de que todo est\u00e1 bien, y ya. Y, si un servicio proporciona su API a trav\u00e9s de REST, hay una cantidad enorme de puntos de entrada de esa misma API que tambi\u00e9n deben ser monitoreados, porque queremos saber que est\u00e1 funcionando. Y lo monitoreamos ya internamente. <\/p>\n<p>C\u00f3mo implementar esto correctamente desde el punto de vista t\u00e9cnico: cada servicio publica un endpoint sobre su estado actual de operatividad, y en los gr\u00e1ficos de Grafana (o cualquier otra aplicaci\u00f3n) vemos el estado de todos los servicios.<\/p>\n<ul>\n<li>Cada cambio en la API debe conllevar un cambio en las comprobaciones. <\/li>\n<li>Cree el nuevo servicio inmediatamente con m\u00e9tricas de salud.<\/li>\n<li>El administrador puede acercarse a los desarrolladores y pedirles que \"a\u00f1adan un par de funciones para que yo entienda todo y pueda agregar esta informaci\u00f3n a mi sistema de monitoreo\". Pero los desarrolladores normalmente responden: \"No vamos a a\u00f1adir nada dos semanas antes del lanzamiento\".<br \/>\nDeje que los gerentes de desarrollo sepan que habr\u00e1 tales p\u00e9rdidas, y que la direcci\u00f3n de los gerentes de desarrollo tambi\u00e9n lo sepa. Porque, cuando todo falle, alguien llamar\u00e1 y exigir\u00e1 monitorear el \"servicio que cae constantemente\" (c). <\/li>\n<li>Por cierto, asignen desarrolladores para escribir plugins para Grafana; eso ser\u00e1 una gran ayuda para los administradores.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Nivel de aplicaci\u00f3n \u2014 Monitoreo integrador<\/h3>\n<p>\nEl monitoreo integrador se centra en la supervisi\u00f3n de la comunicaci\u00f3n entre sistemas cr\u00edticos para el negocio.<\/p>\n<p>Por ejemplo, hay 15 servicios que se comunican entre s\u00ed. Ya no son sitios separados. Es decir, no podemos invocar un servicio en particular, obtener \/helloworld y entender que el servicio est\u00e1 funcionando. Porque el servicio de gesti\u00f3n de pedidos debe enviar la informaci\u00f3n del pedido a un bus \u2014 desde el bus, el servicio de gesti\u00f3n de inventarios debe recibir ese mensaje y trabajar con \u00e9l. Y el servicio de env\u00edo de correos electr\u00f3nicos debe procesarlo de alguna manera, etc. <\/p>\n<p>Por lo tanto, no podemos entender simplemente interactuando con cada servicio, c\u00f3mo est\u00e1 funcionando todo. Porque tenemos un tipo de bus a trav\u00e9s del cual todo se comunica e interact\u00faa.<br \/>\nEste paso debe simbolizar la etapa de prueba de los servicios en interacci\u00f3n con otros servicios. No se puede establecer un monitoreo solo del broker de mensajes y esperar monitorear la comunicaci\u00f3n. Si hay un servicio que emite datos y otro que los recibe, al monitorear el broker solo veremos los datos que circulan de un lado a otro. Incluso si logramos monitorear de alguna manera esta interacci\u00f3n de datos \u2014que un productor publica datos, alguien los lee, y el flujo sigue en Kafka\u2014, eso todav\u00eda no nos proporcionar\u00e1 informaci\u00f3n si un servicio envi\u00f3 un mensaje en una versi\u00f3n y el otro no esperaba esa versi\u00f3n y lo perdi\u00f3. No lo sabremos, ya que los servicios nos dir\u00e1n que todo funciona. <\/p>\n<p>Recomiendo hacer lo siguiente:<\/p>\n<ul>\n<li>Para comunicaci\u00f3n sincr\u00f3nica: el endpoint realiza solicitudes a los servicios relacionados. Es decir, tomamos este endpoint, ejecutamos un peque\u00f1o script dentro del servicio que revisa todos los puntos y dice: 'puedo consultar aqu\u00ed, y puedo consultar all\u00e1, puedo consultar\u2026'<\/li>\n<li>Para comunicaci\u00f3n asincr\u00f3nica: mensajes entrantes \u2014 el endpoint revisa el bus en busca de mensajes de prueba y emite un estado de procesamiento. <\/li>\n<li>Para comunicaci\u00f3n asincr\u00f3nica: mensajes salientes \u2014 el endpoint env\u00eda mensajes de prueba al bus.<\/li>\n<\/ul>\n<p>\nComo suele suceder: tenemos un servicio que env\u00eda datos al bus. Vamos a este servicio y pedimos que nos informe sobre su salud de integraci\u00f3n. Si el servicio debe producir un mensaje hacia adelante (WebApp), entonces produce este mensaje de prueba. Y si estamos llamando al servicio en el lado de OrderProcessing, primero publica lo que puede publicar de forma independiente, y si hay cosas dependientes, lee del bus un conjunto de mensajes de prueba, entiende qu\u00e9 puede procesar, lo comunica y, si es necesario, los publica m\u00e1s adelante, y de eso nos dice: 'todo est\u00e1 bien, estoy vivo.' <\/p>\n<p>A menudo escuchamos la pregunta \u201c\u00bfc\u00f3mo podemos probar esto con datos de producci\u00f3n?\u201d. Por ejemplo, se refiere al servicio de pedidos. El pedido env\u00eda mensajes al almac\u00e9n, donde se descuentan los productos: \u00a1no podemos probar esto con datos reales, porque \u201c\u00a1se me descontar\u00e1n los productos!\u201d. La soluci\u00f3n: en la etapa inicial, planifique toda esta prueba. Ya tiene pruebas unitarias que realizan simulaciones. As\u00ed que h\u00e1galo en un nivel m\u00e1s profundo, donde haya un canal de comunicaci\u00f3n que no da\u00f1e la operaci\u00f3n del negocio. <\/p>\n<h3>Nivel de infraestructura<\/h3>\n<p>\nEl monitoreo de infraestructura se considera desde hace tiempo como el monitoreo en s\u00ed. <\/p>\n<ul>\n<li>El monitoreo de infraestructura se puede y debe iniciar como un proceso separado.<\/li>\n<li>No se debe comenzar con el monitoreo de infraestructura en un proyecto en funcionamiento, incluso si se tiene muchas ganas. Este es un problema para todos los DevOps. \u201cPrimero monitorear\u00e9 el cl\u00faster, monitorear\u00e9 la infraestructura\u201d, es decir, primero monitorear\u00e1 lo que est\u00e1 por debajo, y no se adentrar\u00e1 en la aplicaci\u00f3n. Porque la aplicaci\u00f3n es algo confuso para el DevOps. Se lo entregaron y no entiende c\u00f3mo funciona. Pero \u00e9l entiende la infraestructura y comienza por ah\u00ed. Pero no, siempre se debe monitorear primero la aplicaci\u00f3n. <\/li>\n<li>No exageres con la cantidad de alertas. Dada la complejidad de los sistemas modernos, las alertas llegan constantemente, y uno tiene que lidiar con esta monta\u00f1a de alertas. Una persona de guardia, al ver un centenar de alertas, decidir\u00e1 \u201cno quiero pensar en esto\u201d. Las alertas deben notificar solo sobre cosas cr\u00edticas. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Nivel de aplicaci\u00f3n como unidad de negocio<\/h3>\n<p>\nPuntos clave:<\/p>\n<ul>\n<li>ELK. Este es el est\u00e1ndar industrial. Si por alguna raz\u00f3n no est\u00e1 agregando logs, comience a hacerlo urgentemente.<\/li>\n<li>APM. APM externos como una forma r\u00e1pida de cerrar el monitoreo de la aplicaci\u00f3n (NewRelic, BlackFire, Datadog). Puede implementar temporalmente esta herramienta para entender, aunque sea un poco, lo que est\u00e1 ocurriendo. <\/li>\n<li>Trazado. En decenas de microservicios, debe trazar todo, porque una solicitud ya no vive por s\u00ed sola. Es muy dif\u00edcil a\u00f1adirlo despu\u00e9s, por lo que es mejor planificar el trazado en el desarrollo desde el principio: es trabajo y herramienta para los desarrolladores. Si a\u00fan no lo ha implementado, \u00a1implem\u00e9ntelo! Ver Jaeger\/Zipkin.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Alerting<\/h3>\n<p><\/p>\n<ul>\n<li>Organizaci\u00f3n del sistema de alertas: en un entorno de monitoreo de m\u00faltiples elementos, debe existir un sistema unificado para el env\u00edo de alertas. Se puede utilizar Grafana. En Occidente, todos utilizan PagerDuty. Las alertas deben ser claras (por ejemplo, de d\u00f3nde provienen\u2026). Y es deseable controlar que las alertas realmente lleguen. <\/li>\n<li>Organizaci\u00f3n del sistema de guardias: las alertas no deben llegar a todos (de lo contrario, todos reaccionar\u00e1n en grupo o nadie reaccionar\u00e1). Los desarrolladores tambi\u00e9n deben estar en la lista de guardias: aseg\u00farese de definir claramente las \u00e1reas de responsabilidad, elabore instrucciones precisas y especifique a qui\u00e9n contactar el lunes y el mi\u00e9rcoles, y a qui\u00e9n el martes y el viernes (de lo contrario, nadie llamar\u00e1 incluso ante una gran emergencia; temer\u00e1n despertar a otros: a la gente no le gusta llamar y molestar a los dem\u00e1s, especialmente por la noche). Y explique que pedir ayuda no es un signo de incompetencia (\"si pido ayuda, eso significa que soy un mal trabajador\"), fomente las solicitudes de ayuda.<\/li>\n<li>Organizaci\u00f3n de la \"base de conocimientos\" y flujo de trabajo para el manejo de incidentes: para cada incidente serio, se debe planificar un post-mortem; como medida temporal, deben registrarse las acciones que resuelvan el incidente. Adem\u00e1s, establezca la pr\u00e1ctica de que las alertas recurrentes son un pecado; deben solucionarse en el c\u00f3digo o en el trabajo de infraestructura. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Stack tecnol\u00f3gico<\/h3>\n<p>\nImaginemos que nuestra pila es la siguiente: <\/p>\n<ul>\n<li>recopilaci\u00f3n de datos \u2014 Prometheus + Grafana;<\/li>\n<li>an\u00e1lisis de logs \u2014 ELK;<\/li>\n<li>para APM o trazabilidad \u2014 Jaeger (Zipkin).<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"\u00bfLa monitorizaci\u00f3n ha muerto? \u2014 Viva la monitorizaci\u00f3n\" src=\"\/wp-content\/uploads\/2019\/04\/af26d3c0ba781cd856d220515788b5eb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa elecci\u00f3n de las opciones no es cr\u00edtica. Porque, si al principio entendi\u00f3 c\u00f3mo monitorear el sistema y elabor\u00f3 un plan, luego comenzar\u00e1 a seleccionar herramientas seg\u00fan sus requisitos. La cuesti\u00f3n es qu\u00e9 eligi\u00f3 monitorear al principio. Porque, posiblemente, la herramienta que escogi\u00f3 al principio no se adapta a sus necesidades. <\/p>\n<p>Algunos puntos t\u00e9cnicos que he observado \u00faltimamente:<\/p>\n<p><i>\u00a1Prometheus se est\u00e1 integrando en Kubernetes \u2014 \u00bfqui\u00e9n fue el que pens\u00f3 en esto?!<\/i> Si su cl\u00faster falla, \u00bfqu\u00e9 har\u00e1? Si tiene un cl\u00faster complejo en su interior, debe haber alg\u00fan sistema de monitoreo dentro del cl\u00faster, y otro externo que recoja datos de dentro del cl\u00faster. <\/p>\n<p><i>Dentro del cl\u00faster estamos recogiendo logs y todo lo dem\u00e1s.<\/i> Pero el sistema de monitoreo debe estar externo. Muy a menudo en un cl\u00faster donde hay Prometheus, que se instal\u00f3 internamente, tambi\u00e9n hay sistemas que realizan verificaciones externas del funcionamiento del sitio. \u00bfY si su conexi\u00f3n al mundo exterior se cae y la aplicaci\u00f3n no funciona? As\u00ed que, internamente todo est\u00e1 bien, pero eso no ayuda a los usuarios.<\/p>\n<h3>Conclusiones<\/h3>\n<p><\/p>\n<ul>\n<li>El desarrollo de monitoreo no es la instalaci\u00f3n de herramientas, sino el desarrollo de un producto de software. El 98% del monitoreo actual es codificaci\u00f3n. Codificaci\u00f3n en servicios, codificaci\u00f3n de verificaciones externas, verificaci\u00f3n de servicios externos, y todo, todo, todo. <\/li>\n<li>No escatimen tiempo de los desarrolladores en monitoreo: puede llevar hasta el 30% de su trabajo, pero vale la pena.<\/li>\n<li>DevOps, no se preocupen porque no pueden monitorear algo, porque algunas cosas requieren una mentalidad completamente diferente. Ustedes no eran programadores, y el trabajo de monitoreo es precisamente su trabajo.<\/li>\n<li>Si el proyecto ya est\u00e1 en funcionamiento y no se ha monitoreado (y ustedes son el gerente) \u2014 destinen recursos para el monitoreo.<\/li>\n<li>Si el producto ya est\u00e1 en producci\u00f3n y ustedes son el DevOps al que le dijeron \"configura el monitoreo\" \u2014 intenten explicar a la direcci\u00f3n lo que he expuesto aqu\u00ed.<\/li>\n<\/ul>\n<p>\n<i>Esta es una versi\u00f3n extendida de la presentaci\u00f3n en la conferencia Saint Highload++.<\/i><\/p>\n<p>Si est\u00e1n interesados en mis ideas y reflexiones sobre temas de TI y afines, pueden <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/eapotapov_channel\">leer el canal <\/a><\/noindex>\ud83d\ude42<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/448602\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0441 2008 \u0433\u043e\u0434\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0438 \u043a\u0440\u0443\u0433\u043b\u043e\u0441\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432: \u0443 \u043d\u0430\u0441 \u0431\u043e\u043b\u0435\u0435 400 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u044d\u0442\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 15% \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u043c\u0435\u0440\u0446\u0438\u0438 \u0420\u043e\u0441\u0441\u0438\u0438. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u0430\u0434\u0430\u0435\u0442, \u043c\u044b \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 15 \u043c\u0438\u043d\u0443\u0442 \u044d\u0442\u043e \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c. \u041d\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0430\u0432\u0430\u0440\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430, \u043d\u0443\u0436\u043d\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23731,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31864","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043c\u0451\u0440\u0442\u0432? \u2014 \u0414\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:43:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:43:33+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47\u00bfEl monitoreo est\u00e1 muerto? \u2014 \u00a1Viva el monitoreo! | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043c\u0451\u0440\u0442\u0432? \u2014 \u0414\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 | ProHoster","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/monitoring-myortv-da-zdravstvuet-monitoring","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:43:33+00:00","article:modified_time":"2019-10-31T18:43:33+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31864","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-09 17:01:09","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:09:27","updated":"2026-02-09 17:01:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31864","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=31864"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31864\/revisions"}],"predecessor-version":[{"id":158558,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31864\/revisions\/158558"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/23731"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=31864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=31864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=31864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}